README file for compiling Meschach with Think C
===============================================

Received 8th June, 1995 from Brent Boyer (boyer@jumpjibe.stanford.edu).


I have modified this file to make the Meschach routines work on a
Macintosh with THINK C 7.0.4.  I realize that THINK C is now on
version 8.x and that Metrowerk's CodeWarrior is a competetive
development environment, but 7.0.4 is what I have available.  My
system is a Quadra 650 running MacOS 7.5.1.  The compile options
described below should work for any 68K Mac with a floating point
unit; they probably have to be modified for Power Macs.

Below I describe the steps I took to build a library project for all
the Meschach routines.


Step 1)
_________

	First create an appropriate version of THINK's ANSI library.
What I did was copy their project "ANSI" to one I called
"ANSI(020, 881, 4b ints)".  I then selected these compiler ("THINK
C...") options before bringing the project up to date:
		
	-- first, under "Language Settings"
		1)  choose "Factory Settings"
		2)  also change "Infer prototypes" to "Require prototypes"
			(as a former Pascal programmer, I curse the
			person who introduced infered prototypes!)
			(Note: you _cannot_ choose "ANSI Settings"; if
			you do, then the compilation of the ANSI
			project will fail!  Talk to the people at
			Symantec about this one ...) 

	-- next, under "Compiler Settings"
		1) turn "Generate 68020 instructions" ON
		2) turn "Generate 68881 instructions" ON
		3) turn "4-byte ints" ON
			(so int == long int <==> 32 bits)
		4) make sure that "8-byte doubles" turned OFF
			(so double == long double)
		5) turn "Native floating-point format" ON

		(The other options probably do not matter either way)
			
		(Note: 2) and 5) ==> type double will be the 96 bit
		MC68881 floating point extended precision type;
		these options give the best speed and good accuracy too)

	-- optionally, under "Code Optimization"
		1) turn "Use Global Optimizer" ON


Step 2)
_________

	Create a project ("Meschach") containing all the Meschach
routines that can serve as a library.  After opening a new project
("ANSI Project" type) to which you added all the source code files,
select these compiler ("THINK C...") options before bringing the
project up to date: 
	-- first, under "Language Settings"
		1)  choose "ANSI Settings"
		(tragically, will have to leave "Infer prototypes" on)

	-- next, under "Compiler Settings", make the same choices as
		when compiled "ANSI(020, 881, 4b ints)"
		1) turn "Generate 68020 instructions" ON
		2) turn "Generate 68881 instructions" ON
		3) turn "4-byte ints" ON (so int == long int <==> 32 bits)
		4) make sure that "8-byte doubles" turned OFF
			(so double == long double)
		5) turn "Native floating-point format" ON

		(Note: the THINK C compiler, quite correctly, insists
		that pointer types agree exactly. 
		This means that the function "px_sign" in the file
		"pxop.c" will not compile unless the line
			numtransp = myqsort(px2->pe, px2->size);
		is replaced with
			numtransp = myqsort( (int *) px2->pe, px2->size );
		since the field "pe" is a pointer to type u_int, not
		an int, which the function "myqsort" expects.
		I made this change.)
		[D.Stewart:  This change will be made to the next
		distribution of Meschach.]

You should then be able to simply add this project to any of your own
projects so that it functions as a library.  The original "machine.h"
file may be found in the folder "origStuff" along with the *.shar
files.

		
	-- Brent Boyer
		6/7/95

[Note: The file MACHINES/ThinkC/totalMacSetup.hqx has been moved to the
top directory, and is not automatically part of the main distribution.
The reason for this is the amount of space it takes up.

				-- David Stewart, 8th Sept., 1995.]
