CSC(1)
π CSC(1) β it's the CHICKEN Scheme compiler driver, bestie
okay so real quick, the header situation: this is CSC(1) from the General Commands Manual, and the program's actual name is csc. That's the whole vibe. Now let's get into it β¨
πΈ NAME
csc β the driver program for the CHICKEN Scheme compiler. she's the middleman, the main character, the one who actually gets stuff done π«Ά
π¦ SYNOPSIS
csc [OPTION ...] [FILENAME ...]
π DESCRIPTION
csc is the program that calls up the CHICKEN compiler and your host system's C compiler, so together they can turn a Scheme source file β or C files that CHICKEN generated β into a whole executable. it's giving backstage crew at the school play, honestly π
So what even is a FILENAME here? It can be:
- 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 of the following, which we're gonna go through all of, no skipping, iykyk π
β General options
-h,-helpβ shows you the usage text and dips out.-v,-verboseβ shows compiler notes plus all the tool invocations. the receipts, basically.-vvβ spills the tea on translation progress.-vvvβ every single compilation stage, no crumbs left behind.-versionβ shows the Scheme compiler version and exits.-releaseβ shows the release number and exits.
π File and pathname options
-o FILENAME,-output-file FILENAMEβ names your target executable. your baby, your choice.-I PATHNAME,-include-path PATHNAMEβ gives included files an alternative path to live in.-to-stdoutβ writes the compiler output to stdout (and yeah, it implies-t).-s,-shared,-dynamicβ generates a dynamically loadable shared object file. β¨
π Language options
-D SYMBOL,-feature SYMBOLβ registers a feature identifier.-no-feature SYMBOLβ turns a builtin feature identifier off.-c++β compiles via a C++ source file (.cpp).-objcβ compiles via an Objective-C source file (.m).
π§ Syntax related options
-i,-case-insensitiveβ doesn't preserve the case of read symbols. case? never heard of her.-K,-keyword-style STYLEβ enables an alternative keyword-syntax. yourSTYLEchoices areprefix,suffix, ornone.-no-parentheses-synonymsβ disables list delimiter synonyms.-no-symbol-escapeβ disables support for escaped symbols.-r7rs-syntaxβ disables the CHICKEN extensions to R7RS syntax.-compile-syntaxβ makes macros available at run-time.-j MODULE,-emit-import-library MODULEβ writes compile-time module information into a separate file.-J,-emit-all-import-librariesβ emits import-libraries for all the defined modules. all of them. periodt.-no-compiler-syntaxβ disables expansion of compiler-macros.-m NAME,-module NAMEβ wraps the compiled code in a module with the given name.-M,-module-registrationβ always generates module registration code, even when import libraries are emitted.-N,-no-module-registrationβ does not generate module registration code. this one overrides-module-registration.
π₯ Translation options
-x,-explicit-useβ doesn't use the unitslibraryandevalby default.-P,-check-syntaxβ stops compiling right after macro-expansion.-A,-analyze-onlyβ stops compiling after the first analysis pass.
π Debugging options
-w,-no-warningsβ disables warnings. ignorance is bliss, lowkey.-d0,-d1,-d2,-d3,-debug-level NUMBERβ sets the level of available debugging information.-no-traceβ disables the 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β loads an additional type database.
π Optimization options
-O,-O0,-O1,-O2,-O3,-O4,-O5,-optimize-level NUMBERβ enables certain sets of optimization options. pick your fighter.-optimize-leaf-routinesβ enables leaf routine optimization.-no-usual-integrationsβ lets standard procedures be redefined.-u,-unsafeβ disables safety checks. β οΈ you are on your own, bestie.-localβ assumes globals are only modified in the current file.-b,-blockβ enables block-compilation.-disable-interruptsβ disables interrupts in compiled code.-f,-fixnum-arithmeticβ assumes all numbers are fixnums.-disable-stack-overflow-checksβ disables detection of stack-overflows.-inlineβ enables inlining.-inline-limit LIMITβ sets the inlining threshold.-inline-globalβ enables cross-module inlining.-specializeβ performs type-based specialization of primitive calls.-oi FILENAME,-emit-inline-file FILENAMEβ generates a file with globally inlinable procedures (this one implies-inline -local).-consult-inline-file FILENAMEβ explicitly loads an inline file.-ot FILENAME,-emit-types-file FILENAMEβ writes type-declaration information into a file.-no-argc-checksβ disables argument count checks.-no-bound-checksβ disables bound variable checks.-no-procedure-checksβ disables procedure call checks.-no-procedure-checks-for-usual-bindingsβ disables procedure call checks only for usual bindings.-no-procedure-checks-for-toplevel-bindingsβ disables procedure call checks for toplevel bindings.-strict-typesβ assumes variables don't change their type.-lfa2β performs an additional lightweight flow-analysis pass.-unroll-limit LIMITβ specifies the inlining limit for self-recursive calls.-merge-reusable-closuresβ enables closure reuse.-merge-shareable-closuresβ enables closure sharing.
π Configuration options
-unit NAMEβ compiles the file as a library unit.-uses NAMEβ declares 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. (these two share a line in the original, so they're sharing a bullet here too π)-X FILENAME,-extend FILENAMEβ loads a file before compilation commences.-prelude EXPRESSIONβ adds an expression to the beginning of the source file.-postlude EXPRESSIONβ adds an expression to the end of the source file.-prologue FILENAMEβ includes a file before the main source file.-epilogue FILENAMEβ includes a file after the main source file.-e,-embeddedβ compiles as embedded, meaning it does not generatemain().-guiβ compiles as a GUI application.-link NAMEβ links an extension with the compiled executable (implies-uses).-R NAME,-require-extension NAMEβ requires an extension and imports it in the compiled code.-dll,-libraryβ compiles multiple units into a dynamic library.-libdir DIRECTORYβ overrides the location of the runtime library directory.
π«Ά Options to other passes
-C OPTIONβ passes an option to the C compiler.-L OPTIONβ passes an option to the linker.-I<DIR>β passesβ-I<DIR>βto the C compiler (adds an include path).-L<DIR>β passesβ-L<DIR>βto the linker (adds a library path).-kβ keeps the intermediate files. souvenirs β¨-cβ stops after compilation to object files.-tβ stops after translation to C.-cc COMPILERβ picks a C compiler that isn't the default.-cxx COMPILERβ picks a C++ compiler that isn't the default.-ld COMPILERβ picks a linker that isn't the default.-staticβ links with static CHICKEN libraries and extensions.-F<DIR>β passesβ-F<DIR>βto the C compiler (adds a framework header path on Mac OS X).-framework NAMEβ passed to the linker on Mac OS X.-rpath PATHNAMEβ adds a directory to the runtime library search path.-Wl,...β passes linker options.-stripβ strips the resulting binary.
π Inquiry options
-homeβ shows the home-directory (that's where the support files go).-cflagsβ shows the required C-compiler flags and exits.-ldflagsβ shows the required linker flags and exits.-libsβ shows the required libraries and exits.-cc-nameβ shows the name of the default C compiler in use.-cxx-nameβ shows the name of the default C++ compiler in use.-ld-nameβ shows the name of the default linker in use.-dry-runβ just shows the commands it would execute, doesn't run them (implies-v). all talk, no walk, iconic.
π Obscure options
-debug MODESβ displays debugging output for the given modes.-compiler PATHNAMEβ uses a compiler other than the defaultchicken.-rawβ does not generate implicit init- and exit code.-emit-external-prototypes-firstβ emits prototypes for callbacks before foreign declarations.-regenerate-import-librariesβ always emits import libraries, even when their contents haven't changed. heads up: the default behaviour is to preserve existing import libraries.-ignore-repositoryβ does not refer to the repository for extensions.-keep-shadowed-macrosβ does not remove shadowed macros.-hostβ compiles for host when configured for cross-compiling.-private-repositoryβ loads extensions from the executable path.-deployedβ links the support file to be used from a deployed executable (setsrpathaccordingly, if it's supported on this platform).-no-elevationβ embeds a manifest on Windows to suppress elevation warnings for programs namedinstallorsetup.
π‘ also!! options can be collapsed when unambiguous, soβ-vkfOβis the exact same thing asβ-v -k -fixnum-arithmetic -optimizeβ. shortcuts are valid, bestie.
π± ENVIRONMENT
These environment variables change how csc behaves:
CSC_OPTIONSβ can hold default options that get passed to every single invocation ofcsc. set it once, forget it, live your life π¦
β EXIT STATUS
The csc utility exits 0 on success, and >0 if an error occurs. that's it, that's the whole mood.
π SEE ALSO
More info lives in the CHICKEN User's Manual: http://wiki.call-cc.org/manual/index.
π AUTHORS
The CHICKEN Team. legends, honestly.
π BUGS
Submit bug reports by e-mail to chicken-janitors@nongnu.org. don't be shy, they're nice π«Ά
k that's the whole page!! mwah π this was the CSC(1) entry from the Debian packaging, dated Apr 26, 2017 β go forth and compile, you gorgeous genius you πβ¨π
π¦ where this page comes from
- arch rolling: chicken 6.0.0-1 Β· BSD-3-Clause AND GPL-2.0-or-later AND custom:Public-Domain
- Copyright (c) 2007-2022, The CHICKEN Team
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms