The _dynext_ collection provides three libraries --- compile.ss, link.ss, and file.ss --- for communicating with a platform-specific C compiler and linker. _compile.ss_ ------------ > (compile-extension quiet? input-file output-file includes) quiet? - Boolean indicating whether command should be echoed to stdout input-file - A C source path/string output-file - A compiled object path/string includes - A list of include directory paths/strings; MzScheme's include is added automatically. Compilation is controlled by a number of parameters for Windows and Unix: > current-extension-compiler - compiler executable path/string or #f. The default is set by searching for an executable using the PATH environment variable, or using the CC or MZSCHEME_DYNEXT_COMPILER environment variable if either is defined (and the latter takes precedence). Under windows, the search looks for cl.exe, then gcc.exe, then bcc32.exe (Borland). Under Unix, it looks for gcc, then cc. #f indicates that no compiler could be found. > current-extension-compiler-flags - list of paths/strings and thunks (see `expand-for-compile-variant' below) for strings passed to the compiler as flags. Under Windows, the default is (list "/c" "/O2" "/MT" 3m-flag-thunk) for cl.exe and (list "-c" "-O2" "-fPIC" 3m-flag-thunk) for gcc.exe and bcc32.exe, where 3m-flag-thunk returns (list "-DMZ_PRECISE_GC") for the '3m variant and null for any other variant; under Unix, the default is usually (list "-c" "-O2" "-fPIC" 3m-flag-thunk). If the CFLAGS or MZSCHEME_DYNEXT_COMPILER_FLAGS environment variable is defined (the latter takes precedence), then its value is parsed as a list of strings that is appended before the defaults. > current-make-compile-include-strings - procedure that takes an include directory path/string and returns a list of strings for the command line. Windows: "dir" -> (list "/Idir") for cl.exe, (list "-Idir") for gcc.exe and bcc32.exe; Unix: "dir" -> (list "-Idir"). If the CFLAGS environment variable is defined, then its value is parsed as a list of flags that is appended before the defaults. > current-make-compile-input-strings - procedure that takes an input file path/string and returns a list of strings for the command line. The default is `list'. > current-make-compile-output-strings - procedure that takes an output file path/string and returns a list of strings for the command line. Windows: "file" -> (list "/Fofile") for cl.exe, (list "-o" "file") for gcc.exe and bcc32.exe; Unix: "file" -> (list "-o" "file"). > current-extension-preprocess-flags - list of paths/strings and thunks (see `expand-for-compile-variant' below) for strings passed to the compiler as flags to pre-process instead of compile; use these flags for preprocessing instead of `current-extension-compiler-flags'. The defaults are similar to `current-extension-compiler-flags', but with "/E" (Windows cl.exe) or "-E" and without non-"-D" flags. > compile-variant - a symbol, either 'normal or '3m, that indicates the target for compilation. Helper functions: > (use-standard-compiler name) sets the above parameters for a particular known compiler. The acceptable names are platforms-specific: Unix: 'cc or 'gcc Windows: 'gcc, 'msvc, or 'borland MacOS: 'cw > (get-standard-compilers) returns a list of standard compiler names for the current platform. > (expand-for-compile-variant l) takes a list of paths/strings and thunks and returns a list of strings. Each thunk in the input list is applied to get a list of strings that is inlined in the corresponding position in the output list. This expansion enables occasional parameterization of flag lists, etc., depending on the current compile variant. Under MacOS, none of these options are used. The compiler always uses CodeWarrior if it can be found and the compilation options cannot be changed. The unit/sig form defined by _compiler.ss_ (signature in _compiles.ss_) requires no imports. _link.ss_ --------- > (link-extension quiet? input-files output-file) quiet? - Boolean indicating whether command should be echoed to stdout input-files - A list of compiled object filename paths/strings output-file - An extension filename path/string For Windows, a special linking sequence is initiated if the linker's name is ld.exe (for gcc). Linking parameters: > current-extension-linker - linker executable path/string or #f. The default is set by searching for an executable using the PATH environment variable, or by using the LD or MZSCHEME_DYNEXT_LINKER environment variable if it is defined (and the latter takes precedence). Under Windows, it looks for cl.exe, then ld.exe (gcc), then ilink32.exe (Borland). Under AIX, Mac OS X, or Darwin, it looks for cc. Under other Unix variants, it looks for ld. #f indicates that no linker could be found. > current-extension-linker-flags - list of paths/strings and thunks (see `expand-for-link-variant' below). Under Windows, default is (list "/LD") for cl.exe, (list "--dll") for ld.exe, and (list "/Tpd" "/c") for ilink32.exe. Under Unix, the default varies greatly among platforms. If the LDFLAGS or MZSCHEME_DYNEXT_LINKER_FLAGS (the latter takes precedence) environment variable is defined, then its value is parsed as a list of strings that is appended before the defaults. > current-make-link-input-strings - procedure that takes an input file path/string and returns a list of strings for the command line. The default is `list'. > current-make-link-output-strings - procedure that takes an output file path/string and returns a list of strings for the command line. Windows: "file" -> (list "/Fefile") for cl.exe, something like (list "-e" "_dll_entry@12" "-o" "file") for ld.exe, something complex for ilink32.exe; Unix: "file" -> (list "-o" "file") > current-standard-link-libraries - a list of paths/strings and thunks (see `expand-for-link-variant' below) for file paths to be linked with all supplied files. For most platforms, the default is (list (build-path (collection-path "mzscheme" "lib") (system-library-subpath) mzdyn-thunk)) where mzdyn-thunk produces (list "mzdyn.o") for the 'normal variant and (list "mzdyn3m.o") for the '3m variant (also see `current-use-mzdyn'). > current-use-mzdyn - whether the default standard link libraries include the mzdyn library. Defaults to #t. > link-variant - a symbol, either 'normal or '3m, that indicates the target for linking. Helper functions: > (use-standard-linker name) sets the above parameters for a particular known linker. The acceptable names are platforms-specific, the same as for use-standard-compiler. > (expand-for-link-variant l) is the same as `expand-for-compile-variant' (see above). Under MacOS, none of these options are used. The linker always uses CodeWarrior if it can be found and the linking options cannot be changed. The unit/sig form defined by _linkr.ss_ (signature in _links.ss_) requires no imports. _file.ss_ --------- > (append-zo-suffix s) - appends the .zo file suffix to the path/string s, returning a path. > (append-object-suffix s) - appends the platform-standard compiled object file suffix to the path/string s, returning a path. > (append-c-suffix s) - appends the platform-standard C source file suffix to the path/string s, returning a path. > (append-constant-pool-suffix s) - appends the constant pool file suffix (.kp) to the path/string s, returning a path. > (append-extension-suffix s) - appends the platform-standard dynamic extension file suffix to the path/string s, returning a path. > (extract-base-filename/ss s program) - strips the Scheme file suffix from the path/string s and returns a stripped path. If s is not a Scheme file name and `program' is a symbol, and error is signaled. If s is not a Scheme file and `program' is #f, #f is returned. The `program' argument is optional and defaults to #f. > (extract-base-filename/c s program) - same as extract-base-filename/ss, but for C source files. > (extract-base-filename/kp s program) - same as extract-base-filename/ss, but for constant pool files. > (extract-base-filename/o s program) - same as extract-base-filename/ss, but for compiled object files. > (extract-base-filename/ext s program) - same as extract-base-filename/ss, but for extension files. The unit/sig defined by _filer.ss_ (signature in _files.ss_) requires no imports.