aboutsummaryrefslogtreecommitdiff
path: root/reproduce/src/make
diff options
context:
space:
mode:
Diffstat (limited to 'reproduce/src/make')
-rw-r--r--reproduce/src/make/dependencies-basic.mk53
-rw-r--r--reproduce/src/make/dependencies-build-rules.mk4
-rw-r--r--reproduce/src/make/dependencies.mk172
-rw-r--r--reproduce/src/make/initialize.mk1
4 files changed, 118 insertions, 112 deletions
diff --git a/reproduce/src/make/dependencies-basic.mk b/reproduce/src/make/dependencies-basic.mk
index 0372d7d..c9bb4e1 100644
--- a/reproduce/src/make/dependencies-basic.mk
+++ b/reproduce/src/make/dependencies-basic.mk
@@ -86,7 +86,6 @@ all: $(foreach p, $(top-level-programs), $(ibdir)/$(p))
# However, downloading from this link is slow (because its just a link). So
# its easier to just keep a with the others.
tarballs = $(foreach t, bash-$(bash-version).tar.gz \
- binutils-$(binutils-version).tar.lz \
bzip2-$(bzip2-version).tar.gz \
gzip-$(gzip-version).tar.gz \
lzip-$(lzip-version).tar.gz \
@@ -94,7 +93,6 @@ tarballs = $(foreach t, bash-$(bash-version).tar.gz \
tar-$(tar-version).tar.gz \
which-$(which-version).tar.gz \
xz-$(xz-version).tar.gz \
- zlib-$(zlib-version).tar.gz \
, $(tdir)/$(t) )
$(tarballs): $(tdir)/%:
if [ -f $(DEPENDENCIES-DIR)/$* ]; then \
@@ -106,7 +104,6 @@ $(tarballs): $(tdir)/%:
\
mergenames=1; \
if [ $$n = bash ]; then w=http://ftp.gnu.org/gnu/bash; \
- elif [ $$n = binutils ]; then w=http://ftp.gnu.org/gnu/binutils; \
elif [ $$n = bzip ]; then w=http://akhlaghi.org/src; \
elif [ $$n = gzip ]; then w=http://akhlaghi.org/src; \
elif [ $$n = lzip ]; then w=http://download.savannah.gnu.org/releases/lzip; \
@@ -114,7 +111,6 @@ $(tarballs): $(tdir)/%:
elif [ $$n = tar ]; then w=http://ftp.gnu.org/gnu/tar; \
elif [ $$n = which ]; then w=http://ftp.gnu.org/gnu/which; \
elif [ $$n = xz ]; then w=http://tukaani.org/xz; \
- elif [ $$n = zlib ]; then w=http://www.zlib.net; \
else \
echo; echo; echo; \
echo "'$$n' not a basic dependency name (for downloading)." \
@@ -135,7 +131,7 @@ $(tarballs): $(tdir)/%:
# GNU Gzip.
$(ibdir)/gzip: $(tdir)/gzip-$(gzip-version).tar.gz
- $(call gbuild,$(subst $(tdir)/,,$<), gzip-$(gzip-version), static)
+ $(call gbuild, $<, gzip-$(gzip-version), static)
@@ -145,24 +141,9 @@ $(ibdir)/gzip: $(tdir)/gzip-$(gzip-version).tar.gz
# LDFLAGS on the command-line (not from the environment).
$(ibdir)/lzip: $(tdir)/lzip-$(lzip-version).tar.gz
ifeq ($(static_build),yes)
- $(call gbuild,$(subst $(tdir)/,,$<), lzip-$(lzip-version), , \
- LDFLAGS="-static")
+ $(call gbuild, $<, lzip-$(lzip-version), , LDFLAGS="-static")
else
- $(call gbuild,$(subst $(tdir)/,,$<), lzip-$(lzip-version))
-endif
-
-
-
-
-
-# Zlib: its `./configure' doesn't use Autoconf's configure script, it just
-# accepts a direct `--static' option.
-$(ildir)/libz.a: $(tdir)/zlib-$(zlib-version).tar.gz
-ifeq ($(static_build),yes)
- $(call gbuild,$(subst $(tdir)/,,$<), zlib-$(zlib-version), , \
- --static)
-else
- $(call gbuild,$(subst $(tdir)/,,$<), zlib-$(zlib-version))
+ $(call gbuild, $<, lzip-$(lzip-version))
endif
@@ -171,7 +152,7 @@ endif
# XZ Utils
$(ibdir)/xz: $(tdir)/xz-$(xz-version).tar.gz
- $(call gbuild,$(subst $(tdir)/,,$<), xz-$(xz-version), static)
+ $(call gbuild, $<, xz-$(xz-version), static)
@@ -200,18 +181,7 @@ $(ibdir)/tar: $(tdir)/tar-$(tar-version).tar.gz \
$(ibdir)/lzip \
$(ibdir)/gzip \
$(ibdir)/xz
- $(call gbuild,$(subst $(tdir)/,,$<), tar-$(tar-version))
-
-
-
-
-
-# GNU Binutils:
-$(ibdir)/nm: $(tdir)/binutils-$(binutils-version).tar.lz \
- $(ibdir)/tar \
- $(ildir)/libz.a
- $(call gbuild,$(subst $(tdir)/,,$<), binutils-$(binutils-version), \
- static)
+ $(call gbuild, $<, tar-$(tar-version))
@@ -219,9 +189,8 @@ $(ibdir)/nm: $(tdir)/binutils-$(binutils-version).tar.lz \
# GNU Which:
$(ibdir)/which: $(tdir)/which-$(which-version).tar.gz \
- $(ibdir)/tar \
- $(ibdir)/nm
- $(call gbuild,$(subst $(tdir)/,,$<), which-$(which-version), static)
+ $(ibdir)/tar
+ $(call gbuild, $<, which-$(which-version), static)
@@ -233,9 +202,8 @@ $(ibdir)/which: $(tdir)/which-$(which-version).tar.gz \
# `--disable-load', but unfortunately I don't know any way to fix the
# second. So, we'll have to build it dynamically for now.
$(ibdir)/make: $(tdir)/make-$(make-version).tar.lz \
- $(ibdir)/tar \
- $(ibdir)/nm
- $(call gbuild,$(subst $(tdir)/,,$<), make-$(make-version))
+ $(ibdir)/tar
+ $(call gbuild, $<, make-$(make-version))
@@ -246,8 +214,7 @@ $(ibdir)/bash: $(tdir)/bash-$(bash-version).tar.gz \
$(ibdir)/which \
$(ibdir)/make
ifeq ($(static_build),yes)
- $(call gbuild,$(subst $(tdir)/,,$<), bash-$(bash-version), , \
- --enable-static-link)
+ $(call gbuild, $<, bash-$(bash-version), , --enable-static-link)
else
$(call gbuild,$(subst $(tdir)/,,$<), bash-$(bash-version))
endif
diff --git a/reproduce/src/make/dependencies-build-rules.mk b/reproduce/src/make/dependencies-build-rules.mk
index e0d91ef..25e2444 100644
--- a/reproduce/src/make/dependencies-build-rules.mk
+++ b/reproduce/src/make/dependencies-build-rules.mk
@@ -53,7 +53,7 @@ gbuild = if [ x$(static_build) = xyes ] && [ $(3)x = staticx ]; then \
fi; \
check="$(6)"; \
if [ x"$$check" = x ]; then check="echo Skipping-check"; fi; \
- cd $(ddir) && rm -rf $(2) && tar xf $(tdir)/$(1) && cd $(2) && \
+ cd $(ddir) && rm -rf $(2) && tar xf $(1) && cd $(2) && \
./configure $(4) --prefix=$(idir) && \
make $(5) && \
$$check && \
@@ -70,7 +70,7 @@ cbuild = if [ x$(static_build) = xyes ] && [ $(3)x = staticx ]; then \
export LDFLAGS="$$LDFLAGS -static"; \
opts="-DBUILD_SHARED_LIBS=OFF"; \
fi; \
- cd $(ddir) && rm -rf $(2) && tar xf $(tdir)/$(1) && cd $(2) && \
+ cd $(ddir) && rm -rf $(2) && tar xf $(1) && cd $(2) && \
rm -rf pipeline-build && mkdir pipeline-build && \
cd pipeline-build && \
cmake .. $$opts $(4) && \
diff --git a/reproduce/src/make/dependencies.mk b/reproduce/src/make/dependencies.mk
index 156f254..010f3a4 100644
--- a/reproduce/src/make/dependencies.mk
+++ b/reproduce/src/make/dependencies.mk
@@ -35,15 +35,16 @@ include reproduce/src/make/dependencies-build-rules.mk
include reproduce/config/pipeline/dependency-texlive.mk
include reproduce/config/pipeline/dependency-versions.mk
-ddir = $(BDIR)/dependencies
-tdir = $(BDIR)/dependencies/tarballs
-idir = $(BDIR)/dependencies/installed
-ibdir = $(BDIR)/dependencies/installed/bin
-ildir = $(BDIR)/dependencies/installed/lib
+ddir = $(BDIR)/dependencies
+tdir = $(BDIR)/dependencies/tarballs
+idir = $(BDIR)/dependencies/installed
+ibdir = $(BDIR)/dependencies/installed/bin
+ildir = $(BDIR)/dependencies/installed/lib
+ilidir = $(BDIR)/dependencies/installed/lib/built
# Define the top-level programs to build (installed in `.local/bin', so for
# Coreutils, only one of its executables is enough).
-top-level-programs = ls gawk gs grep libtool sed git latex astnoisechisel
+top-level-programs = ls gawk gs grep libtool sed git astnoisechisel texlive-ready
all: $(foreach p, $(top-level-programs), $(ibdir)/$(p))
# Other basic environment settings.
@@ -85,6 +86,7 @@ tarballs = $(foreach t, cfitsio-$(cfitsio-version).tar.gz \
libgit2-$(libgit2-version).tar.gz \
sed-$(sed-version).tar.xz \
wcslib-$(wcslib-version).tar.bz2 \
+ zlib-$(zlib-version).tar.gz \
, $(tdir)/$(t) )
$(tarballs): $(tdir)/%:
if [ -f $(DEPENDENCIES-DIR)/$* ]; then
@@ -123,6 +125,7 @@ $(tarballs): $(tdir)/%:
elif [ $$n = sed ]; then w=http://ftp.gnu.org/gnu/sed
elif [ $$n = tiff ]; then w=https://download.osgeo.org/libtiff
elif [ $$n = wcslib ]; then w=ftp://ftp.atnf.csiro.au/pub/software/wcslib
+ elif [ $$n = zlib ]; then w=http://www.zlib.net
else
echo; echo; echo;
echo "'$$n' not recognized as a dependency name to download."
@@ -150,41 +153,66 @@ $(tarballs): $(tdir)/%:
# Libraries
# ---------
-$(ildir)/libcfitsio.a: $(tdir)/cfitsio-$(cfitsio-version).tar.gz \
- $(ibdir)/curl \
- $(ibdir)/ls
- $(call gbuild,$(subst $(tdir)/,,$<), cfitsio, static, \
- --enable-sse2 --enable-reentrant)
-
-
-$(ildir)/libgit2.a: $(tdir)/libgit2-$(libgit2-version).tar.gz \
- $(ibdir)/cmake \
- $(ibdir)/curl
- $(call cbuild,$(subst $(tdir)/,,$<), libgit2-$(libgit2-version), \
- static, -DUSE_SSH=OFF -DUSE_OPENSSL=OFF \
- -DBUILD_CLAR=OFF -DTHREADSAFE=ON)
-
-$(ildir)/libgsl.a: $(tdir)/gsl-$(gsl-version).tar.gz \
- $(ibdir)/ls
- $(call gbuild,$(subst $(tdir)/,,$<), gsl-$(gsl-version), static)
-
-$(ildir)/libjpeg.a: $(tdir)/jpegsrc.$(libjpeg-version).tar.gz
- $(call gbuild,$(subst $(tdir)/,,$<), jpeg-9b, static)
-
-$(ildir)/libtiff.a: $(tdir)/tiff-$(libtiff-version).tar.gz \
- $(ibdir)/ls
- $(call gbuild,$(subst $(tdir)/,,$<), tiff-$(libtiff-version), \
- static)
-
-$(ildir)/libwcs.a: $(tdir)/wcslib-$(wcslib-version).tar.bz2 \
- $(ildir)/libcfitsio.a
+#
+# We would prefer to build static libraries, but some compilers like LLVM
+# don't have static capabilities, so they'll only build dynamic/shared
+# libraries. Therefore, we can't use the easy `.a' suffix for static
+# libraries as targets and there are different conventions for shared
+# library names.
+#
+# For the actual build, the same compiler that built the library will build
+# the programs, so exact knowledge of the suffix is ultimately irrelevant
+# for us here. So, we'll make an `$(ildir)/built' directory and make a
+# simple plain text file in it with the basic library name (an no prefix)
+# and create/write into it when the library is successfully built.
+$(ilidir): | $(ildir); mkdir -p $@
+$(ilidir)/cfitsio: $(tdir)/cfitsio-$(cfitsio-version).tar.gz \
+ $(ibdir)/curl \
+ $(ibdir)/ls | $(ilidir)
+ $(call gbuild, $<,cfitsio, static, --enable-sse2 --enable-reentrant) \
+ && echo "CFITSIO is built" > $@
+
+
+$(ilidir)/libgit2: $(tdir)/libgit2-$(libgit2-version).tar.gz \
+ $(ibdir)/cmake \
+ $(ibdir)/curl | $(ilidir)
+ $(call cbuild, $<, libgit2-$(libgit2-version), static, \
+ -DUSE_SSH=OFF -DUSE_OPENSSL=OFF -DBUILD_CLAR=OFF \
+ -DTHREADSAFE=ON) \
+ && echo "Libgit2 is built" > $@
+
+$(ilidir)/gsl: $(tdir)/gsl-$(gsl-version).tar.gz \
+ $(ibdir)/ls | $(ilidir)
+ $(call gbuild, $<, gsl-$(gsl-version), static) \
+ && echo "GNU Scientific Library is built" > $@
+
+$(ilidir)/libjpeg: $(tdir)/jpegsrc.$(libjpeg-version).tar.gz | $(ilidir)
+ $(call gbuild, $<, jpeg-9b, static) && echo "Libjpeg is built" > $@
+
+$(ilidir)/libtiff: $(tdir)/tiff-$(libtiff-version).tar.gz \
+ $(ibdir)/ls | $(ilidir)
+ $(call gbuild, $<, tiff-$(libtiff-version), static) \
+ && echo "Libtiff is built" > $@
+
+$(ilidir)/wcslib: $(tdir)/wcslib-$(wcslib-version).tar.bz2 \
+ $(ilidir)/cfitsio | $(ilidir)
# Unfortunately WCSLIB forces the building of shared libraries. So
# we'll allow it to finish, then remove the shared libraries
# afterwards.
- $(call gbuild,$(subst $(tdir)/,,$<), wcslib-$(wcslib-version), , \
- LIBS="-pthread -lcurl -lm" --without-pgplot \
- --disable-fortran)
- rm -f $(ildir)/libwcs.so*
+ $(call gbuild, $<, wcslib-$(wcslib-version), , \
+ LIBS="-pthread -lcurl -lm" --without-pgplot \
+ --disable-fortran) \
+ && echo "WCSLIB is built" > $@
+
+# Zlib: its `./configure' doesn't use Autoconf's configure script, it just
+# accepts a direct `--static' option.
+$(ilidir)/zlib: $(tdir)/zlib-$(zlib-version).tar.gz | $(ilidir)
+ifeq ($(static_build),yes)
+ $(call gbuild, $<, zlib-$(zlib-version), , --static) \
+ && echo "Zlib is built" > $@
+else
+ $(call gbuild, $<, zlib-$(zlib-version)) && echo "Zlib is built" > $@
+endif
@@ -192,58 +220,69 @@ $(ildir)/libwcs.a: $(tdir)/wcslib-$(wcslib-version).tar.bz2 \
# Programs
# --------
+#
+# CMake can be built with its custom `./bootstrap' script.
$(ibdir)/cmake: $(tdir)/cmake-$(cmake-version).tar.gz \
$(ibdir)/ls
- $(call cbuild,$(subst $(tdir)/,,$<), cmake-$(cmake-version))
+ cd $(ddir) && rm -rf cmake-$(cmake-version) && \
+ tar xf $< && cd cmake-$(cmake-version) && \
+ ./bootstrap --prefix=$(idir) && make && make install && \
+ cd ..&& rm -rf cmake-$(cmake-version)
$(ibdir)/curl: $(tdir)/curl-$(curl-version).tar.gz \
- $(ildir)/libz.a \
+ $(ilidir)/zlib \
$(ibdir)/ls
- $(call gbuild,$(subst $(tdir)/,,$<), curl-$(curl-version), static, \
- --without-brotli)
+ $(call gbuild, $<, curl-$(curl-version), static, --without-brotli)
$(ibdir)/ls: $(tdir)/coreutils-$(coreutils-version).tar.xz
- $(call gbuild,$(subst $(tdir)/,,$<), coreutils-$(coreutils-version), \
- static)
+ $(call gbuild, $<, coreutils-$(coreutils-version), static)
$(ibdir)/gawk: $(tdir)/gawk-$(gawk-version).tar.lz \
$(ibdir)/ls
- $(call gbuild,$(subst $(tdir)/,,$<), gawk-$(gawk-version), static)
+ $(call gbuild, $<, gawk-$(gawk-version), static)
$(ibdir)/sed: $(tdir)/sed-$(sed-version).tar.xz \
$(ibdir)/ls
- $(call gbuild,$(subst $(tdir)/,,$<), sed-$(sed-version), static)
+ $(call gbuild, $<, sed-$(sed-version), static)
$(ibdir)/grep: $(tdir)/grep-$(grep-version).tar.xz \
$(ibdir)/ls
- $(call gbuild,$(subst $(tdir)/,,$<), grep-$(grep-version), static)
+ $(call gbuild, $<, grep-$(grep-version), static)
$(ibdir)/libtool: $(tdir)/libtool-$(libtool-version).tar.xz \
$(ibdir)/ls
- $(call gbuild,$(subst $(tdir)/,,$<), libtool-$(libtool-version), static)
+ $(call gbuild, $<, libtool-$(libtool-version), static)
$(ibdir)/gs: $(tdir)/ghostscript-$(ghostscript-version).tar.gz \
$(ibdir)/ls
- $(call gbuild,$(subst $(tdir)/,,$<), ghostscript-$(ghostscript-version))
+ $(call gbuild, $<, ghostscript-$(ghostscript-version))
$(ibdir)/git: $(tdir)/git-$(git-version).tar.xz \
$(ibdir)/ls
- $(call gbuild,$(subst $(tdir)/,,$<), git-$(git-version), static)
+ $(call gbuild, $<, git-$(git-version), static)
$(ibdir)/astnoisechisel: $(tdir)/gnuastro-$(gnuastro-version).tar.lz \
- $(ildir)/libgsl.a \
- $(ildir)/libcfitsio.a \
- $(ildir)/libwcs.a \
$(ibdir)/gs \
- $(ildir)/libjpeg.a \
- $(ildir)/libtiff.a \
- $(ildir)/libgit2.a \
-
- $(call gbuild,$(subst $(tdir)/,,$<), gnuastro-$(gnuastro-version), \
- static, --enable-static=yes --enable-shared=no, -j8, \
- make check -j8)
-
-$(ibdir)/latex: reproduce/config/pipeline/dependency-texlive.mk
+ $(ilidir)/gsl \
+ $(ilidir)/wcslib \
+ $(ilidir)/libjpeg \
+ $(ilidir)/libtiff \
+ $(ilidir)/libgit2
+ifeq ($(static_build),yes)
+ $(call gbuild, $<, gnuastro-$(gnuastro-version), static, \
+ --enable-static=yes --enable-shared=no, -j8, \
+ make check -j8)
+else
+ $(call gbuild, $<, gnuastro-$(gnuastro-version), , , -j8, \
+ make check -j8)
+endif
+
+# Since we want to avoid complicating the PATH, we are putting a symbolic
+# link of all the TeX Live executables in $(ibdir). Therefore, since the
+# symbolic link is hard to track for Make (as a target), we'll make a
+# simple ASCII file called `texlive-ready' when it is complete and use that
+# as a target.
+$(ibdir)/texlive-ready: reproduce/config/pipeline/dependency-texlive.mk
# We'll need the current directory later down.
topdir=$$(pwd)
@@ -273,10 +312,6 @@ $(ibdir)/latex: reproduce/config/pipeline/dependency-texlive.mk
# `ibdir'. For `latex' do a copy, because it is the target of
# this rule and it won't cause problems.
ln -fs $(idir)/texlive/20*/bin/*/* $(ibdir)/
- rm $@
- cp $(idir)/texlive/20*/bin/*/latex $@
- else
- echo "Not able to download TeX Live installer" > $@
fi
fi
@@ -314,3 +349,8 @@ $(ibdir)/latex: reproduce/config/pipeline/dependency-texlive.mk
printf("\\newcommand{\\tex%sversion}{%s}\n",\
name, version)}' >> $$tv
fi
+
+ # Write the target if TeX live was actually installed.
+ if [ -f $(idir)/texlive/20*/bin/*/latex ]; then
+ echo "TeX Live is installed." > $@
+ fi;
diff --git a/reproduce/src/make/initialize.mk b/reproduce/src/make/initialize.mk
index 2cc393c..694aca0 100644
--- a/reproduce/src/make/initialize.mk
+++ b/reproduce/src/make/initialize.mk
@@ -191,7 +191,6 @@ $(mtexdir)/initialize.tex: | $(mtexdir)
# Versions of programs (same order as 'dependency-versions.mk').
$(call pvcheck, bash, $(bash-version), GNU Bash, bashversion)
- $(call pvcheck, nm, $(binutils-version), GNU Binutils, binutilsversion)
$(call pvcheck, cmake, $(cmake-version), CMake, cmakeversion)
$(call pvcheck, curl, $(curl-version), cURL, curlversion)
$(call pvcheck, ls, $(coreutils-version), GNU Coreutils, \