.SECONDEXPANSION: sim/%/.topology: SIM_MODEL=$(shell echo -n "$(@D)/" | tac -s/ | cut -s -d/ -f2) sim/%/.topology: SIM_SEED= $(shell echo -n "$(@D)/" | tac -s/ | cut -s -d/ -f1) %/.topology: bin/$$(SIM_MODEL)-convert_topology @echo "Generating topology for model $(SIM_MODEL) with random seed $(SIM_SEED)" @mkdir -p "$(shell dirname $@)" @[ ! -f "$@" -a ! -f "$@.prelim" ] || toolbin/warn_data @date > "$@.prelim" @R=`pwd`; cd "$(shell dirname $@)" && $$R/octave/random_topo.octave $(SIM_SEED) 2>plain_topology | grep --line-buffered '^generation' @R=`pwd`; cd "$(shell dirname $@)" && $$R/bin/$(SIM_MODEL)-convert_topology "$@" @rm "$@.prelim" .SECONDEXPANSION: sim/%/.bootstrap: SIM_MODEL=$(shell echo -n "$(@D)/" | tac -s/ | cut -s -d/ -f2) sim/%/.bootstrap: SIM_SEED= $(shell echo -n "$(@D)/" | tac -s/ | cut -s -d/ -f1) %/.bootstrap: bin/$$(SIM_MODEL)-bootstrap %/.topology @echo "Bootstrapping model $(SIM_MODEL) with random seed $(SIM_SEED)" @mkdir -p "$(shell dirname $@)" @[ ! -f "$@" -a ! -f "$@.prelim" ] || toolbin/warn_data @date > "$@.prelim" @R=`pwd`; cd "$(shell dirname $@)" && $$R/bin/$(SIM_MODEL)-bootstrap $(SIM_SEED) @date > "$@" @rm "$@.prelim" # sim/$model/$seed/.$time.simulate .SECONDEXPANSION: sim/%.simulate: SIM_MODEL=$(shell echo -n "$(@D)/" | tac -s/ | cut -s -d/ -f2) sim/%.simulate: SIM_UNTIL=$(shell basename "$(@F)" | sed 's/.\(.*\).simulate/\1/') sim/%.simulate: bin/$$(SIM_MODEL)-simulate $$(shell dirname sim/%)/.bootstrap @echo "=== Simulating model $(SIM_MODEL) until $(SIM_UNTIL) ===" @[ -n "$(SIM_MODEL)" -a -n "$(SIM_SEED)" -a -n "$(SIM_UNTIL)" ] || (echo "missing sim parameter"; false) @R=`pwd`; cd "$(shell dirname $@)" && flock -o .lock $$R/bin/$(SIM_MODEL)-simulate $(SIM_UNTIL) 2>.$(SIM_UNTIL).simulate.log @date > "$@"