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
|