From 035e44f3bfdd814c4b7d8240011672ed625aed8d Mon Sep 17 00:00:00 2001
From: Mohammad Akhlaghi <mohammad@akhlaghi.org>
Date: Fri, 16 Nov 2018 19:07:03 +0000
Subject: Configure script checks if static libraries will be built

The default Mac compiler has problems building static libraries. Since we
are not yet building the GNU C Compiler as part of the pipeline, we'll have
to rely on the host system's compiler. Therefore, a check is now added a
the start of the configure script that will build a minimal program with
the `-static' flag and if it fails, it will print a warning. Afterwards,
none of the dependencies will be built with the `-static' flag.
---
 reproduce/src/make/dependencies-basic.mk       | 51 +++++++++++++++++++++++++-
 reproduce/src/make/dependencies-build-rules.mk |  6 ++-
 2 files changed, 53 insertions(+), 4 deletions(-)

(limited to 'reproduce/src/make')

diff --git a/reproduce/src/make/dependencies-basic.mk b/reproduce/src/make/dependencies-basic.mk
index 4c57e30..45a4192 100644
--- a/reproduce/src/make/dependencies-basic.mk
+++ b/reproduce/src/make/dependencies-basic.mk
@@ -134,8 +134,16 @@ $(tarballs): $(tdir)/%:
 # GNU Lzip: For a static build, the `-static' flag should be given to
 # LDFLAGS on the command-line (not from the environment).
 $(ibdir)/lzip: $(tdir)/lzip-$(lzip-version).tar.gz
+	echo; echo $(static_build); echo;
+ifeq ($(static_build),yes)
 	$(call gbuild,$(subst $(tdir)/,,$<), lzip-$(lzip-version), , \
-                      LDFLAGS="-static")
+	              LDFLAGS="-static")
+else
+	$(call gbuild,$(subst $(tdir)/,,$<), lzip-$(lzip-version))
+endif
+
+
+
 
 
 # GNU Gzip.
@@ -144,24 +152,47 @@ $(ibdir)/gzip: $(tdir)/gzip-$(gzip-version).tar.lz  \
 	$(call gbuild,$(subst $(tdir)/,,$<), gzip-$(gzip-version), static)
 
 
+
+
+
 # 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))
+endif
+
+
+
+
 
 # XZ Utils
 $(ibdir)/xz: $(tdir)/xz-$(xz-version).tar.gz
 	$(call gbuild,$(subst $(tdir)/,,$<), xz-$(xz-version), static)
 
+
+
+
+
 # Bzip2: Bzip2 doesn't have a configure script.
 $(ibdir)/bzip2: $(tdir)/bzip2-$(bzip2-version).tar.gz
 	 tdir=bzip2-$(bzip2-version);                                  \
+	 if [ $(static_build) = yes ]; then                            \
+	   makecommand="make LDFLAGS=-static";                         \
+	 else                                                          \
+	   makecommand="make";                                         \
+	 fi;                                                           \
 	 cd $(ddir) && rm -rf $$tdir && tar xf $< && cd $$tdir &&      \
-	 make LDFLAGS=-static && make install PREFIX=$(idir) &&        \
+	 $$makecommand && make install PREFIX=$(idir) &&               \
 	 cd .. && rm -rf $$tdir
 
 
+
+
+
 # GNU Binutils:
 $(ibdir)/nm: $(tdir)/binutils-$(binutils-version).tar.lz \
 	     $(ibdir)/lzip                               \
@@ -169,6 +200,10 @@ $(ibdir)/nm: $(tdir)/binutils-$(binutils-version).tar.lz \
 	$(call gbuild,$(subst $(tdir)/,,$<), binutils-$(binutils-version), \
                       static)
 
+
+
+
+
 # GNU Tar: When built statically, tar gives a segmentation fault on
 # unpacking Bash. So we'll build it dynamically.
 $(ibdir)/tar: $(tdir)/tar-$(tar-version).tar.gz \
@@ -179,6 +214,10 @@ $(ibdir)/tar: $(tdir)/tar-$(tar-version).tar.gz \
               $(ibdir)/nm
 	$(call gbuild,$(subst $(tdir)/,,$<), tar-$(tar-version))
 
+
+
+
+
 # GNU Make: Unfortunately it needs dynamic linking in two instances: when
 # loading objects (dynamically linked libraries), or when using the
 # `getpwnam' function (for tilde expansion). The first can be disabled with
@@ -188,8 +227,16 @@ $(ibdir)/make: $(tdir)/make-$(make-version).tar.lz \
                $(ibdir)/tar
 	$(call gbuild,$(subst $(tdir)/,,$<), make-$(make-version))
 
+
+
+
+
 # GNU Bash
 $(ibdir)/bash: $(tdir)/bash-$(bash-version).tar.gz \
 	       $(ibdir)/make
+ifeq ($(static_build),yes)
 	$(call gbuild,$(subst $(tdir)/,,$<), 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 31e7759..49838f3 100644
--- a/reproduce/src/make/dependencies-build-rules.mk
+++ b/reproduce/src/make/dependencies-build-rules.mk
@@ -48,7 +48,9 @@
 #  4: Extra configuration options.
 #  5: Extra options/arguments to pass to Make.
 #  6: Step to run between `make' and `make install': usually `make check'.
-gbuild = if [ $(3)x = staticx ]; then export LDFLAGS="$$LDFLAGS -static"; fi; \
+gbuild = if [ $(static_build) = yes ] && $(3)x = staticx ]; then              \
+	   export LDFLAGS="$$LDFLAGS -static";                                \
+	 fi;                                                                  \
 	 check="$(6)";                                                        \
 	 if [ x"$$check" = x ]; then check="echo Skipping-check"; fi;         \
 	 cd $(ddir) && rm -rf $(2) && tar xf $(tdir)/$(1) && cd $(2) &&       \
@@ -64,7 +66,7 @@ gbuild = if [ $(3)x = staticx ]; then export LDFLAGS="$$LDFLAGS -static"; fi; \
 
 # CMake
 # -----
-cbuild = if [ $(3)x = staticx ]; then                                         \
+cbuild = if [ $(static_build) = yes ] && [ $(3)x = staticx ]; then            \
 	   export LDFLAGS="$$LDFLAGS -static";                                \
 	   opts="-DBUILD_SHARED_LIBS=OFF";                                    \
 	 fi;                                                                  \
-- 
cgit v1.2.1