zilch/lang/rust/src/build-script.sld

40 lines
1.3 KiB
Text
Raw Normal View History

2024-11-25 22:06:44 +00:00
(define-library (zilch lang rust build-script)
(import
(scheme base) (scheme write) (scheme process-context) (scheme lazy)
(zilch file) (zilch magic) (zilch nix drv) (zilch nix path) (scheme char)
(zilch nixpkgs) (zilch zexpr) (zilch semver)
json
(chicken process)
(chicken base) (chicken format)
(chicken foreign)
(srfi 4) (srfi 128) (srfi 146) (srfi 152) (srfi 207)
(zilch lang rust))
(export
call-runner)
(begin
(define linker (delay (let ((v (cdr (assoc "out" (nixpkgs "gcc"))))) #~,(string-append #$v "/bin/cc"))))
(foreign-declare "#include \"runner_source.h\"")
(define runner-runner
(cdar
(call-rustc
(zfile (foreign-value "runner_source" nonnull-c-string)) '()
#:codegen-flags (cons "linker" (force linker))
#:crate-type 'bin
#:crate-name "runner"
#:edition "2021"
#:emits '(#:link #t))))
(define (call-runner input-script cwd env)
2025-02-12 13:12:04 +00:00
(define output (store-path-for-ca-drv* "build.rs-run" "x86_64-linux"
`(,runner-runner)
#~(("script" . #$input-script)
("cwd" . #$cwd)
("OUT_DIR" . ,(make-placeholder "outdir"))
. #$env)
'("out" "outdir")))
(values (cdr (assoc "outdir" output)) (cdr (assoc "out" output))))))
2024-11-25 22:06:44 +00:00