; -*- scheme -*-

(define-goal "clean" (target)
  () #t #f
  (andmap (lambda (entry) (apply spawn 0 "rm -f" entry)) *binaries*))

(include "../Build.rules")

(define-file-goal "(.*)\.o" (target base)
  ((src (string-append base ".c")))
  (spawn 0 "gcc -o" target "-c" src))

(define-file-goal "(.*)\.o" (target base)
  ((src (string-append base ".cc")))
  (spawn 0 "g++ -o" target "-c" src))

(define-file-goal ".*\.cc" (target)
  ((src (string-append target ".m4")))
  (spawn 0 "m4 <" src ">" target))

(define *binaries* '(("x" "a.o" "b.o")))

(for-each (lambda (entry)
	    (let ((target (car entry))
		  (deps (cdr entry)))
	      (define-file-goal target ($@)
		((deps deps))
		(apply spawn 0 "gcc -o" $@ deps))))
	  *binaries*)

(for-each add-target! (map car *binaries*))
