place example makefiles
This commit is contained in:
		| @@ -12,13 +12,86 @@ colortheme: | ||||
|  | ||||
| # Intro | ||||
|  | ||||
| The fundamental problem: | ||||
|  | ||||
| ```bash | ||||
| git submodule update --init soundscape | ||||
| cargo build --release | ||||
| install -pm755 target/release/tap /usr/local/bin/ | ||||
| ``` | ||||
|  | ||||
| You can't type this after every test. | ||||
|  | ||||
| *** | ||||
|  | ||||
| ## First Solution | ||||
|  | ||||
| ```bash | ||||
| #!/bin/sh | ||||
| git submodule update --init soundscape | ||||
| cargo build --release | ||||
| install -pm755 target/release/tap /usr/local/bin/ | ||||
| ``` | ||||
|  | ||||
| At this point, every test takes 10 minutes. | ||||
|  | ||||
| ## Second Solution | ||||
|  | ||||
| ```bash | ||||
| #!/bin/sh | ||||
| [ -f soundscape/.git ] || git submodule update --init soundscape | ||||
| [ -f target/release/tap ] || cargo build --release | ||||
| [ -f target/release/tap ] || \ | ||||
|     install -pm755 target/release/tap /usr/local/bin/ | ||||
| ``` | ||||
|  | ||||
| *** | ||||
|  | ||||
| # Makefile Solutions | ||||
|  | ||||
| - input, process, output. | ||||
| - automatic idempotence | ||||
|  | ||||
| ```bash | ||||
| INSTALL_DIR = /usr/local/bin | ||||
|  | ||||
| soundscape/.git: | ||||
|     git submodule update --init soundscape | ||||
|  | ||||
| /usr/local/bin/tap: target/release/tap | ||||
| 	install -pm755 target/release/tap $(INSTALL_DIR) | ||||
|  | ||||
| target/release/tap: src soundscape/.git | ||||
| 	cargo build --release | ||||
| ``` | ||||
|  | ||||
| *** | ||||
|  | ||||
| # Basic | ||||
|  | ||||
| - *Gotcha*: directories | ||||
| - This, that, and these | ||||
|  | ||||
| *** | ||||
|  | ||||
| ## Repetition, Repetition, Repetition | ||||
|  | ||||
| ```make | ||||
| .PHONY: output | ||||
| output: release/index.html | ||||
|  | ||||
| release/: backups.zip | ||||
| 	mkdir $@ | ||||
|  | ||||
| release/index.html: index.html release/ | ||||
| 	cp  $< $@ | ||||
|  | ||||
| index.html: backups.zip | ||||
| 	unzip $< | ||||
| ``` | ||||
|  | ||||
| *** | ||||
|  | ||||
| # Variables | ||||
|  | ||||
| - From your shell. | ||||
| @@ -59,7 +132,6 @@ colortheme: | ||||
|  | ||||
| *** | ||||
|  | ||||
|  | ||||
| # Bling: make2graph | ||||
|  | ||||
| - *Gotcha*: completely outdated. | ||||
| @@ -75,8 +147,8 @@ colortheme: | ||||
|  | ||||
| # Special Commands | ||||
|  | ||||
| - dirname | ||||
| - `DIR = test -d $(dirname $@) || mkdir $(dirname $@)` | ||||
| - dir | ||||
| - `DIR = test -d $(dir $@) || mkdir $(dir $@)` | ||||
| - patsubst | ||||
| - Wildcards (or not?) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user