(zilch lang rust): more fixes
This commit is contained in:
parent
313cca66cc
commit
fb1977a45c
5 changed files with 189 additions and 85 deletions
|
|
@ -27,7 +27,7 @@
|
|||
(mir rustc-emits-mir set-rustc-emits-mir!))
|
||||
|
||||
(define-record-type <rustc-params>
|
||||
(make-rustc-params cfg check-cfg search-path link crate-type crate-name edition emits externs codegen-flags remap-path-prefix)
|
||||
(make-rustc-params cfg check-cfg search-path link crate-type crate-name edition emits externs codegen-flags remap-path-prefix cap-lints)
|
||||
rustc-params?
|
||||
(cfg rustc-params-cfg set-rustc-params-cfg!)
|
||||
(check-cfg rustc-params-check-cfg set-rustc-params-check-cfg!)
|
||||
|
|
@ -39,7 +39,8 @@
|
|||
(emits rustc-params-emits set-rustc-params-emits!)
|
||||
(externs rustc-params-externs set-rustc-params-externs!)
|
||||
(codegen-flags rustc-params-codegen-flags set-rustc-params-codegen-flags!)
|
||||
(remap-path-prefix rustc-params-remap-path-prefix set-rustc-params-remap-path-prefix!))
|
||||
(remap-path-prefix rustc-params-remap-path-prefix set-rustc-params-remap-path-prefix!)
|
||||
(cap-lints rustc-params-cap-lints set-rustc-params-cap-lints!))
|
||||
|
||||
(define (rustc-emits-as-list emits tail types)
|
||||
(define (check-one res name)
|
||||
|
|
@ -88,6 +89,7 @@
|
|||
((#:externs) (set-rustc-params-externs! out (cons (cadr items) (rustc-params-externs out))) (parse-rustc-params out (cddr items)))
|
||||
((#:codegen-flags) (set-rustc-params-codegen-flags! out (cons (cadr items) (rustc-params-codegen-flags out))) (parse-rustc-params out (cddr items)))
|
||||
((#: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)))
|
||||
((#:cap-lints) (set-rustc-params-cap-lints! out (cadr items)) (parse-rustc-params out (cddr items)))
|
||||
(else (error "unknown rustc param" (car items))))))
|
||||
|
||||
(foreign-declare "#include \"rustc_wrap_source.h\"")
|
||||
|
|
@ -95,16 +97,25 @@
|
|||
#f)
|
||||
|
||||
(define (call-rustc input env . params)
|
||||
(call-rustc-internal input env (parse-rustc-params (make-rustc-params '() '() '() '() #f #f #f #f '() '() '()) params)))
|
||||
(call-rustc-internal input env (parse-rustc-params (make-rustc-params '() '() '() '() #f #f #f #f '() '() '() #f) params)))
|
||||
|
||||
(define (call-rustc-internal input-path env params)
|
||||
(define args (list input-path))
|
||||
(when (rustc-params-cap-lints params)
|
||||
(set! args (cons "--cap-lints" (cons (rustc-params-cap-lints params) args))))
|
||||
(when (rustc-params-cfg params)
|
||||
(for-each
|
||||
(lambda (k) (set! args (cons "--cfg" (cons k args)))) (rustc-params-cfg params)))
|
||||
(when (rustc-params-check-cfg params)
|
||||
(for-each
|
||||
(lambda (k) (set! args (cons "--check-cfg" (cons k args)))) (rustc-params-check-cfg params)))
|
||||
(when (rustc-params-externs params)
|
||||
(for-each
|
||||
(lambda (k)
|
||||
(if (pair? k)
|
||||
(set! args (cons "--extern" (cons #~,(string-append (car k) "=" #$(cdr k)) args)))
|
||||
(set! args (cons "--extern" (cons k args)))))
|
||||
(rustc-params-externs params)))
|
||||
(when (rustc-params-link params)
|
||||
(for-each
|
||||
(lambda (k)
|
||||
|
|
@ -126,13 +137,6 @@
|
|||
(define-values (new-args outputs) (rustc-emits-as-list (rustc-params-emits params) args '()))
|
||||
(set! args new-args)
|
||||
|
||||
(when (rustc-params-externs params)
|
||||
(for-each
|
||||
(lambda (k)
|
||||
(if (pair? k)
|
||||
(set! args (cons "--extern" (cons #~,(string-append (car k) "=" #$(cdr k)) args)))
|
||||
(set! args (cons "--extern" (cons k args)))))
|
||||
(rustc-params-externs params)))
|
||||
(when (rustc-params-codegen-flags params)
|
||||
(for-each
|
||||
(lambda (k)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue