$ ./run.sh + rm -rf '*.so' '*.o' m1.import.scm m2.import.scm 'src/*.so' src/m1.o src/m2.o + tree . ├── main.scm ├── run.sh ├── src │   ├── m1.scm │   └── m2.scm └── static-build.txt 1 directory, 5 files + echo ---------------------------------------- ---------------------------------------- + more run.sh src/m1.scm src/m2.scm main.scm + cat :::::::::::::: run.sh :::::::::::::: #!/usr/bin/env bash set -euox pipefail rm -rf *.so *.o *.import.scm src/*.so src/*.o tree echo "----------------------------------------" more run.sh src/m1.scm src/m2.scm main.scm | cat echo "----------------------------------------" csc -c -O3 -J -unit m1 src/m1.scm csc -c -O3 -J -uses m1 -unit m2 src/m2.scm tree csc -static main.scm -uses m1 src/m1.o -uses m2 src/m2.o ./main :::::::::::::: src/m1.scm :::::::::::::: (module m1 (m1-bar) (import scheme (chicken base)) (define (m1-bar f) (print "m1-bar called " f) `(list m1-bar ,f))) :::::::::::::: src/m2.scm :::::::::::::: (module m2 (m2-macro) (import scheme (chicken base)) (import-for-syntax m1) (define-syntax m2-macro (ir-macro-transformer (lambda (e inj cmp) (m1-bar (cdr e)))))) :::::::::::::: main.scm :::::::::::::: (import m2) (print (m2-macro "hello" "there")) + echo ---------------------------------------- ---------------------------------------- + csc -c -O3 -J -unit m1 src/m1.scm + csc -c -O3 -J -uses m1 -unit m2 src/m2.scm Error: (require) cannot load extension: m1 Call history: (scheme#list) (quote ((m1-bar . m1#m1-bar))) (##core#quote ((m1-bar . m1#m1-bar))) (scheme#list) (scheme#list) (##sys#register-compiled-module (quote m1) (quote m1) (scheme#list) (quote ((m1-bar . m1#m1-bar))) (... (scheme#list) (scheme#list) (scheme#list) (##core#begin (##core#require m1 m1#)) (##core#require m1 m1#) (chicken.load#load-extension (##core#quote m1) (##core#quote (m1#)) (##core#quote require)) (##core#quote m1) (##core#quote (m1#)) (##core#quote require) (chicken.load#load-extension (##core#quote m1) (##core#quote (m1#)) (##core#quote require)) <--