Reference

csc(1)

driver program for the CHICKEN Scheme compiler

NAME

csc – driver program for the CHICKEN Scheme compiler

SYNOPSIS

csc [OPTION ...] [FILENAME ...]

DESCRIPTION

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.

-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”.

ENVIRONMENT

The following environment variables change the behaviour of csc:

CSC_OPTIONS

Can hold default options that should be passed to every invocation of csc.

EXIT STATUS

The csc utility exits 0 on success, and >0 if an error occurs.

SEE ALSO

chicken(1)

More information can be found in the CHICKEN User's Manual: http://wiki.call-cc.org/manual/index.

AUTHORS

The CHICKEN Team

BUGS

Submit bug reports by e-mail to [email protected]

History

-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).