Files

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)))