The define ... endef block is a multi-line variable. Its just some code we’de like to copy-paste into out recipies

define run_script
	@echo "\nRunning $<"
	Rscript --vanilla "$<"
	@echo "Finished running $<"
endef
# Define a multiline varaible to call Rscript
define run_script
	@echo "\nRunning $<"
	Rscript --vanilla "$<"
	@echo "Finished running $<"
endef

all: \
 make_dirs \
./data-simtracks-01_tracks.rds \
./data-simtracks-02_toa.rds \
./data-simtracks-03_ektoa_fits.rds \
./data-simtracks-04_error.rds \
./figures/fig_simtracks_05_diff_resid.png \
./figures/fig_simtracks_05_exmp_resid.png \
./figures/fig_simtracks_05_exmp_diff_resid.png \
./figures/fig_simtracks_05_KS-stat.png \
./figures/fig_simtracks_05_pos_err.png \
./figures/fig_simtracks_05_paired_resid_sim.png \
./figures/fig_simtracks_06_sim_methods.png \
./data-casestudy-01_fit_ekal.rds \
./data-casestudy-02_fit_tdoa.rds \
./data-casestudy-03_conf_int.rds \
./figures/fig_casestudy_04_01.png \
./figures/fig_casestudy_04_02.png \
./figures/fig_misc_01_vel.png \
./figures/fig_map.png

	@echo "\nFinished building analysis"

make_dirs:
	mkdir -p proofing
	mkdir -p figures

data-simtracks-01_tracks.rds: \
script-simtracks-01_generate.R \
script-simtracks-01_generate_fcns.R
	$(run_script)

data-simtracks-02_toa.rds: \
script-simtracks-02_toa.R \
./data-simtracks-01_tracks.rds
	$(run_script)

data-simtracks-03_ektoa_fits.rds: \
script-simtracks-03_ektoa_positioning.R \
./data-simtracks-02_toa.rds \
./data-simtracks-01_tracks.rds
	$(run_script)

data-simtracks-04_error.rds: \
script-simtracks-04_analysis.R \
./data-simtracks-03_ektoa_fits.rds \
./data-simtracks-01_tracks.rds
	$(run_script)

./figures/fig_simtracks_05_diff_resid.png \
./figures/fig_simtracks_05_exmp_diff_resid.png \
./figures/fig_simtracks_05_exmp_resid.png \
./figures/fig_simtracks_05_KS-stat.png \
./figures/fig_simtracks_05_pos_err.png \
./figures/fig_simtracks_05_paired_resid_sim.png: \
script-simtracks-05_reporting.R \
./data-simtracks-04_error.rds \
./data-simtracks-01_tracks.rds \
./data-simtracks-03_ektoa_fits.rds
	$(run_script)

./figures/fig_simtracks_06_sim_methods.png: \
script-simtracks-06_methods_fig.R \
./data-simtracks-04_error.rds \
./data-simtracks-01_tracks.rds \
./data-simtracks-03_ektoa_fits.rds
	$(run_script)

data-casestudy-01_fit_ekal.rds: script-casestudy-01_fitKalman.R
	$(run_script)

data-casestudy-02_fit_tdoa.rds: \
script-casestudy-02_fitTDOA.R \
data-casestudy-01_fit_ekal.rds
	$(run_script)

data-casestudy-03_conf_int.rds ./data-casestudy-03_pos_sens.rds: \
	script-casestudy-03_conf_ellp.R \
	./data-casestudy-01_fit_ekal.rds
	$(run_script)

./figures/fig_casestudy_04_01.png ./figures/fig_casestudy_04_02.png: \
script-casestudy-04_plots.R \
./data-casestudy-01_fit_ekal.rds \
./data-casestudy-02_fit_tdoa.rds \
./data-casestudy-03_conf_int.rds
	$(run_script)

./figures/fig_misc_01_vel.png: script_misc_01_step_len_distributions.R
	$(run_script)

./figures/fig_map.png: script_map.R
	$(run_script)

.PHONY: clean figures make_dirs

figures: make_dirs
	Rscript --vanilla "script_misc_01_step_len_distributions.R"
	Rscript --vanilla "script-simtracks-05_reporting.R"
	Rscript --vanilla "script-simtracks-06_methods_fig.R"
	Rscript --vanilla "script-casestudy-04_plots.R"

clean:
	# Delete all figures and temporary files
	rm ./figures/*
	rm ./proofing/*
	rm ./*.rds