CSC(1)
π CSC(1) π
okay so bestie, welcome to the manual page for csc β the driver program for the CHICKEN Scheme compiler. It lives in the General Commands Manual section (that's section 1, the "commands you actually type" section, iykyk). This is a big one, so hydrate π
β¨ NAME β¨
csc β driver program for the CHICKEN Scheme compiler
π SYNOPSIS π
csc [OPTION ...] [FILENAME ...]
π¦ DESCRIPTION π¦
So like, csc is the main character of the CHICKEN build process. It's a program that invokes the CHICKEN compiler and the host system's C compiler, and it does that so you get an executable out of a Scheme source file β or out of C files that CHICKEN itself generated. Bestie it's literally the glue holding the whole thing together, no cap π«Ά
FILENAME is a Scheme source file name with an optional extension, or a C / C++ / Objective-C source, object, or library file name with an extension. And OPTION can be any one of the following. Buckle up, there are a lot, and they're all real:
π General options π
-h,-helpβ shows you the usage text and then dips out. Bye π¨-v,-verboseβ spills the compiler notes and every tool invocation. Very "tell me everything" of it.-vvβ shows info about translation progress.-vvvβ shows info about all the compilation stages. Maximum yapping, and honestly? obsessed.-versionβ displays the Scheme compiler version and exits.-releaseβ displays the release number and exits.
π File and pathname options π
-o FILENAME,-output-file FILENAMEβ specifies the target executable name.-I PATHNAME,-include-path PATHNAMEβ specifies an alternative path for included files.-to-stdoutβ write compiler to stdout (this one implies-t).-s,-shared,-dynamicβ generate a dynamically loadable shared object file.
π Language options π
-D SYMBOL,-feature SYMBOLβ register a feature identifier.-no-feature SYMBOLβ disable a 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 the case of read symbols.-K,-keyword-style STYLEβ enable alternative keyword-syntax. TheSTYLEcan beprefix,suffixornone.-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 a 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 the compiled code in a 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. This one overrides-module-registration. Rude but valid.
β Translation options β
-x,-explicit-useβ do not use the unitslibraryandevalby default.-P,-check-syntaxβ stop compilation after macro-expansion.-A,-analyze-onlyβ stop compilation after the first analysis pass.
π Debugging options π
-w,-no-warningsβ disable warnings. Living on the edge, I respect it.-d0,-d1,-d2,-d3,-debug-level NUMBERβ set the level of available debugging information.-no-traceβ disable rudimentary debugging information.-profileβ the executable emits profiling information.-accumulate-profileβ the executable emits profiling information in append mode.-profile-name FILENAMEβ name of the generated profile information file.-types FILENAMEβ load an 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. β οΈ yes, that means what it sounds like, be so fr.-localβ assume globals are only modified in the 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 the inlining threshold.-inline-globalβ enable cross-module inlining.-specializeβ perform type-based specialization of primitive calls.-oi FILENAME,-emit-inline-file FILENAMEβ generate a file with globally inlinable procedures (this implies-inline -local).-consult-inline-file FILENAMEβ explicitly load an inline file.-ot FILENAME,-emit-types-file FILENAMEβ write type-declaration information into a 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 variables do not change their type.-clusteringβ combine groups of local procedures into a dispatch loop.-lfa2β perform an additional lightweight flow-analysis pass.-unroll-limit LIMITβ specifies the inlining limit for self-recursive calls.
πΈ Configuration options πΈ
-unit NAMEβ compile file as a library unit.-uses NAMEβ declare a library unit as used.-heap-size NUMBERβ specifies the heap-size of the compiled executable.-nursery NUMBER -stack-size NUMBERβ specifies the nursery size of the compiled executable.-X FILENAME,-extend FILENAMEβ load file before compilation commences.-prelude EXPRESSIONβ add expression to the beginning of the source file.-postlude EXPRESSIONβ add expression to the end of the source file.-prologue FILENAMEβ include file before the main source file.-epilogue FILENAMEβ include file after the main source file.-e,-embeddedβ compile as embedded (don't generatemain()).-guiβ compile as a GUI application.-link NAMEβ link extension with the compiled executable (this implies-uses).-R NAME,-require-extension NAMEβ require extension and import it in the compiled code.-dll,-libraryβ compile multiple units into a dynamic library.-libdir DIRECTORYβ override the location of the runtime library directory.
π Options to other passes π
-C OPTIONβ pass option to the C compiler.-L OPTIONβ pass option to the linker.-I<DIR>β pass-I<DIR>to the C compiler (add include path).-L<DIR>β pass-L<DIR>to the 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 the C compiler (add framework header path on Mac OS X).-framework NAMEβ passed to the linker on Mac OS X.-rpath PATHNAMEβ add directory to the runtime library search path.-Wl,...β pass linker options.-stripβ strip the 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 the name of the default C compiler used.-cxx-nameβ show the name of the default C++ compiler used.-ld-nameβ show the name of the default linker used.-dry-runβ just show the commands executed, don't run them (this implies-v).
π Obscure options π
-debug MODESβ display debugging output for the given modes.-compiler PATHNAMEβ use a compiler other than the defaultchicken.-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 the 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 the executable path.-deployedβ link support file to be used from a deployed executable (setsrpathaccordingly, if supported on this platform).-no-elevationβ embed manifest on Windows to supress elevation warnings for programs namedinstallorsetup. (yes, "supress", that's how it's spelled in the original, I'm not touching it π)
π¦ PSA bestie: options can be collapsed if unambiguous, so-vkfOis the same as-v -k -fixnum-arithmetic -optimize. It's giving "keyboard smash but make it intentional". Iconic.
π ENVIRONMENT π
The following environment variables change the behaviour of csc:
CSC_OPTIONSβ can hold default options that should be passed to every invocation ofcsc.
β 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: http://wiki.call-cc.org/manual/index.
π AUTHORS π
The CHICKEN Team β absolute legends, no notes π
π BUGS π
Submit bug reports by e-mail to chicken-janitors@nongnu.org. They're nice, I promise, but like... be specific okay? π«Ά
and that's the whole thing, bestie β¨ this page came from the Debian folks and it's dated Apr 26, 2017 β go forth and csc responsibly, mwah π
π¦
π¦ where this page comes from
- alpine 3.24: chicken-doc 5.4.0-r0 Β· BSD-3-Clause
- fedora 43: chicken 5.4.0-3.fc43 Β· BSD-3-Clause
- fedora 43: chicken 5.4.0-3.fc43 Β· BSD-3-Clause
- fedora 44: chicken 5.4.0-5.fc44 Β· BSD-3-Clause
- fedora 44: chicken 5.4.0-5.fc44 Β· BSD-3-Clause
- nixos 26.05: chicken 5.4.0
- Copyright (c) 2007-2022, The CHICKEN Team
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms