added automatic variables in (currently only) gnu style.
added switch between make-rule-cml (file make-rule) and make-rule-no-cml
This commit is contained in:
parent
c411f67a2c
commit
62be1f7142
|
@ -0,0 +1,160 @@
|
||||||
|
(define fluid-$@ (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-$< (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-$? (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-$^ (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-$+ (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-$* (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-$@/ (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-/$@ (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-$*/ (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-/$* (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-$</ (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-/$< (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-$^/ (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-/$^ (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-$+/ (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-/$+ (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-$?/ (make-preserved-thread-fluid (list)))
|
||||||
|
(define fluid-/$? (make-preserved-thread-fluid (list)))
|
||||||
|
|
||||||
|
(define (bind-fluids-gnu target prereqs prereqs-results thunk)
|
||||||
|
(let (($@ target)
|
||||||
|
($< (cond
|
||||||
|
((and (list? prereqs) (not (null? prereqs))) (car prereqs))
|
||||||
|
((and (list? prereqs) (null? prereqs)) "")
|
||||||
|
(else prereqs)))
|
||||||
|
($? (cond
|
||||||
|
((not (list? prereqs))
|
||||||
|
(let ((newer-prereq (list)))
|
||||||
|
(if (car (rule-result-wants-build?
|
||||||
|
(car prereqs-results)))
|
||||||
|
(cons newer-prereq newer-prereq)
|
||||||
|
newer-prereq)))
|
||||||
|
((and (list? prereqs) (null? prereqs)) prereqs)
|
||||||
|
((list? prereqs)
|
||||||
|
(let for-prereqs ((newer-prereqs (list))
|
||||||
|
(current-prereq (car prereqs))
|
||||||
|
(todo-prereqs (cdr prereqs))
|
||||||
|
(current-result (car prereqs-results))
|
||||||
|
(todo-results (cdr prereqs-results)))
|
||||||
|
(let ((build? (if (is-rule-result? current-result)
|
||||||
|
(car (rule-result-wants-build?
|
||||||
|
current-result))
|
||||||
|
#f)))
|
||||||
|
(if build?
|
||||||
|
(if (not (null? todo-prereqs))
|
||||||
|
(for-prereqs (cons current-prereq
|
||||||
|
newer-prereqs)
|
||||||
|
(car todo-prereqs)
|
||||||
|
(cdr todo-prereqs)
|
||||||
|
(car todo-results)
|
||||||
|
(cdr todo-results))
|
||||||
|
newer-prereqs)
|
||||||
|
(if (not (null? todo-prereqs))
|
||||||
|
(for-prereqs newer-prereqs
|
||||||
|
(car todo-prereqs)
|
||||||
|
(cdr todo-prereqs)
|
||||||
|
(car todo-results)
|
||||||
|
(cdr todo-results))
|
||||||
|
newer-prereqs)))))
|
||||||
|
(else (error "no match in bind-fluids-gnu fluid-$?"))))
|
||||||
|
($^ (delete-duplicates! prereqs))
|
||||||
|
($+ prereqs)
|
||||||
|
($* ""))
|
||||||
|
|
||||||
|
(let-thread-fluids fluid-$@ $@ ;; $@ : file name of the target
|
||||||
|
;; $% : target member name, when target is an archive member.
|
||||||
|
;; fluid-$% target
|
||||||
|
|
||||||
|
;; $< : name of the first prerequisite
|
||||||
|
fluid-$< $<
|
||||||
|
|
||||||
|
;; $? : names of all prerequisites that are newer than target
|
||||||
|
fluid-$? $?
|
||||||
|
|
||||||
|
;; $^ : names of all the prerequisites without duplicates
|
||||||
|
;; $+ : names of all the prerequisites
|
||||||
|
fluid-$^ $^
|
||||||
|
fluid-$+ $+
|
||||||
|
|
||||||
|
;; $* : The stem with which an implicit rule matches.
|
||||||
|
fluid-$* $*
|
||||||
|
|
||||||
|
;; we have no parens so we will use the following *scheme*:
|
||||||
|
;; e.g. for $@: $@/ denotes directory part of $@
|
||||||
|
;; while /$@ denotes file within directory of $@
|
||||||
|
;;
|
||||||
|
;; $(@D), $(@F) : directory part and file-within-directory
|
||||||
|
fluid-$@/ (file-name-directory $@)
|
||||||
|
fluid-/$@ (file-name-nondirectory $@)
|
||||||
|
|
||||||
|
;; $(*D), $(*F) : directory part and file-within-directory
|
||||||
|
fluid-$*/ (file-name-directory $*)
|
||||||
|
fluid-/$* (file-name-nondirectory $*)
|
||||||
|
|
||||||
|
;; $(%D), $(%F) : directory part and file-within-directory
|
||||||
|
; $%/ (file-name-directory fluid-$%)
|
||||||
|
; /$% (file-name-nondirectory fluid-$%)
|
||||||
|
|
||||||
|
;; $(<D), $(<F) : directory part and file-within-directory
|
||||||
|
fluid-$</ (file-name-directory $<)
|
||||||
|
fluid-/$< (file-name-nondirectory $<)
|
||||||
|
|
||||||
|
;; $(^D), $(^F) : directory part and file-within-directory
|
||||||
|
fluid-$^/ (map (lambda (d)
|
||||||
|
(file-name-directory d))
|
||||||
|
$^)
|
||||||
|
fluid-/$^ (map (lambda (f)
|
||||||
|
(file-name-nondirectory f))
|
||||||
|
$^)
|
||||||
|
|
||||||
|
;; $(+D), $(+F) : directory part and file-within-directory
|
||||||
|
fluid-$+/ (map (lambda (d)
|
||||||
|
(file-name-directory d))
|
||||||
|
$+)
|
||||||
|
fluid-/$+ (map (lambda (f)
|
||||||
|
(file-name-nondirectory f))
|
||||||
|
$+)
|
||||||
|
|
||||||
|
;; $(?D), $(?F) : directory part and the
|
||||||
|
;; file-within-directory part of $?.
|
||||||
|
fluid-$?/ (map (lambda (d)
|
||||||
|
(file-name-directory d))
|
||||||
|
$?)
|
||||||
|
fluid-/$? (map (lambda (f)
|
||||||
|
(file-name-nondirectory f))
|
||||||
|
$?)
|
||||||
|
thunk)))
|
||||||
|
|
||||||
|
(define ($@) (thread-fluid fluid-$@))
|
||||||
|
(define ($<) (thread-fluid fluid-$<))
|
||||||
|
(define ($?) (thread-fluid fluid-$?))
|
||||||
|
(define ($^) (thread-fluid fluid-$^))
|
||||||
|
(define ($+) (thread-fluid fluid-$+))
|
||||||
|
(define ($*) (thread-fluid fluid-$*))
|
||||||
|
(define ($@/) (thread-fluid fluid-$@/))
|
||||||
|
(define (/$@) (thread-fluid fluid-/$@))
|
||||||
|
(define ($*/) (thread-fluid fluid-$*/))
|
||||||
|
(define (/$*) (thread-fluid fluid-/$*))
|
||||||
|
(define ($</) (thread-fluid fluid-$</))
|
||||||
|
(define (/$<) (thread-fluid fluid-/$<))
|
||||||
|
(define ($^/) (thread-fluid fluid-$^/))
|
||||||
|
(define (/$^) (thread-fluid fluid-/$^))
|
||||||
|
(define ($+/) (thread-fluid fluid-$+/))
|
||||||
|
(define (/$+) (thread-fluid fluid-/$+))
|
||||||
|
(define ($?/) (thread-fluid fluid-$?/))
|
||||||
|
(define (/$?) (thread-fluid fluid-/$?))
|
||||||
|
|
||||||
|
(define (bind-fluids-human target prereqs prereqs-results thunk)
|
||||||
|
(display "not yet implemented."))
|
||||||
|
|
||||||
|
;;; (define (bind-fluids-human target prereqs prereqs-results thunk)
|
||||||
|
;;; (lambda ()
|
||||||
|
;;; (bind-fluids-gnu target prereqs prereqs-results
|
||||||
|
;;; (lambda ()
|
||||||
|
;;; (let ((target-fname (make-preserved-thread-fluid $@))
|
||||||
|
;;; (prereqs-first (make-preserved-thread-fluid $<))
|
||||||
|
;;; (prereqs-to-build (make-preserved-thread-fluid $?))
|
||||||
|
;;; (prereqs-unique (make-preserved-thread-fluid $^))
|
||||||
|
;;; (prereqs (make-preserved-thread-fluid $+)))
|
||||||
|
;;; (thunk))))))
|
81
packages.scm
81
packages.scm
|
@ -140,7 +140,7 @@
|
||||||
rule-result-build-func
|
rule-result-build-func
|
||||||
rule-make))
|
rule-make))
|
||||||
|
|
||||||
(define-structure make-rule make-rule-interface
|
(define-structure make-rule-cml make-rule-interface
|
||||||
(open scheme-with-scsh
|
(open scheme-with-scsh
|
||||||
locks
|
locks
|
||||||
with-lock
|
with-lock
|
||||||
|
@ -149,23 +149,12 @@
|
||||||
srfi-9
|
srfi-9
|
||||||
finite-types
|
finite-types
|
||||||
collect-channels
|
collect-channels
|
||||||
|
dfs
|
||||||
(with-prefix rendezvous cml-rv/)
|
(with-prefix rendezvous cml-rv/)
|
||||||
(with-prefix rendezvous-channels cml-sync-ch/))
|
(with-prefix rendezvous-channels cml-sync-ch/))
|
||||||
(files make-rule))
|
(files make-rule))
|
||||||
|
|
||||||
(define-interface make-rule-no-cml-interface
|
(define-structure make-rule-no-cml make-rule-interface
|
||||||
(export make-rule
|
|
||||||
is-rule?
|
|
||||||
make-empty-rule-set
|
|
||||||
rule-set-add
|
|
||||||
is-rule-set?
|
|
||||||
make-rule-result
|
|
||||||
is-rule-result?
|
|
||||||
rule-result-wants-build?
|
|
||||||
rule-result-build-func
|
|
||||||
rule-make))
|
|
||||||
|
|
||||||
(define-structure make-rule-no-cml make-rule-no-cml-interface
|
|
||||||
(open scheme-with-scsh
|
(open scheme-with-scsh
|
||||||
locks
|
locks
|
||||||
with-lock
|
with-lock
|
||||||
|
@ -175,22 +164,23 @@
|
||||||
|
|
||||||
(define-interface macros-interface
|
(define-interface macros-interface
|
||||||
(export (makefile :syntax)
|
(export (makefile :syntax)
|
||||||
(rule :syntax)
|
(file :syntax)
|
||||||
(makefile-rule :syntax)
|
(makefile-rule :syntax)
|
||||||
(is-out-of-date? :syntax)
|
(is-out-of-date? :syntax)
|
||||||
(md5 :syntax)
|
(md5 :syntax)
|
||||||
(rule-md5 :syntax)
|
(file-md5 :syntax)
|
||||||
(phony :syntax)
|
(phony :syntax)
|
||||||
(always :syntax)
|
(always :syntax)
|
||||||
(is-out-of-date! :syntax)
|
(is-out-of-date! :syntax)
|
||||||
(once :syntax)
|
(once :syntax)
|
||||||
(rule-once :syntax)))
|
(file-once :syntax)))
|
||||||
|
|
||||||
(define-structure macros macros-interface
|
(define-structure macros macros-interface
|
||||||
(open scheme-with-scsh
|
(open scheme-with-scsh
|
||||||
srfi-1
|
srfi-1
|
||||||
to-rule-set
|
to-rule-set
|
||||||
dfs
|
dfs
|
||||||
|
autovars
|
||||||
templates
|
templates
|
||||||
make-rule)
|
make-rule)
|
||||||
(files macros))
|
(files macros))
|
||||||
|
@ -215,8 +205,9 @@
|
||||||
(define-interface dfs-interface
|
(define-interface dfs-interface
|
||||||
(export make-dfs
|
(export make-dfs
|
||||||
dfs->list
|
dfs->list
|
||||||
|
dfs
|
||||||
dfs-dag-show
|
dfs-dag-show
|
||||||
dfs))
|
sort))
|
||||||
|
|
||||||
(define-structure dfs dfs-interface
|
(define-structure dfs dfs-interface
|
||||||
(open scheme-with-scsh
|
(open scheme-with-scsh
|
||||||
|
@ -238,7 +229,7 @@
|
||||||
(files misc))
|
(files misc))
|
||||||
|
|
||||||
(define-interface templates-interface
|
(define-interface templates-interface
|
||||||
(export make-rule-build-func
|
(export make-file-build-func
|
||||||
make-md5-build-func
|
make-md5-build-func
|
||||||
make-always-build-func
|
make-always-build-func
|
||||||
make-once-build-func
|
make-once-build-func
|
||||||
|
@ -249,10 +240,60 @@
|
||||||
|
|
||||||
(define-structure templates templates-interface
|
(define-structure templates templates-interface
|
||||||
(open scheme-with-scsh
|
(open scheme-with-scsh
|
||||||
|
autovars
|
||||||
srfi-1
|
srfi-1
|
||||||
|
big-util
|
||||||
srfi-13)
|
srfi-13)
|
||||||
(files templates))
|
(files templates))
|
||||||
|
|
||||||
|
(define-interface autovars-interface
|
||||||
|
(export bind-fluids-gnu
|
||||||
|
fluid-$@
|
||||||
|
fluid-$<
|
||||||
|
fluid-$?
|
||||||
|
fluid-$^
|
||||||
|
fluid-$+
|
||||||
|
fluid-$*
|
||||||
|
fluid-$@/
|
||||||
|
fluid-/$@
|
||||||
|
fluid-$*/
|
||||||
|
fluid-/$*
|
||||||
|
fluid-$</
|
||||||
|
fluid-/$<
|
||||||
|
fluid-$^/
|
||||||
|
fluid-/$^
|
||||||
|
fluid-$+/
|
||||||
|
fluid-/$+
|
||||||
|
fluid-$?/
|
||||||
|
fluid-/$?
|
||||||
|
$@
|
||||||
|
$<
|
||||||
|
$?
|
||||||
|
$^
|
||||||
|
$+
|
||||||
|
$*
|
||||||
|
$@/
|
||||||
|
/$@
|
||||||
|
$*/
|
||||||
|
/$*
|
||||||
|
$</
|
||||||
|
/$<
|
||||||
|
$^/
|
||||||
|
/$^
|
||||||
|
$+/
|
||||||
|
/$+
|
||||||
|
$?/
|
||||||
|
/$?
|
||||||
|
bind-fluids-human))
|
||||||
|
|
||||||
|
(define-structure autovars autovars-interface
|
||||||
|
(open scheme-with-scsh
|
||||||
|
make-rule
|
||||||
|
thread-fluids
|
||||||
|
srfi-1
|
||||||
|
srfi-13)
|
||||||
|
(files autovars))
|
||||||
|
|
||||||
(define-structure make (export make)
|
(define-structure make (export make)
|
||||||
(open scheme-with-scsh
|
(open scheme-with-scsh
|
||||||
srfi-1
|
srfi-1
|
||||||
|
@ -261,3 +302,5 @@
|
||||||
to-rule-set
|
to-rule-set
|
||||||
make-rule)
|
make-rule)
|
||||||
(files make))
|
(files make))
|
||||||
|
|
||||||
|
(define make-rule make-rule-cml)
|
||||||
|
|
Loading…
Reference in New Issue