27 lines
579 B
Racket
27 lines
579 B
Racket
#lang racket
|
|
|
|
(require racket-makefile)
|
|
|
|
;; A makefile body is ordinary Racket. Target names that are expressions are
|
|
;; evaluated while the makefile is registered, so a loop can generate targets.
|
|
|
|
(makefile 'stuff
|
|
(define sources '("foo.c" "bar.c" "baz.c"))
|
|
|
|
(define objects
|
|
(for/list ([src sources])
|
|
(define obj (path-replace-extension src #".o"))
|
|
(target obj
|
|
(deps src)
|
|
(run `(cc -c $< -o $target)))
|
|
obj))
|
|
|
|
(default-target 'all)
|
|
(phony 'all 'clean)
|
|
|
|
(target 'all
|
|
(deps objects))
|
|
|
|
(target 'clean
|
|
(apply rm-f objects)))
|