small sample scsh-script using make in scsh
This commit is contained in:
parent
e9b3d3d6ec
commit
c0ece4c94b
|
@ -0,0 +1,86 @@
|
||||||
|
(define at-uni? #t)
|
||||||
|
(define pred string=?)
|
||||||
|
|
||||||
|
(define obj-rules
|
||||||
|
(list
|
||||||
|
(file-rx (rx (: (submatch "") (submatch (+ any)) (submatch ".o")))
|
||||||
|
(list "%.c" "%.h")
|
||||||
|
(lambda () (run (gcc -fPIC -c ,(string-append ($*) ".c")))))))
|
||||||
|
|
||||||
|
(define lib-rules
|
||||||
|
(list
|
||||||
|
(md5-% "lib%.so.1.0"
|
||||||
|
(list "%.o")
|
||||||
|
(lambda () (run (gcc -shared
|
||||||
|
,(string-append "-Wl,-soname," ($=*) ".so.1")
|
||||||
|
-o ,($@) ,($<)))))
|
||||||
|
|
||||||
|
(file-% "lib%.so.1"
|
||||||
|
(list "lib%.so.1.0")
|
||||||
|
(lambda () (create-symlink ($<) ($@))))
|
||||||
|
|
||||||
|
(file-% "lib%.so"
|
||||||
|
(list "lib%.so.1")
|
||||||
|
(lambda () (create-symlink ($<) ($@))))))
|
||||||
|
|
||||||
|
(define tex-rules
|
||||||
|
(list
|
||||||
|
(file-% "%.dvi"
|
||||||
|
(list "%.tex")
|
||||||
|
(lambda () (run (latex ,($<)))))
|
||||||
|
(file-% "%.pdf"
|
||||||
|
(list "%.dvi")
|
||||||
|
(lambda () (run (dvipdfm -o ,($@) ,($<)))))
|
||||||
|
(file-% "%.ps"
|
||||||
|
(list "%.dvi")
|
||||||
|
(lambda () (run (dvips -o ,($@) ,($<)))))))
|
||||||
|
|
||||||
|
(define proggy
|
||||||
|
(if at-uni?
|
||||||
|
(file->rc "show-sqrt"
|
||||||
|
(list "main.c" "libmymath.so.1"
|
||||||
|
"libwildio.so.1" "wildio.h" "mymath.h")
|
||||||
|
(lambda () (run (gcc -L ,(cwd) ,(ldflags) -rdynamic
|
||||||
|
-o ,($@) ,($<)
|
||||||
|
,"libwildio.so.1" ,"libmymath.so.1" -lc))))
|
||||||
|
(file->rc "show-sqrt"
|
||||||
|
(list "main.c" "libmymath.so.1"
|
||||||
|
"libwildio.so.1" "wildio.h" "mymath.h")
|
||||||
|
(lambda () (run (gcc -L ,(cwd) -rdynamic -o ,($@) ,($<)
|
||||||
|
,"libwildio.so.1" ,"libmymath.so.1" -ldl))))))
|
||||||
|
|
||||||
|
(define manuals
|
||||||
|
(let* ((prefixes (list "a" "b" "c" "d")))
|
||||||
|
(append
|
||||||
|
(map (lambda (pre)
|
||||||
|
(string-append pre "-manual.dvi"))
|
||||||
|
prefixes)
|
||||||
|
(map (lambda (pre)
|
||||||
|
(string-append pre "-manual.ps"))
|
||||||
|
prefixes)
|
||||||
|
(map (lambda (pre)
|
||||||
|
(string-append pre "-manual.pdf"))
|
||||||
|
prefixes))))
|
||||||
|
|
||||||
|
(define install
|
||||||
|
(always->rc "install"
|
||||||
|
(append (list "show-sqrt") manuals)
|
||||||
|
(lambda ()
|
||||||
|
(for-each (lambda (f) (display ">>> ") (display f) (newline)) ($+))
|
||||||
|
(display "install done.\n"))))
|
||||||
|
|
||||||
|
(define clean
|
||||||
|
(always->rc "clean"
|
||||||
|
(list)
|
||||||
|
(lambda ()
|
||||||
|
(for-each (lambda (f)
|
||||||
|
(delete-filesys-object (expand-file-name f (cwd))))
|
||||||
|
(append manuals (list "show-sqrt"))))))
|
||||||
|
|
||||||
|
(define rcs (list proggy install clean))
|
||||||
|
(define commons (append obj-rules lib-rules tex-rules))
|
||||||
|
|
||||||
|
(define rules (rcs+commons->rules pred rcs commons))
|
||||||
|
;; (define rule-set (rules->rule-set rules))
|
||||||
|
|
||||||
|
(define done (make rules (list "clean" "install")))
|
|
@ -37,7 +37,7 @@
|
||||||
(let ((maybe-fname (find (lambda (current)
|
(let ((maybe-fname (find (lambda (current)
|
||||||
(pred fname (car current)))
|
(pred fname (car current)))
|
||||||
rcs)))
|
rcs)))
|
||||||
(if maybe-fname maybe-fname (error "lookup-fname: fname not found."))))
|
(if maybe-fname maybe-fname #f)))
|
||||||
|
|
||||||
(define (lookup-rule pred fname rules)
|
(define (lookup-rule pred fname rules)
|
||||||
(let ((maybe-rule (find (lambda (current)
|
(let ((maybe-rule (find (lambda (current)
|
||||||
|
|
Loading…
Reference in New Issue