Make Chicken produce static executables

This commit is contained in:
retropikzel 2025-05-11 09:43:30 +03:00
parent 29a161ff6a
commit d6aba7593b
1 changed files with 426 additions and 394 deletions

View File

@ -45,26 +45,52 @@
(chicken (chicken
(type . compiler) (type . compiler)
(library-command . ,(lambda (library-file prepend-directories append-directories r6rs?) (library-command . ,(lambda (library-file prepend-directories append-directories r6rs?)
(let* ((out (string-append (if (string-starts-with? library-file "srfi") (let ((unit (string-append (if (string-starts-with? library-file "srfi")
(string-replace (string-cut-from-end library-file 4) #\/ #\-)
(string-replace (string-cut-from-end library-file 4) #\/ #\.))))
(out (string-append (if (string-starts-with? library-file "srfi")
(string-replace (string-cut-from-end library-file 4) #\/ #\-) (string-replace (string-cut-from-end library-file 4) #\/ #\-)
(string-replace (string-cut-from-end library-file 4) #\/ #\.)) (string-replace (string-cut-from-end library-file 4) #\/ #\.))
".so"))) ".o"))
(apply string-append `("csc -R r7rs -X r7rs -s -J" (static-out (string-append (if (string-starts-with? library-file "srfi")
(string-replace (string-cut-from-end library-file 4) #\/ #\-)
(string-replace (string-cut-from-end library-file 4) #\/ #\.))
".a")))
(apply string-append `("csc -R r7rs -X r7rs -static -c -J"
" " " "
,(util-getenv "COMPILE_R7RS_CHICKEN") "-unit"
" "
,unit
" " " "
"-o" "-o"
" " " "
,out ,out
" " " "
,(util-getenv "COMPILE_R7RS_CHICKEN")
" "
,(search-library-file (append prepend-directories ,(search-library-file (append prepend-directories
append-directories) append-directories)
library-file)))))) library-file)
"&&"
" "
"ar rcs"
" "
,static-out
" "
,out
" ")))))
(command . ,(lambda (input-file output-file prepend-directories append-directories library-files r6rs?) (command . ,(lambda (input-file output-file prepend-directories append-directories library-files r6rs?)
(apply string-append `("csc -R r7rs -X r7rs" (apply string-append `("csc -R r7rs -X r7rs -static"
" " " "
,(util-getenv "COMPILE_R7RS_CHICKEN") ,(util-getenv "COMPILE_R7RS_CHICKEN")
" " " "
,@(map (lambda (library-file)
(string-append "-uses "
(if (string-starts-with? library-file "srfi")
(string-replace (string-cut-from-end library-file 4) #\/ #\-)
(string-replace (string-cut-from-end library-file 4) #\/ #\.))))
library-files)
" "
"-output-file" "-output-file"
" " " "
,output-file ,output-file
@ -287,7 +313,7 @@
" " " "
,(util-getenv "COMPILE_R7RS_KAWA") ,(util-getenv "COMPILE_R7RS_KAWA")
" " " "
"-Dkawa.import.path=.:" "-Dkawa.import.path="
,@(map (lambda (item) ,@(map (lambda (item)
(string-append item "/*.sld:")) (string-append item "/*.sld:"))
(append prepend-directories append-directories)) (append prepend-directories append-directories))
@ -304,6 +330,10 @@
" " " "
"-nobanner" "-nobanner"
" " " "
"-quiet"
" "
"-utf8"
" "
,(if r6rs? "-r6rs" "-r7rs") ,(if r6rs? "-r6rs" "-r7rs")
" " " "
,@(map (lambda (item) ,@(map (lambda (item)
@ -313,6 +343,8 @@
(string-append "-A " item " ")) (string-append "-A " item " "))
append-directories) append-directories)
" " " "
"-program"
" "
,input-file))))) ,input-file)))))
(loko (loko
(type . compiler) (type . compiler)
@ -359,8 +391,8 @@
"--batch-mode" "--batch-mode"
" " " "
,@(map (lambda (item) ,@(map (lambda (item)
(string-append "--load " item " ")) (string-append "--prepend-library " item " "))
library-files) (append prepend-directories append-directories))
" " " "
"--load" "--load"
" " " "