140 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			140 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  |         Building TinyScheme | ||
|  |         ------------------- | ||
|  | 
 | ||
|  | The included makefile includes logic for Linux, Solaris and Win32, and can | ||
|  | readily serve as an example for other OSes, especially Unixes. There are | ||
|  | a lot of compile-time flags in TinyScheme (preprocessor defines) that can trim | ||
|  | unwanted features. See next section. 'make all' and 'make clean' function as | ||
|  | expected. | ||
|  | 
 | ||
|  | Autoconfing TinyScheme was once proposed, but the distribution would not be | ||
|  | so small anymore. There are few platform dependencies in TinyScheme, and in | ||
|  | general compiles out of the box. | ||
|  | 
 | ||
|  |      Customizing | ||
|  |      ----------- | ||
|  | 
 | ||
|  |      The following symbols are defined to default values in scheme.h. | ||
|  |      Use the -D flag of cc to set to either 1 or 0. | ||
|  | 
 | ||
|  |      STANDALONE | ||
|  |      Define this to produce a standalone interpreter. | ||
|  | 
 | ||
|  |      USE_MATH | ||
|  |      Includes math routines. | ||
|  | 
 | ||
|  |      USE_CHAR_CLASSIFIERS | ||
|  |      Includes character classifier procedures. | ||
|  | 
 | ||
|  |      USE_ASCII_NAMES | ||
|  |      Enable extended character notation based on ASCII names. | ||
|  | 
 | ||
|  |      USE_STRING_PORTS | ||
|  |      Enables string ports. | ||
|  | 
 | ||
|  |      USE_ERROR_HOOK | ||
|  |      To force system errors through user-defined error handling. | ||
|  |      (see "Error handling") | ||
|  | 
 | ||
|  |      USE_TRACING | ||
|  |      To enable use of TRACING. | ||
|  | 
 | ||
|  |      USE_COLON_HOOK | ||
|  |      Enable use of qualified identifiers. (see "Colon Qualifiers - Packages") | ||
|  |      Defining this as 0 has the rather drastic consequence that any code using | ||
|  |      packages will stop working, and will have to be modified. It should only | ||
|  |      be used if you *absolutely* need to use '::' in identifiers. | ||
|  | 
 | ||
|  |      USE_STRCASECMP | ||
|  |      Defines stricmp as strcasecmp, for Unix. | ||
|  | 
 | ||
|  |      STDIO_ADDS_CR | ||
|  |      Informs TinyScheme that stdio translates "\n" to "\r\n". For DOS/Windows. | ||
|  | 
 | ||
|  |      USE_DL | ||
|  |      Enables dynamically loaded routines. If you define this symbol, you | ||
|  |      should also include dynload.c in your compile. | ||
|  | 
 | ||
|  |      USE_PLIST | ||
|  |      Enables property lists (not Standard Scheme stuff). Off by default. | ||
|  |       | ||
|  |      USE_NO_FEATURES | ||
|  |      Shortcut to disable USE_MATH, USE_CHAR_CLASSIFIERS, USE_ASCII_NAMES, | ||
|  |      USE_STRING_PORTS, USE_ERROR_HOOK, USE_TRACING, USE_COLON_HOOK, | ||
|  |      USE_DL. | ||
|  | 
 | ||
|  |      USE_SCHEME_STACK | ||
|  |      Enables 'cons' stack (the alternative is a faster calling scheme, which  | ||
|  |      breaks continuations). Undefine it if you don't care about strict compatibility | ||
|  |      but you do care about faster execution. | ||
|  | 
 | ||
|  | 
 | ||
|  |      OS-X tip | ||
|  |      -------- | ||
|  |      I don't have access to OS-X, but Brian Maher submitted the following tip: | ||
|  | 
 | ||
|  | [1] Download and install fink (I installed fink in | ||
|  | /usr/local/fink) | ||
|  | [2] Install the 'dlcompat' package using fink as such: | ||
|  | > fink install dlcompat | ||
|  | [3] Make the following changes to the | ||
|  | tinyscheme-1.32.tar.gz | ||
|  | 
 | ||
|  | diff -r tinyscheme-1.32/dynload.c | ||
|  | tinyscheme-1.32-new/dynload.c | ||
|  | 24c24 | ||
|  | < #define SUN_DL | ||
|  | --- | ||
|  | >  | ||
|  | Only in tinyscheme-1.32-new/: dynload.o | ||
|  | Only in tinyscheme-1.32-new/: libtinyscheme.a Only in tinyscheme-1.32-new/: libtinyscheme.so diff -r tinyscheme-1.32/makefile tinyscheme-1.32-new/makefile | ||
|  | 33,34c33,43 | ||
|  | < LD = gcc | ||
|  | < LDFLAGS = -shared | ||
|  | --- | ||
|  | > #LD = gcc | ||
|  | > #LDFLAGS = -shared | ||
|  | > #DEBUG=-g -Wno-char-subscripts -O | ||
|  | > #SYS_LIBS= -ldl | ||
|  | > #PLATFORM_FEATURES= -DSUN_DL=1 | ||
|  | >  | ||
|  | > # Mac OS X | ||
|  | > CC = gcc | ||
|  | > CFLAGS = -I/usr/local/fink/include | ||
|  | > LD = gcc | ||
|  | > LDFLAGS = -L/usr/local/fink/lib | ||
|  | 37c46 | ||
|  | < PLATFORM_FEATURES= -DSUN_DL=1 | ||
|  | --- | ||
|  | > PLATFORM_FEATURES= -DSUN_DL=1 -DOSX | ||
|  | 60c69 | ||
|  | <       $(CC) -I. -c $(DEBUG) $(FEATURES) | ||
|  | $(DL_FLAGS) $< | ||
|  | --- | ||
|  | >       $(CC) $(CFLAGS) -I. -c $(DEBUG) | ||
|  | $(FEATURES) $(DL_FLAGS) $< | ||
|  | 66c75 | ||
|  | <       $(CC) -o $@ $(DEBUG) $(OBJS) $(SYS_LIBS)  | ||
|  | --- | ||
|  | >       $(CC) $(LDFLAGS) -o $@ $(DEBUG) $(OBJS) | ||
|  | $(SYS_LIBS) | ||
|  | Only in tinyscheme-1.32-new/: scheme | ||
|  | diff -r tinyscheme-1.32/scheme.c | ||
|  | tinyscheme-1.32-new/scheme.c | ||
|  | 60,61c60,61 | ||
|  | < #ifndef macintosh | ||
|  | < # include <malloc.h> | ||
|  | --- | ||
|  | > #ifdef OSX | ||
|  | > /* Do nothing */ | ||
|  | 62a63,65 | ||
|  | > # ifndef macintosh | ||
|  | > #  include <malloc.h> | ||
|  | > # else | ||
|  | 77c80,81 | ||
|  | < #endif /* macintosh */ | ||
|  | --- | ||
|  | > # endif /* macintosh */ | ||
|  | > #endif /* !OSX */ | ||
|  | Only in tinyscheme-1.32-new/: scheme.o |