CSC_OPTIONS
Can hold default options that should be passed to every invocation of csc.
Driver program for the chicken scheme compiler
csc [OPTION ...]
[FILENAME ...]
csc is a program that invokes the CHICKEN compiler and the host systems C compiler to generate an executable from a Scheme source file or C files generated by CHICKEN.
FILENAME is a Scheme source file name with optional extension or a C/C++/Objective-C source, object or library file name with extension. OPTION may be one of the following:
General options:
-h, -help
Display usage text and exit.
-v, -verbose
Show compiler notes and tool-invocations.
-vv
Display information about translation progress.
-vvv
Display information about all compilation stages.
-version
Display Scheme compiler version and exit.
-release
Display release number and exit.
File and pathname options:
-o FILENAME, -output-file FILENAME
Specifies target executable name.
-I PATHNAME, -include-path PATHNAME
Specifies alternative path for included files.
-to-stdout
Write compiler to stdout (implies -t).
-s, -shared, -dynamic
Generate dynamically loadable shared object file.
Language options:
-D SYMBOL, -feature SYMBOL
Register feature identifier.
-no-feature SYMBOL
Disable builtin feature identifier.
-c++
Compile via a C++ source file (.cpp).
-objc
Compile via Objective-C source file (.m).
Syntax related options:
-i, -case-insensitive
Don't preserve case of read symbols.
-K, -keyword-style STYLE
Enable alternative keyword-syntax (prefix, suffix or none).
-no-parentheses-synonyms
Disables list delimiter synonyms.
-no-symbol-escape
Disables support for escaped symbols.
-r5rs-syntax
Disables the CHICKEN extensions to R5RS syntax.
-compile-syntax
Macros are made available at run-time.
-j MODULE, -emit-import-library MODULE
Write compile-time module information into separate file.
-J, -emit-all-import-libraries
Emit import-libraries for all defined modules.
-no-compiler-syntax
Disable expansion of compiler-macros.
-m NAME, -module NAME
Wrap compiled code in module of the given name.
-M, -module-registration
Always generate module registration code, even when import libraries are emitted.
-N, -no-module-registration
Do not generate module registration code. Overrides -module-registration.
Translation options:
-x, -explicit-use
Do not use units ‘library’ and ‘eval’ by default.
-P, -check-syntax
Stop compilation after macro-expansion.
-A, -analyze-only
Stop compilation after first analysis pass.
Debugging options:
-w, -no-warnings
Disable warnings.
-d0, -d1, -d2, -d3, -debug-level NUMBER
Set level of available debugging information.
-no-trace
Disable rudimentary debugging information.
-profile
Executable emits profiling information.
-accumulate-profile
Executable emits profiling information in append mode.
-profile-name FILENAME
Name of the generated profile information file.
-types FILENAME
Load additional type database.
Optimization options:
-O, -O0, -O1, -O2, -O3, -O4, -O5, -optimize-level NUMBER
Enable certain sets of optimization options.
-optimize-leaf-routines
Enable leaf routine optimization.
-no-usual-integrations
Standard procedures may be redefined.
-u, -unsafe
Disable safety checks.
-local
Assume globals are only modified in current file.
-b, -block
Enable block-compilation.
-disable-interrupts
Disable interrupts in compiled code.
-f, -fixnum-arithmetic
Assume all numbers are fixnums.
-disable-stack-overflow-checks
Disables detection of stack-overflows.
-inline
Enable inlining.
-inline-limit LIMIT
Set inlining threshold.
-inline-global
Enable cross-module inlining.
-specialize
Perform type-based specialization of primitive calls.
-oi FILENAME, -emit-inline-file FILENAME
Generate file with globally inlinable procedures (implies -inline -local).
-consult-inline-file FILENAME
Explicitly load inline file.
-ot FILENAME, -emit-types-file FILENAME
Write type-declaration information into file.
-no-argc-checks
Disable argument count checks.
-no-bound-checks
Disable bound variable checks.
-no-procedure-checks
Disable procedure call checks.
-no-procedure-checks-for-usual-bindings
Disable procedure call checks only for usual bindings.
-no-procedure-checks-for-toplevel-bindings
Disable procedure call checks for toplevel bindings.
-strict-types
Assume variable do not change their type.
-clustering
Combine groups of local procedures into dispatch loop.
-lfa2
Perform additional lightweight flow-analysis pass.
-unroll-limit LIMIT
Specifies inlining limit for self-recursive calls.
Configuration options:
-unit NAME
Compile file as a library unit.
-uses NAME
Declare library unit as used.
-heap-size NUMBER
Specifies heap-size of compiled executable.
-nursery NUMBER -stack-size NUMBER
Specifies nursery size of compiled executable.
-X FILENAME, -extend FILENAME
Load file before compilation commences.
-prelude EXPRESSION
Add expression to beginning of source file.
-postlude EXPRESSION
Add expression to end of source file.
-prologue FILENAME
Include file before main source file.
-epilogue FILENAME
Include file after main source file.
-e, -embedded
Compile as embedded (don't generate ‘main()’).
-gui
Compile as GUI application.
-link NAME
Link extension with compiled executable (implies ‘-uses’).
-R NAME, -require-extension NAME
Require extension and import in compiled code.
-dll, -library
Compile multiple units into a dynamic library.
-libdir DIRECTORY
Override location of runtime library directory.
Options to other passes:
-C OPTION
Pass option to C compiler.
-L OPTION
Pass option to linker.
-I<DIR>
Pass “-I<DIR>” to C compiler (add include path).
-L<DIR>
Pass “-L<DIR>” to linker (add library path).
-k
Keep intermediate files.
-c
Stop after compilation to object files.
-t
Stop after translation to C.
-cc COMPILER
Select a C compiler other than the default.
-cxx COMPILER
Select a C++ compiler other than the default.
-ld COMPILER
Select a linker other than the default.
-static
Link with static CHICKEN libraries and extensions.
-F<DIR>
Pass “-F<DIR>” to C compiler (add framework header path on Mac OS X).
-framework NAME
Passed to linker on Mac OS X.
-rpath PATHNAME
Add directory to runtime library search path.
-Wl,...Pass linker options.
-strip
Strip resulting binary.
Inquiry options:
-home
Show home-directory (where support files go).
-cflags
Show required C-compiler flags and exit.
-ldflags
Show required linker flags and exit.
-libs
Show required libraries and exit.
-cc-name
Show name of default C compiler used.
-cxx-name
Show name of default C++ compiler used.
-ld-name
Show name of default linker used.
-dry-run
Just show commands executed, don't run them (implies ‘-v’).
Obscure options:
-debug MODES
Display debugging output for the given modes.
-compiler PATHNAME
Use a compiler other than the default ‘chicken’.
-raw
Do not generate implicit init- and exit code.
-emit-external-prototypes-first
Emit prototypes for callbacks before foreign declarations.
-regenerate-import-libraries
Always emit import libraries, even when their contents haven't changed. The default behaviour is to preserve existing import libraries.
-ignore-repository
Do not refer to repository for extensions.
-keep-shadowed-macros
Do not remove shadowed macros.
-host
Compile for host when configured for cross-compiling.
-private-repository
Load extensions from executable path.
-deployed
Link support file to be used from a deployed executable (sets ‘rpath’ accordingly, if supported on this platform.)
-no-elevation
Embed manifest on Windows to supress elevation warnings for programs named ‘install’ or ‘setup’.
Options can be collapsed if unambiguous, so “-vkfO” is the same as “-v -k -fixnum-arithmetic -optimize”.
The following environment variables change the behaviour of csc:
CSC_OPTIONS
Can hold default options that should be passed to every invocation of csc.
The csc utility exits 0 on success, and >0 if an error occurs.
12 releases since Debian 3.0 (Woody); the text changed 7 times.
-A since Debian 11 (Bullseye);
-C since Debian 11 (Bullseye);
-D since Debian 11 (Bullseye);
-F since Debian 11 (Bullseye);
-I since Debian 11 (Bullseye);
-J since Debian 11 (Bullseye);
-K since Debian 11 (Bullseye);
-L since Debian 11 (Bullseye);
-M since Debian 11 (Bullseye);
-N since Debian 11 (Bullseye);
-O since Debian 11 (Bullseye);
-O0 since Debian 11 (Bullseye);
-O1 since Debian 11 (Bullseye);
-O2 since Debian 11 (Bullseye);
-O3 since Debian 11 (Bullseye);
-O4 since Debian 11 (Bullseye);
-O5 since Debian 11 (Bullseye);
-P since Debian 11 (Bullseye);
-R since Debian 11 (Bullseye);
-X since Debian 11 (Bullseye);
-accumulate-profile since Debian 11 (Bullseye);
-analyze-only since Debian 11 (Bullseye);
-b since Debian 11 (Bullseye);
-block since Debian 11 (Bullseye);
-c since Debian 11 (Bullseye);
-c++ since Debian 11 (Bullseye);
-case-insensitive since Debian 11 (Bullseye);
-cc since Debian 11 (Bullseye);
-cc-name since Debian 11 (Bullseye);
-cflags since Debian 11 (Bullseye);
-check-syntax since Debian 11 (Bullseye);
-clustering since Debian 11 (Bullseye);
-compile-syntax since Debian 11 (Bullseye);
-compiler since Debian 11 (Bullseye);
-consult-inline-file since Debian 11 (Bullseye);
-cxx since Debian 11 (Bullseye);
-cxx-name since Debian 11 (Bullseye);
-d0 since Debian 11 (Bullseye);
-d1 since Debian 11 (Bullseye);
-d2 since Debian 11 (Bullseye);
-d3 since Debian 11 (Bullseye);
-debug since Debian 11 (Bullseye);
-debug-level since Debian 11 (Bullseye);
-deployed since Debian 11 (Bullseye);
-disable-interrupts since Debian 11 (Bullseye);
-disable-stack-overflow-checks since Debian 11 (Bullseye);
-dll since Debian 11 (Bullseye);
-dry-run since Debian 11 (Bullseye);
-dynamic since Debian 11 (Bullseye);
-e since Debian 11 (Bullseye);
-embedded since Debian 11 (Bullseye);
-emit-all-import-libraries since Debian 11 (Bullseye);
-emit-external-prototypes-first since Debian 11 (Bullseye);
-emit-import-library since Debian 11 (Bullseye);
-emit-inline-file since Debian 11 (Bullseye);
-emit-types-file since Debian 11 (Bullseye);
-epilogue since Debian 11 (Bullseye);
-explicit-use since Debian 11 (Bullseye);
-extend since Debian 11 (Bullseye);
-f since Debian 11 (Bullseye);
-feature since Debian 11 (Bullseye);
-fixnum-arithmetic since Debian 11 (Bullseye);
-framework since Debian 11 (Bullseye);
-gui since Debian 11 (Bullseye);
-h since Debian 11 (Bullseye);
-heap-size since Debian 11 (Bullseye);
-help since Debian 11 (Bullseye);
-home since Debian 11 (Bullseye);
-host since Debian 11 (Bullseye);
-i since Debian 11 (Bullseye);
-ignore-repository since Debian 11 (Bullseye);
-include-path since Debian 11 (Bullseye);
-inline since Debian 11 (Bullseye);
-inline-global since Debian 11 (Bullseye);
-inline-limit since Debian 11 (Bullseye);
-j since Debian 11 (Bullseye);
-k since Debian 11 (Bullseye);
-keep-shadowed-macros since Debian 11 (Bullseye);
-keyword-style since Debian 11 (Bullseye);
-ld since Debian 11 (Bullseye);
-ld-name since Debian 11 (Bullseye);
-ldflags since Debian 11 (Bullseye);
-lfa2 since Debian 11 (Bullseye);
-libdir since Debian 11 (Bullseye);
-library since Debian 11 (Bullseye);
-libs since Debian 11 (Bullseye);
-link since Debian 11 (Bullseye);
-local since Debian 11 (Bullseye);
-m since Debian 11 (Bullseye);
-module since Debian 11 (Bullseye);
-module-registration since Debian 11 (Bullseye);
-no-argc-checks since Debian 11 (Bullseye);
-no-bound-checks since Debian 11 (Bullseye);
-no-compiler-syntax since Debian 11 (Bullseye);
-no-elevation since Debian 11 (Bullseye);
-no-feature since Debian 11 (Bullseye);
-no-module-registration since Debian 11 (Bullseye);
-no-parentheses-synonyms since Debian 11 (Bullseye);
-no-procedure-checks since Debian 11 (Bullseye);
-no-procedure-checks-for-toplevel-bindings since Debian 11 (Bullseye);
-no-procedure-checks-for-usual-bindings since Debian 11 (Bullseye);
-no-symbol-escape since Debian 11 (Bullseye);
-no-trace since Debian 11 (Bullseye);
-no-usual-integrations since Debian 11 (Bullseye);
-no-warnings since Debian 11 (Bullseye);
-nursery since Debian 11 (Bullseye);
-o since Debian 11 (Bullseye);
-objc since Debian 11 (Bullseye);
-oi since Debian 11 (Bullseye);
-optimize-leaf-routines since Debian 11 (Bullseye);
-optimize-level since Debian 11 (Bullseye);
-ot since Debian 11 (Bullseye);
-output-file since Debian 11 (Bullseye);
-postlude since Debian 11 (Bullseye);
-prelude since Debian 11 (Bullseye);
-private-repository since Debian 11 (Bullseye);
-profile since Debian 11 (Bullseye);
-profile-name since Debian 11 (Bullseye);
-prologue since Debian 11 (Bullseye);
-r5rs-syntax since Debian 11 (Bullseye);
-raw since Debian 11 (Bullseye);
-regenerate-import-libraries since Debian 11 (Bullseye);
-release since Debian 11 (Bullseye);
-require-extension since Debian 11 (Bullseye);
-rpath since Debian 11 (Bullseye);
-s since Debian 11 (Bullseye);
-shared since Debian 11 (Bullseye);
-specialize since Debian 11 (Bullseye);
-stack-size since Debian 11 (Bullseye);
-static since Debian 12 (Bookworm);
-strict-types since Debian 11 (Bullseye);
-strip since Debian 11 (Bullseye);
-t since Debian 11 (Bullseye);
-to-stdout since Debian 11 (Bullseye);
-types since Debian 11 (Bullseye);
-u since Debian 11 (Bullseye);
-unit since Debian 11 (Bullseye);
-unroll-limit since Debian 11 (Bullseye);
-unsafe since Debian 11 (Bullseye);
-uses since Debian 11 (Bullseye);
-v since Debian 11 (Bullseye);
-verbose since Debian 11 (Bullseye);
-version since Debian 11 (Bullseye);
-vv since Debian 11 (Bullseye);
-vvv since Debian 11 (Bullseye);
-w since Debian 11 (Bullseye);
-x since Debian 11 (Bullseye).
-static-libs until Debian 11 (Bullseye).