csc - Man Page
driver program for the CHICKEN Scheme compiler
Examples (TL;DR)
Compile one or more C# files to a CIL executable:
csc path/to/input_file_a.cs path/to/input_file_b.cs
Specify the output filename:
csc /out:path/to/filename path/to/input_file.cs
Compile into a
.dll
library instead of an executable:csc /target:library path/to/input_file.cs
Reference another assembly:
csc /reference:path/to/library.dll path/to/input_file.cs
Embed a resource:
csc /resource:path/to/resource_file path/to/input_file.cs
Automatically generate XML documentation:
csc /doc:path/to/output.xml path/to/input_file.cs
Specify an icon:
csc /win32icon:path/to/icon.ico path/to/input_file.cs
Strongly-name the resulting assembly with a keyfile:
csc /keyfile:path/to/keyfile path/to/input_file.cs
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.
- -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”.
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
More information can be found in the CHICKEN User's Manual.
Authors
The CHICKEN Team
Bugs
Submit bug reports by e-mail to chicken-janitors@nongnu.org
Referenced By
chicken(1), chicken-do(1), chicken-install(1), chicken-profile(1), csi(1), feathers(1).