aboutsummaryrefslogtreecommitdiff
path: root/reproduce/src/make
diff options
context:
space:
mode:
Diffstat (limited to 'reproduce/src/make')
-rw-r--r--reproduce/src/make/delete-me.mk73
-rw-r--r--reproduce/src/make/initialize.mk6
-rw-r--r--reproduce/src/make/paper.mk33
3 files changed, 105 insertions, 7 deletions
diff --git a/reproduce/src/make/delete-me.mk b/reproduce/src/make/delete-me.mk
new file mode 100644
index 0000000..a93c2d0
--- /dev/null
+++ b/reproduce/src/make/delete-me.mk
@@ -0,0 +1,73 @@
+# Dummy Makefile to create a random dataset for plotting.
+#
+# Original author:
+# Mohammad Akhlaghi <mohammad@akhlaghi.org>
+# Contributing author(s):
+# Copyright (C) 2018, Your Name.
+#
+# This Makefile is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation, either version 3 of the License, or (at your
+# option) any later version.
+#
+# This Makefile is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+# Public License for more details.
+#
+# A copy of the GNU General Public License is available at
+# <http://www.gnu.org/licenses/>.
+
+
+
+
+
+# Dummy dataset
+# -------------
+#
+# We will use AWK's random number generator to generate a random dataset to
+# be imported by PGFPlots for a plot in the paper.
+dmdir = $(texdir)/delete-me
+dm = $(dmdir)/data.txt
+$(dmdir): | $(texdir); mkdir $@
+$(dm): $(pconfdir)/delete-me-num.mk | $(dmdir)
+
+ # When the plotted values are re-made, it is necessary to also
+ # delete the TiKZ externalized files so the plot is also re-made.
+ rm -f $(tikzdir)/delete-me.pdf
+
+ # Generate the table of random values.
+ awk 'BEGIN { for (i = 1; i <= $(delete-me-num); i++) \
+ print i, rand(); }' > $@
+
+
+
+
+
+# TeX macros
+# ----------
+#
+# This is how we write the necessary parameters in the final PDF.
+#
+# NOTE: In LaTeX you cannot use any non-alphabetic character in a variable
+# name.
+$(mtexdir)/delete-me.tex: $(dm)
+
+ # Write the number of random values used.
+ echo "\newcommand{\deletemenum}{$(delete-me-num)}" > $@
+
+ # Note that since Make variables start with a `$(', if you want to
+ # use `$' within the shell (not Make), you have to quote any
+ # occurance of `$' with another `$'. That is why there are `$$' in
+ # the AWK command below.
+ #
+ # Here, we are first using AWK to find the minimum and maximum
+ # values, then using it again to read each separately to use in the
+ # macro definition.
+ mm=$$(awk 'BEGIN{min=99999; max=-min} \
+ {if($$2>max) max=$$2; if($$2<min) min=$$2;} \
+ END{print min, max}' $(dm)); \
+ v=$$(echo "$$mm" | awk '{printf "%.3f", $$1}'); \
+ echo "\newcommand{\deletememin}{$$v}" >> $@; \
+ v=$$(echo "$$mm" | awk '{printf "%.3f", $$2}'); \
+ echo "\newcommand{\deletememax}{$$v}" >> $@
diff --git a/reproduce/src/make/initialize.mk b/reproduce/src/make/initialize.mk
index 70d77ed..4f134a9 100644
--- a/reproduce/src/make/initialize.mk
+++ b/reproduce/src/make/initialize.mk
@@ -37,6 +37,8 @@
texdir = $(BDIR)/tex
srcdir = reproduce/src
lockdir = $(BDIR)/locks
+texbdir = $(texdir)/build
+tikzdir = $(texbdir)/tikz
mtexdir = $(texdir)/macros
gconfdir = reproduce/config/gnuastro
pconfdir = reproduce/config/pipeline
@@ -100,10 +102,10 @@ $(pconfdir)/LOCAL.mk:
# option: they add too many extra checks that make it hard to find what you
# are looking for in this pipeline.
.SUFFIXES:
-$(mtexdir): | $(texdir); mkdir $@
+$(tikzdir): | $(texbdir); mkdir $@
$(BDIR): | $(pconfdir)/LOCAL.mk; mkdir $@
$(texdir) $(lockdir): | $(BDIR); mkdir $@
-
+$(mtexdir) $(texbdir): | $(texdir); mkdir $@
diff --git a/reproduce/src/make/paper.mk b/reproduce/src/make/paper.mk
index db20279..f3db1de 100644
--- a/reproduce/src/make/paper.mk
+++ b/reproduce/src/make/paper.mk
@@ -22,16 +22,39 @@
+# The bibliography
+# ----------------
+#
+# We need to run the `biber' program on the output of LaTeX to generate the
+# necessary bibliography before making the final paper.
+#
+# NOTE: `tex/pipeline.tex' is an order-only-prerequisite for
+# `paper.bbl'. This is because we need to run LaTeX in both the `paper.bbl'
+# recipe and the `paper.pdf' recipe. But if `tex/references.tex' hasn't
+# been modified, we don't want to re-build the bibliography, only the final
+# PDF.
+$(texbdir)/paper.bbl: tex/references.tex \
+ | $(tikzdir) $(texbdir) tex/pipeline.tex
+
+ # We'll run LaTeX first to generate the `.bcf' file (necessary for
+ # `biber') and then run `biber' to generate the `.bbl' file.
+ p=$$(pwd); \
+ export TEXINPUTS=$$p:$$TEXINPUTS; \
+ cd $(texbdir); \
+ pdflatex -shell-escape -halt-on-error $$p/paper.tex; \
+ biber paper
+
+
+
+
+
# The final paper
# ---------------
#
# The commands to build the final report. We want the pipeline version to
# be checked everytime the final PDF is to be built.
-texbdir=$(texdir)/build
-tikzdir=$(texbdir)/tikz
-$(texbdir): | $(texdir); mkdir $@
-$(tikzdir): | $(texbdir); mkdir $@
-paper.pdf: tex/pipeline.tex paper.tex | $(tikzdir) $(texbdir)
+paper.pdf: tex/pipeline.tex paper.tex $(texbdir)/paper.bbl \
+ | $(tikzdir) $(texbdir)
# Make the report.
p=$$(pwd); \