(zilch lang ninja): Support overriding source used for build
Change-Id: I6a6a696488f85192dbd911df3d2d28fee01f7b5b
This commit is contained in:
parent
5d4fb382a8
commit
275b56622d
2 changed files with 23 additions and 5 deletions
|
|
@ -2,12 +2,14 @@
|
|||
(import
|
||||
(scheme base) (scheme eval)
|
||||
(zilch magic) (zilch nixpkgs) (zilch vfs)
|
||||
(srfi 88)
|
||||
(prefix (only scheme eval) scheme-))
|
||||
|
||||
(export
|
||||
ninja-build-config?
|
||||
ninja-build-config-environment ninja-build-config-environment-drv
|
||||
ninja-build-config-root-dir ninja-build-config-patches ninja-build-config-targets
|
||||
ninja-build-config-override-source
|
||||
|
||||
set-ninja-build-config-root-dir! set-ninja-build-config-environment!
|
||||
|
||||
|
|
@ -15,13 +17,14 @@
|
|||
|
||||
(begin
|
||||
(define-record-type <ninja-build-config>
|
||||
(make-ninja-build-config environment environment-drv root-dir patches targets)
|
||||
(make-ninja-build-config environment environment-drv root-dir patches targets override-source)
|
||||
ninja-build-config?
|
||||
(environment ninja-build-config-environment set-ninja-build-config-environment!)
|
||||
(environment-drv ninja-build-config-environment-drv set-ninja-build-config-environment-drv!)
|
||||
(root-dir ninja-build-config-root-dir set-ninja-build-config-root-dir!)
|
||||
(patches ninja-build-config-patches set-ninja-build-config-patches!)
|
||||
(targets ninja-build-config-targets set-ninja-build-config-targets!))
|
||||
(targets ninja-build-config-targets set-ninja-build-config-targets!)
|
||||
(override-source ninja-build-config-override-source set-ninja-build-config-override-source!))
|
||||
|
||||
(define (parse-config-inner conf data)
|
||||
(cond
|
||||
|
|
@ -39,6 +42,9 @@
|
|||
((#:root)
|
||||
(set-ninja-build-config-root-dir! conf (if (string? (list-ref data 1)) (vfs-from-directory (list-ref data 1)) (list-ref data 1)))
|
||||
(parse-config-inner conf (cddr data)))
|
||||
((#:override-source)
|
||||
(set-ninja-build-config-override-source! conf (if (string? (list-ref data 1)) (vfs-from-directory (list-ref data 1)) (list-ref data 1)))
|
||||
(parse-config-inner conf (cddr data)))
|
||||
((#:patch)
|
||||
(let*
|
||||
((patch-base (list-ref data 1))
|
||||
|
|
@ -59,9 +65,9 @@
|
|||
(list-val (if (list? val) val (list val))))
|
||||
(set-ninja-build-config-targets! conf (append list-val (ninja-build-config-targets conf))))
|
||||
(parse-config-inner conf (cddr data)))
|
||||
(else (error (string-append "Unknown directive " (symbol->string (car data)) " parsing Zilch Ninja config")))))))
|
||||
(else (error (string-append "Unknown directive " (keyword->string (car data)) " parsing Zilch Ninja config")))))))
|
||||
|
||||
(define (parse-ninja-config config)
|
||||
(unless (list? config)
|
||||
(error "expected Zilch Ninja config to be a list"))
|
||||
(parse-config-inner (make-ninja-build-config #f #f #f '() #f) config))))
|
||||
(parse-config-inner (make-ninja-build-config #f #f #f '() #f #f) config))))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue