Next: Error Detection, Previous: Compiling with Hobbit, Up: Compiling with Hobbit [Contents][Index]
(require 'compile)
Invokes the HOBBIT compiler to translate Scheme files name1.scm, name2.scm, … to C files name1.c and name1.h.
Compiles the HOBBIT translation of name1.scm, name2.scm, … to a dynamically linkable object file name1<object-suffix>, where <object-suffix> is the object file suffix for your computer (for instance, .so). name1.scm must be in the current directory; name2.scm, … may be in other directories.
If a file named name1.opt exists, then its options are
passed to the build
invocation which compiles the c
files.
cd ~/scm/ scm -rcompile -e"(compile-file \"example.scm\")" Starting to read example.scm Generic (slow) arithmetic assumed: 1.0e-3 found. ** Pass 1 completed ** ** Pass 2 completed ** ** Pass 3 completed ** ** Pass 4 completed ** ** Pass 5 completed ** ** Pass 6 completed ** C source file example.c is built. C header file example.h is built. These top level higher order procedures are not clonable (slow): (nonkeyword_make-promise map-streams generate-vector runge-kutta-4) These top level procedures create non-liftable closures (slow): (nonkeyword_make-promise damped-oscillator map-streams scale-vector elementwise runge-kutta-4 integrate-system) ; Scheme (linux) script created by SLIB/batch Sun Apr 7 22:49:49 2002 ; ================ Write file with C defines (delete-file "scmflags.h") (call-with-output-file "scmflags.h" (lambda (fp) (for-each (lambda (string) (write-line string fp)) '("#define IMPLINIT \"Init5f4.scm\"" "#define BIGNUMS" "#define FLOATS" "#define ARRAYS" "#define DLL")))) ; ================ Compile C source files (system "gcc -O2 -fpic -c -I/usr/local/lib/scm/ example.c") (system "gcc -shared -o example.so example.o -lm -lc") (delete-file "example.o") ; ================ Link C object files (delete-file "slibcat") Compilation finished at Sun Apr 7 22:49:50
Compiles and links the HOBBIT translation of name1.scm, name2.scm, … to a SCM executable named exename. name1.scm must be in the current directory; name2.scm, … may be in other directories.
If a file named exename.opt exists, then its options are
passed to the build
invocation which compiles the c
files.
cd ~/scm/ scm -rcompile -e"(compile->executable \"exscm\" \"example.scm\")" Starting to read example.scm Generic (slow) arithmetic assumed: 1.0e-3 found. ** Pass 1 completed ** ** Pass 2 completed ** ** Pass 3 completed ** ** Pass 4 completed ** ** Pass 5 completed ** ** Pass 6 completed ** C source file example.c is built. C header file example.h is built. These top level higher order procedures are not clonable (slow): (nonkeyword_make-promise map-streams generate-vector runge-kutta-4) These top level procedures create non-liftable closures (slow): (nonkeyword_make-promise damped-oscillator map-streams scale-vector elementwise runge-kutta-4 integrate-system) ; Scheme (linux) script created by SLIB/batch Sun Apr 7 22:46:31 2002 ; ================ Write file with C defines (delete-file "scmflags.h") (call-with-output-file "scmflags.h" (lambda (fp) (for-each (lambda (string) (write-line string fp)) '("#define IMPLINIT \"Init5f4.scm\"" "#define COMPILED_INITS init_example();" "#define CCLO" "#define FLOATS")))) ; ================ Compile C source files (system "gcc -O2 -c continue.c scmmain.c findexec.c script.c time.c repl.c scl.c eval.c sys.c subr.c debug.c unif.c rope.c example.c scm.c") ; ================ Link C object files (system "gcc -rdynamic -o exscm continue.o scmmain.o findexec.o script.o time.o repl.o scl.o eval.o sys.o subr.o debug.o unif.o rope.o example.o scm.o -L/usr/local/lib/scm/ -lm -lc") Compilation finished at Sun Apr 7 22:46:44
Note Bene: ‘#define CCLO’ must be present in scmfig.h.
In order to see calls to the C compiler and linker, do
(verbose 3)
before calling these functions.
Next: Error Detection, Previous: Compiling with Hobbit, Up: Compiling with Hobbit [Contents][Index]