pcms := 5m.pcm 10m.pcm 15m.pcm oggs := $(pcms:.pcm=.ogg) mp3s := $(pcms:.pcm=.mp3) artist := "Tomasz Kramkowski" genre := Electronic album := Beeps year := 2024 tracknum_5m := 3 title_5m := "Large Beeps" tracknum_10m := 2 title_10m := "Versatile Beeps" tracknum_15m := 1 title_15m := "Medium Beeps" get = $($(1)_$(2)) all: ogg mp3 ogg: $(oggs) mp3: $(mp3s) 5m.pcm: duration := 300 10m.pcm: duration := 600 15m.pcm: duration := 900 %.ogg: %.pcm GNUmakefile oggenc --quiet --raw --raw-bits=8 --raw-chan=1 --raw-rate=8000 --quality=5 \ --artist=$(artist) --genre=$(genre) --date=$(year) \ --tracknum=$(call get,tracknum,$*) --title=$(call get,title,$*) \ --album=$(album) --output=$@ $< %.mp3: %.pcm GNUmakefile lame --quiet -r -s 8 --bitwidth 8 --unsigned -m m -V 4 \ --tt $(call get,title,$*) --ta $(artist) --tl $(album) --ty $(year) \ --tn $(call get,tracknum,$*) --tg $(genre) --noreplaygain $< $@ $(pcms): target/release/beeps GNUmakefile $< $(duration) >$@ target/release/beeps: Cargo.lock Cargo.toml beeps.rs GNUmakefile cargo build --release clean: rm $(oggs) $(mp3s) $(pcms) cargo clean .PHONY: all ogg mp3 clean