rust: various build script fixes
This commit is contained in:
parent
e42315e67a
commit
8c129e33db
12 changed files with 307 additions and 165 deletions
|
|
@ -11,6 +11,9 @@
|
|||
|
||||
(begin
|
||||
(define rustc (cdr (assoc "out" (nixpkgs "rustc"))))
|
||||
(define gcc (delay (cdr (assoc "out" (nixpkgs "gcc")))))
|
||||
(define linker (delay #~,(string-append #$(force gcc) "/bin/cc")))
|
||||
|
||||
(define-record-type <rustc-emits>
|
||||
(make-rustc-emits asm llvm-bc llvm-ir obj metadata link dep-info mir)
|
||||
rustc-emits?
|
||||
|
|
@ -87,6 +90,10 @@
|
|||
((#:remap-path-prefix) (set-rustc-params-remap-path-prefix! out (cons (cadr items) (rustc-params-remap-path-prefix out))) (parse-rustc-params out (cddr items)))
|
||||
(else (error "unknown rustc param" (car items))))))
|
||||
|
||||
(foreign-declare "#include \"rustc_wrap_source.h\"")
|
||||
(define rustc_wrap-bin
|
||||
#f)
|
||||
|
||||
(define (call-rustc input env . params)
|
||||
(call-rustc-internal input env (parse-rustc-params (make-rustc-params '() '() '() '() #f #f #f #f '() '() '()) params)))
|
||||
|
||||
|
|
@ -136,5 +143,16 @@
|
|||
(lambda (k)
|
||||
(set! args (cons "--remap-path-prefix" (cons #~,(string-append #$(car k) "=" #$(cdr k)) args))))
|
||||
(rustc-params-remap-path-prefix params)))
|
||||
(store-path-for-ca-drv* (string-append "rustc-" (symbol->string (rustc-params-crate-type params)) "-" (rustc-params-crate-name params)) "x86_64-linux" #~(,(string-append #$rustc "/bin/rustc") . #$args) env outputs))))
|
||||
(if rustc_wrap-bin
|
||||
(store-path-for-ca-drv* (string-append "rustc-" (symbol->string (rustc-params-crate-type params)) "-" (rustc-params-crate-name params)) "x86_64-linux" #~(#$rustc_wrap-bin . #$args) #~(("_zilch_rustc" . ,(string-append #$rustc "/bin/rustc")) . #$env) outputs)
|
||||
(store-path-for-ca-drv* (string-append "rustc-" (symbol->string (rustc-params-crate-type params)) "-" (rustc-params-crate-name params)) "x86_64-linux" #~(,(string-append #$rustc "/bin/rustc") . #$args) env outputs)))
|
||||
|
||||
(set! rustc_wrap-bin
|
||||
(cdar
|
||||
(call-rustc
|
||||
(zfile (foreign-value "rustc_wrap_source" nonnull-c-string)) '()
|
||||
#:codegen-flags (cons "linker" (force linker))
|
||||
#:crate-type 'bin
|
||||
#:crate-name "rustc_wrap"
|
||||
#:edition "2021"
|
||||
#:emits '(#:link #t))))))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue