PREV UP next SCM

2.3.2: Build Options

The options to build specify what, where, and how to build a SCM program or dynamically linked module. These options are unrelated to the SCM command line options.

Build Option: -p platform-name
Build Option: ---platform=platform-name
specifies that the compilation should be for a computer/operating-system combination called platform-name. Note: The case of platform-name is distinguised. The current platform-names are all lower-case.

The platforms defined by table platform in `build.scm' are:

name              processor         operating-system  compiler
symbol            processor-family  operating-system  symbol
symbol            atom              symbol            symbol
================= ================= ================= =================
*unknown*         *unknown*         unix              *unknown*
acorn-unixlib     acorn             *unknown*         *unknown*
aix               powerpc           aix               *unknown*
amiga-aztec       m68000            amiga             aztec
amiga-dice-c      m68000            amiga             dice-c
amiga-gcc         m68000            amiga             gcc
amiga-sas/c-5.10  m68000            amiga             sas/c
atari-st-gcc      m68000            atari.st          gcc
atari-st-turbo-c  m68000            atari.st          turbo-c
borland-c-3.1     8086              ms-dos            borland-c
djgpp             i386              ms-dos            gcc
gcc               *unknown*         unix              gcc
highc.31          i386              ms-dos            highc
hp-ux             hp-risc           hp-ux             *unknown*
linux             i386              linux             gcc
linux-aout        i386              linux             gcc
microsoft-c       8086              ms-dos            microsoft-c
microsoft-c-nt    i386              ms-dos            microsoft-c
microsoft-quick-c 8086              ms-dos            microsoft-quick-c
ms-dos            8086              ms-dos            *unknown*
os/2-cset         i386              os/2              c-set++
os/2-emx          i386              os/2              gcc
sunos             sparc             sunos             *unknown*
svr4              *unknown*         unix              *unknown*
turbo-c-2         8086              ms-dos            turbo-c
unicos            cray              unicos            *unknown*
unix              *unknown*         unix              *unknown*
vms               vax               vms               *unknown*
vms-gcc           vax               vms               gcc
watcom-9.0        i386              ms-dos            watcom
Build Option: -o filename
Build Option: ---outname=filename
specifies that the compilation should produce an executable or object name of filename. The default is `scm'. Executable suffixes will be added if neccessary, e.g. `scm' => `scm.exe'.
Build Option: -l libname ...
Build Option: ---libraries=libname
specifies that the libname should be linked with the executable produced. If compile flags or include directories (`-I') are needed, they are automatically supplied for compilations. The `c' library is always included. SCM features specify any libraries they need; so you shouldn't need this option often.
Build Option: -D definition ...
Build Option: ---defines=definition
specifies that the definition should be made in any C source compilations. If compile flags or include directories (`-I') are needed, they are automatically supplied for compilations. SCM features specify any flags they need; so you shouldn't need this option often.
Build Option: ---compiler-options=flag
specifies that that flag will be put on compiler command-lines.
Build Option: ---linker-options=flag
specifies that that flag will be put on linker command-lines.
Build Option: -s pathname
Build Option: ---scheme-initial=pathname
specifies that pathname should be the default location of the SCM initialization file `Init.scm'. SCM tries several likely locations before resorting to pathname (see File-System Habitat). If not specified, the current directory (where build is building) is used.
Build Option: -c pathname ...
Build Option: ---c-source-files=pathname
specifies that the C source files pathname ... are to be compiled.
Build Option: -j pathname ...
Build Option: ---object-files=pathname
specifies that the object files pathname ... are to be linked.
Build Option: -i call ...
Build Option: ---initialization=call
specifies that the C functions call ... are to be invoked during initialization.
Build Option: -t build-what
Build Option: ---type=build-what
specifies in general terms what sort of thing to build. The choices are:
`exe'
executable program.
`lib'
library module.
`dlls'
archived dynamically linked library object files.
`dll'
dynamically linked library object file.

The default is to build an executable.

Build Option: -h batch-syntax
Build Option: --batch-dialect=batch-syntax
specifies how to build. The default is to create a batch file for the host system. The SLIB file `batch.scm' knows how to create batch files for:
Build Option: -w batch-filename
Build Option: --script-name=batch-filename
specifies where to write the build script. The default is to display it on (current-output-port).
Build Option: -F feature ...
Build Option: ---features=feature
specifies to build the given features into the executable. The defined features are:
lit
none
Lightweight -- no features
cautious
Normally, the number of arguments arguments to interpreted closures (from LAMBDA) are checked if the function part of a form is not a symbol or only the first time the form is executed if the function part is a symbol. defining `reckless' disables any checking. If you want to have SCM always check the number of arguments to interpreted closures define feature `cautious'.
careful-interrupt-masking
Define this for extra checking of interrupt masking. This is for debugging C code in `sys.c' and `repl.c'.
debug
Turns on features `cautious' `careful-interrupt-masking' `stack-limit' and uses -g flags for debugging SCM source code.
reckless
If your scheme code runs without any errors you can disable almost all error checking by compiling all files with `reckless'.
stack-limit
Use to enable checking for stack overflow. Define value of the C preprocessor variable STACK_LIMIT to be the size to which SCM should allow the stack to grow. STACK_LIMIT should be less than the maximum size the hardware can support, as not every routine checks the stack.
bignums
Large precision integers.
arrays
Use if you want arrays, uniform-arrays and uniform-vectors.
array-for-each
array-map! and array-for-each (arrays must also be defined).
inexact
Use if you want floating point numbers.
engineering-notation
Use if you want floats to display in engineering notation (exponents always multiples of 3) instead of scientific notation.
single-precision-only
Use if you want all inexact real numbers to be single precision. This only has an effect if SINGLES is also defined (which is the default). This does not affect complex numbers.
sicp
Use if you want to run code from:

H. Abelson, G. J. Sussman, and J. Sussman, Structure and Interpretation of Computer Programs, The MIT Press, Cambridge, Massachusetts, USA

(eq? '() '#f) is the major difference.

rev2-procedures
These procedures were specified in the Revised^2 Report on Scheme but not in R4RS.
record
The Record package provides a facility for user to define their own record data types. See SLIB for documentation.
compiled-closure
Use if you want to use compiled closures.
generalized-c-arguments
make_gsubr for arbitrary (< 11) arguments to C functions.
tick-interrupts
Use if you want the ticks and ticks-interrupt functions.
i/o-extensions
Commonly available I/O extensions: exec, line I/O, file positioning, file delete and rename, and directory functions.
turtlegr
Turtle graphics calls for both Borland-C and X11 from sjm@ee.tut.fi.
curses
For the curses screen management package.
edit-line
interface to the editline or GNU readline library.
regex
String regular expression matching.
socket
BSD socket interface.
posix
Posix functions available on all Unix-like systems. fork and process functions, user and group IDs, file permissions, and link.
unix
Those unix features which have not made it into the Posix specs: nice, acct, lstat, readlink, symlink, mknod and sync.
windows
Microsoft Windows executable.
dynamic-linking
Be able to load compiled files while running.
dump
Convert a running scheme program into an executable file.
heap-can-shrink
Use if you want segments of unused heap to not be freed up after garbage collection. This may reduce time in GC for *very* large working sets.
cheap-continuations
If you only need straight stack continuations, executables compile with this feature will run faster and use less storage than not having it. Machines with unusual stacks need this. Also, if you incorporate new C code into scm which uses VMS system services or library routines (which need to unwind the stack in an ordrly manner) you may need to use this feature.
macro
C level support for hygienic and referentially transparent macros (R4RS macros).