aboutsummaryrefslogtreecommitdiff
path: root/reproduce/software/make
diff options
context:
space:
mode:
Diffstat (limited to 'reproduce/software/make')
-rw-r--r--reproduce/software/make/README.md4
-rw-r--r--reproduce/software/make/atlas-multiple.mk2
-rw-r--r--reproduce/software/make/atlas-single.mk2
-rw-r--r--reproduce/software/make/basic.mk110
-rw-r--r--reproduce/software/make/build-rules.mk2
-rw-r--r--reproduce/software/make/high-level.mk15
-rw-r--r--reproduce/software/make/python.mk4
-rw-r--r--reproduce/software/make/xorg.mk4
8 files changed, 99 insertions, 44 deletions
diff --git a/reproduce/software/make/README.md b/reproduce/software/make/README.md
index 7376cdd..8d12d7a 100644
--- a/reproduce/software/make/README.md
+++ b/reproduce/software/make/README.md
@@ -1,7 +1,7 @@
Software building instructions
------------------------------
-Copyright (C) 2019-2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>\
+Copyright (C) 2019-2021 Mohammad Akhlaghi <mohammad@akhlaghi.org>\
See the end of the file for license conditions.
This directory contains Makefiles that are called by the high-level
@@ -52,4 +52,4 @@ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
-with this file. If not, see <http://www.gnu.org/licenses/>. \ No newline at end of file
+with this file. If not, see <http://www.gnu.org/licenses/>.
diff --git a/reproduce/software/make/atlas-multiple.mk b/reproduce/software/make/atlas-multiple.mk
index 9bd26b1..e782578 100644
--- a/reproduce/software/make/atlas-multiple.mk
+++ b/reproduce/software/make/atlas-multiple.mk
@@ -8,7 +8,7 @@
#
# ------------------------------------------------------------------------
#
-# Copyright (C) 2019-2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>
+# Copyright (C) 2019-2021 Mohammad Akhlaghi <mohammad@akhlaghi.org>
#
# 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
diff --git a/reproduce/software/make/atlas-single.mk b/reproduce/software/make/atlas-single.mk
index 29373e0..0934b66 100644
--- a/reproduce/software/make/atlas-single.mk
+++ b/reproduce/software/make/atlas-single.mk
@@ -8,7 +8,7 @@
#
# ------------------------------------------------------------------------
#
-# Copyright (C) 2019-2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>
+# Copyright (C) 2019-2021 Mohammad Akhlaghi <mohammad@akhlaghi.org>
#
# 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
diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk
index 934580a..c4f0a16 100644
--- a/reproduce/software/make/basic.mk
+++ b/reproduce/software/make/basic.mk
@@ -21,8 +21,8 @@
#
# ------------------------------------------------------------------------
#
-# Copyright (C) 2018-2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>
-# Copyright (C) 2019-2020 Raul Infante-Sainz <infantesainz@gmail.com>
+# Copyright (C) 2018-2021 Mohammad Akhlaghi <mohammad@akhlaghi.org>
+# Copyright (C) 2019-2021 Raul Infante-Sainz <infantesainz@gmail.com>
#
# 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
@@ -572,8 +572,16 @@ $(ibidir)/bash-$(bash-version): \
-# The `-shared' flag will cause problems while building Perl on macOS, so
-# we'll only use this configuration option when we are GNU/Linux
+
+
+
+
+
+# Level 4: Most other programs
+# ----------------------------
+
+# In Perl, The `-shared' flag will cause problems while building on macOS,
+# so we'll only use this configuration option when we are GNU/Linux
# systems. However, since the whole option must be used (which includes `='
# and empty space), its easier to define the variable as a Make variable
# outside the recipe, not as a shell variable inside it.
@@ -939,6 +947,7 @@ $(ibidir)/gettext-$(gettext-version): \
echo "GNU gettext $(gettext-version)" > $@
$(ibidir)/git-$(git-version): \
+ $(ibidir)/less-$(less-version) \
$(ibidir)/curl-$(curl-version) \
$(ibidir)/gettext-$(gettext-version) \
$(ibidir)/libiconv-$(libiconv-version)
@@ -962,6 +971,15 @@ $(ibidir)/gmp-$(gmp-version): \
-j$(numthreads) ,make check)
echo "GNU Multiple Precision Arithmetic Library $(gmp-version)" > $@
+# Less is useful with Git (to view the diffs within a minimal container)
+# and generally to view large files easily when the project is built in a
+# container with a minimal OS.
+$(ibidir)/less-$(less-version): $(ibidir)/patchelf-$(patchelf-version)
+ tarball=less-$(less-version).tar.gz
+ $(call import-source, $(less-url), $(less-checksum))
+ $(call gbuild, less-$(less-version), static,,-j$(numthreads))
+ echo "Less $(less-version)" > $@
+
# On Mac OS, libtool does different things, so to avoid confusion, we'll
# prefix GNU's libtool executables with `glibtool'.
$(ibidir)/libtool-$(libtool-version): $(ibidir)/m4-$(m4-version)
@@ -993,7 +1011,11 @@ $(ibidir)/libbsd-$(libbsd-version): $(ibidir)/coreutils-$(coreutils-version)
#
# [1] https://raw.githubusercontent.com/macports/macports-ports/edf0ee1e2cf/devel/m4/files/secure_snprintf.patch
# [2] https://github.com/Homebrew/homebrew-core/blob/master/Formula/m4.rb
-$(ibidir)/m4-$(m4-version): $(ibidir)/texinfo-$(texinfo-version)
+#
+# M4 doesn't depend on PatchELF, but just to be consistent with the
+# levels/phases introduced here (where the compressors are level 1,
+# PatchELF is level 2, and ...), we'll set it as a dependency.
+$(ibidir)/m4-$(m4-version): $(ibidir)/patchelf-$(patchelf-version)
tarball=m4-$(m4-version).tar.gz
$(call import-source, $(m4-url), $(m4-checksum))
cd $(ddir)
@@ -1140,7 +1162,8 @@ $(ibidir)/sed-$(sed-version): $(ibidir)/coreutils-$(coreutils-version)
echo "GNU Sed $(sed-version)" > $@
$(ibidir)/texinfo-$(texinfo-version): \
- $(ibidir)/perl-$(perl-version)
+ $(ibidir)/perl-$(perl-version) \
+ $(ibidir)/gettext-$(gettext-version)
tarball=texinfo-$(texinfo-version).tar.xz
$(call import-source, $(texinfo-url), $(texinfo-checksum))
$(call gbuild, texinfo-$(texinfo-version), static)
@@ -1156,28 +1179,7 @@ $(ibidir)/which-$(which-version): $(ibidir)/coreutils-$(coreutils-version)
$(call gbuild, which-$(which-version), static)
echo "GNU Which $(which-version)" > $@
-# GNU Nano is a very light-weight and small, command-line text editor (in
-# total around 3.5 Mb after installation!). It is top-level target in the
-# basic tools (nothing depends on it, it just depends on GCC). This is
-# because some projects may choose to not have it by manually removing it
-# from 'targets-proglib' above (it has no effect on processing after all!).
-$(ibidir)/nano-$(nano-version): $(ibidir)/gcc-$(gcc-version)
- tarball=nano-$(nano-version).tar.xz
- $(call import-source, $(nano-url), $(nano-checksum))
- $(call gbuild, nano-$(nano-version), static)
- echo "GNU Nano $(nano-version)" > $@
-
-
-
-
-
-
-
-
-
-
-# GCC and its prerequisites
-# -------------------------
+# GNU ISL is necessary to build GCC.
$(ibidir)/isl-$(isl-version): $(ibidir)/gmp-$(gmp-version)
tarball=isl-$(isl-version).tar.bz2
$(call import-source, $(isl-url), $(isl-checksum))
@@ -1189,6 +1191,7 @@ $(ibidir)/isl-$(isl-version): $(ibidir)/gmp-$(gmp-version)
echo "GNU Integer Set Library $(isl-version)" > $@
fi
+# GNU MPC is necessary to build GCC.
$(ibidir)/mpc-$(mpc-version): $(ibidir)/mpfr-$(mpfr-version)
tarball=mpc-$(mpc-version).tar.gz
$(call import-source, $(mpc-url), $(mpc-checksum))
@@ -1200,10 +1203,23 @@ $(ibidir)/mpc-$(mpc-version): $(ibidir)/mpfr-$(mpfr-version)
echo "GNU Multiple Precision Complex library" > $@
fi
+
+
+
+
+
+
+
+
+
+# Level 5: Binutils & GCC
+# -----------------------
+#
# The installation of Binutils can cause problems during the build of other
-# programs (http://savannah.nongnu.org/bugs/?56294). Therefore, we'll set
-# all other basic programs as Binutils prerequisite and GCC (the final
-# basic target) ultimately just depends on Binutils.
+# programs (http://savannah.nongnu.org/bugs/?56294), but its necessary for
+# GCC. Therefore, we'll set all other basic programs as Binutils
+# prerequisite and GCC (the final basic target) ultimately just depends on
+# Binutils.
$(ibidir)/binutils-$(binutils-version): \
$(ibidir)/sed-$(sed-version) \
$(ibidir)/isl-$(isl-version) \
@@ -1213,6 +1229,7 @@ $(ibidir)/binutils-$(binutils-version): \
$(ibidir)/file-$(file-version) \
$(ibidir)/gawk-$(gawk-version) \
$(ibidir)/which-$(which-version) \
+ $(ibidir)/texinfo-$(texinfo-version) \
$(ibidir)/libtool-$(libtool-version) \
$(ibidir)/metastore-$(metastore-version) \
$(ibidir)/findutils-$(findutils-version) \
@@ -1463,3 +1480,34 @@ $(ibidir)/gcc-$(gcc-version): $(ibidir)/binutils-$(binutils-version)
# Write the final target.
echo "GNU Compiler Collection (GCC) $(gcc-version)" > $@
fi
+
+
+
+
+
+
+
+
+
+
+# Level 6: Basic text editor
+# --------------------------
+#
+# If the project is built in a minimal environment, there is no text
+# editor, making it hard to work on the project. By default a minimal
+# (relatively user-friendly: GNU Nano) text editor will thus also be built
+# at the end of the "basic" tools. More advanced editors are available as
+# optional high-level programs. GNU Nano is a very light-weight and small
+# command-line text editor (around 3.5 Mb after installation!).
+#
+# The editor is a top-level target in the basic tools (given to
+# 'targets-proglib' above). Hence nothing depends on it, and it just
+# depends on GCC. This is done because some projects may choose to not have
+# nano (and use their own optional high-level text editor). To do this,
+# they just have to manually remove 'nano' from 'targets-proglib' above and
+# add their optional text editor in 'TARGETS.conf'.
+$(ibidir)/nano-$(nano-version): $(ibidir)/gcc-$(gcc-version)
+ tarball=nano-$(nano-version).tar.xz
+ $(call import-source, $(nano-url), $(nano-checksum))
+ $(call gbuild, nano-$(nano-version), static)
+ echo "GNU Nano $(nano-version)" > $@
diff --git a/reproduce/software/make/build-rules.mk b/reproduce/software/make/build-rules.mk
index d50c301..66c77bc 100644
--- a/reproduce/software/make/build-rules.mk
+++ b/reproduce/software/make/build-rules.mk
@@ -3,7 +3,7 @@
# imported into 'basic.mk' and 'high-level.mk'. They should be activated
# with Make's 'Call' function.
#
-# Copyright (C) 2018-2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>
+# Copyright (C) 2018-2021 Mohammad Akhlaghi <mohammad@akhlaghi.org>
#
# 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
diff --git a/reproduce/software/make/high-level.mk b/reproduce/software/make/high-level.mk
index c3bda3e..948b23a 100644
--- a/reproduce/software/make/high-level.mk
+++ b/reproduce/software/make/high-level.mk
@@ -12,8 +12,8 @@
#
# ------------------------------------------------------------------------
#
-# Copyright (C) 2018-2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>
-# Copyright (C) 2019-2020 Raul Infante-Sainz <infantesainz@gmail.com>
+# Copyright (C) 2018-2021 Mohammad Akhlaghi <mohammad@akhlaghi.org>
+# Copyright (C) 2019-2021 Raul Infante-Sainz <infantesainz@gmail.com>
#
# 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
@@ -135,11 +135,18 @@ export PKG_CONFIG_PATH := $(ildir)/pkgconfig:$(idir)/share/pkgconfig
export CC := $(ibdir)/gcc
export CXX := $(ibdir)/g++
export F77 := $(ibdir)/gfortran
-export C_INCLUDE_PATH := $(iidir)
-export CPLUS_INCLUDE_PATH := $(iidir)
export LD_RUN_PATH := $(ildir):$(il64dir)
export LD_LIBRARY_PATH := $(ildir):$(il64dir)
+# In macOS, if a directory exists in both 'C_INCLUDE_PATH' and 'CPPFLAGS'
+# it will be ignored in 'CPPFLAGS' (which has higher precedence). So, we
+# should not define 'C_INCLUDE_PATH' on macOS. This happened with clang
+# (Apple LLVM version 10.0.0, clang-1000.11.45.5)
+ifneq ($(on_mac_os),yes)
+export C_INCLUDE_PATH := $(iidir)
+export CPLUS_INCLUDE_PATH := $(iidir)
+endif
+
# Recipe startup script, see `reproduce/software/shell/bashrc.sh'.
export PROJECT_STATUS := configure_highlevel
export BASH_ENV := $(shell pwd)/reproduce/software/shell/bashrc.sh
diff --git a/reproduce/software/make/python.mk b/reproduce/software/make/python.mk
index d39208f..18c68de 100644
--- a/reproduce/software/make/python.mk
+++ b/reproduce/software/make/python.mk
@@ -12,8 +12,8 @@
#
# ------------------------------------------------------------------------
#
-# Copyright (C) 2019-2020 Raul Infante-Sainz <infantesainz@gmail.com>
-# Copyright (C) 2019-2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>
+# Copyright (C) 2019-2021 Raul Infante-Sainz <infantesainz@gmail.com>
+# Copyright (C) 2019-2021 Mohammad Akhlaghi <mohammad@akhlaghi.org>
#
# 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
diff --git a/reproduce/software/make/xorg.mk b/reproduce/software/make/xorg.mk
index f59fb04..3178cb4 100644
--- a/reproduce/software/make/xorg.mk
+++ b/reproduce/software/make/xorg.mk
@@ -14,8 +14,8 @@
#
# ------------------------------------------------------------------------
#
-# Copyright (C) 2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>
-# Copyright (C) 2020 Raul Infante-Sainz <infantesainz@gmail.com>
+# Copyright (C) 2021 Mohammad Akhlaghi <mohammad@akhlaghi.org>
+# Copyright (C) 2021 Raul Infante-Sainz <infantesainz@gmail.com>
#
# 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