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.