place example makefiles

This commit is contained in:
Malin Freeborn 2024-11-13 14:23:44 +01:00
parent a9f7fd7f75
commit e59538a3bd
Signed by: andonome
GPG Key ID: 52295D2377F4D70F
3 changed files with 103 additions and 3 deletions

View File

@ -0,0 +1,13 @@
forts/big_fort.txt: forts/short.txt forts/long.txt
cat forts/short.txt forts/long.txt > forts/big_fort.txt
forts/:
mkdir forts
forts/short.txt: forts/
fortune -s > forts/short.txt
forts/long.txt: forts/
fortune -l > forts/long.txt

View File

@ -0,0 +1,15 @@
forts/big_fort.txt: forts/short.txt forts/long.txt
cat $^ > $@
forts/:
mkdir $@
forts/short.txt: forts/
fortune -s > $@
forts/long.txt: forts/
fortune -l > $@
clean:
rm -rf forts

View File

@ -12,13 +12,86 @@ colortheme:
# Intro # 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. - input, process, output.
- automatic idempotence - 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 - *Gotcha*: directories
- This, that, and these - 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 # Variables
- From your shell. - From your shell.
@ -59,7 +132,6 @@ colortheme:
*** ***
# Bling: make2graph # Bling: make2graph
- *Gotcha*: completely outdated. - *Gotcha*: completely outdated.
@ -75,8 +147,8 @@ colortheme:
# Special Commands # Special Commands
- dirname - dir
- `DIR = test -d $(dirname $@) || mkdir $(dirname $@)` - `DIR = test -d $(dir $@) || mkdir $(dir $@)`
- patsubst - patsubst
- Wildcards (or not?) - Wildcards (or not?)