aboutsummaryrefslogtreecommitdiff
path: root/reproduce/src/make/initialize.mk
diff options
context:
space:
mode:
Diffstat (limited to 'reproduce/src/make/initialize.mk')
-rw-r--r--reproduce/src/make/initialize.mk114
1 files changed, 114 insertions, 0 deletions
diff --git a/reproduce/src/make/initialize.mk b/reproduce/src/make/initialize.mk
new file mode 100644
index 0000000..2da5e79
--- /dev/null
+++ b/reproduce/src/make/initialize.mk
@@ -0,0 +1,114 @@
+# Initialize the reproduction pipeline.
+#
+# Original author:
+# Your name <your@email.address>
+# Contributing author(s):
+# Copyright (C) YYYY, 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/>.
+
+
+
+
+
+# High-level directory definitions
+# --------------------------------
+#
+# Basic directories that are used throughout the whole pipeline.
+#
+# Locks are used to make sure that an operation is done in series not in
+# parallel (even if Make is run in parallel with the `-j' option). The most
+# common case is downloads which are better done in series and not in
+# parallel. Also, some programs may not be thread-safe, therefore it will
+# be necessary to put a lock on them. This pipeline uses the `flock'
+# program to achieve this.
+texdir = $(BDIR)/tex
+lockdir = $(BDIR)/locks
+bdirsym = reproduce/build
+mtexdir = $(texdir)/macros
+pconfdir = reproduce/config/pipeline
+
+
+
+
+
+# Make the high-level level directories
+# ------------------------------
+#
+# These are just the top-level directories for all the separate steps. The
+# directories (or possible sub-directories) for individual steps will be
+# defined and added within their own Makefiles.
+$(BDIR):; mkdir $@;
+$(mtexdir): | $(texdir); mkdir $@
+$(texdir) $(lockdir): | $(BDIR); mkdir $@
+
+
+
+
+
+# High-level Makefile management
+# ------------------------------
+#
+# About `.PHONY': these are targets that must be built even if a file with
+# their name exists. Most don't correspond to a file, but those that do are
+# included here ensure that the file is always built in every run: for
+# example the pipeline versions may change within two separate runs, so we
+# want it to be rebuilt every time.
+.PHONY: all clean clean-mmap $(texdir)/versions.tex
+clean-mmap:; rm -f reproduce/config/gnuastro/mmap*
+clean:
+ rm -rf $(BDIR) $(bdirsym) *.pdf *.log *.out *.aux *.auxlock \
+ reproduce/config/gnuastro/mmap*
+
+
+
+
+
+# Pipeline version
+# ----------------
+#
+# The pipeline's version is necessary for the analysis and must be
+# calculated everytime the pipeline is run, so even though this file
+# actually exists, it is also aded as a `.PHONY' target above.
+$(mtexdir)/initialize.tex: | $(mtexdir)
+
+ @v=$$(git describe --dirty --always); \
+ echo "\newcommand{\pipelineversion}{$$v}" > $@
+
+ @v=$$(astnoisechisel --version | awk 'NR==1{print $$NF}'); \
+ echo "\newcommand{\gnuastroversion}{$$v}" >> $@
+
+ echo "\newcommand{\bdir}{$(BDIR)}" >> $@
+
+
+
+
+
+# Symbolic link to build directory
+# --------------------------------
+#
+# Besides $(BDIR), we are also making a symbolic link to it if $(bdirsym)
+# is not empty. In case this symbolic link is not needed, simply remove its
+# value from the definitions above. In that case, it will be read as a
+# blank (non-existant).
+#
+# Note that $(BDIR) might not be an absolute path and this will complicate
+# the symbolic link creation. To be generic, we'll first call `readlink' to
+# make sure we have an absolute address, then we'll make a symbolic link to
+# that.
+ifneq ($(bdirsym),)
+$(bdirsym): | $(BDIR)
+ absbdir=$$(readlink -f $(BDIR)); \
+ ln -s $$absbdir $(bdirsym)
+endif