# racket-makefile `racket-makefile` is a small `#lang` for make-style builds. It keeps ordinary Racket available and only adds targets, dependencies, timestamp based rebuilds, phony targets, external command execution and a few cleanup helpers. ```racket #lang racket-makefile (define CC 'cc) (define CFLAGS '(-Wall -O2)) (default-target all) (phony all clean) (target all (deps "hello")) (target "hello" (deps "hello.c") (run `(,CC ,@CFLAGS -o $target $<))) (target clean (rm-f "hello") (rm-rf "compiled") (cleanup "scrbl" '("**.html" "**.js" "**.css"))) ``` Install a local checkout with: ```text raco pkg install ``` For a versioned archive, give the package name explicitly: ```text raco pkg install --name racket-makefile racket-makefile-0.1.1.zip ``` Run the default target or select one or more targets explicitly: ```text racket Makefile.rkt racket Makefile.rkt clean racket Makefile.rkt clean all ``` The language adds `target`, `deps`, `phony`, `default-target`, `run`, `rm-f`, `rm-rf`, `cleanup`, `$target`, `$deps` and `$<`. Dependency expressions may also produce lists, which are automatically flattened. Everything else is ordinary Racket. See the installed `racket-makefile` Scribble documentation for the full API.