aboutsummaryrefslogtreecommitdiff
path: root/reproduce/src/make/dependencies-build-rules.mk
AgeCommit message (Collapse)AuthorLines
2018-11-29Optional rpath link option, CMake search path set, static WCSLIBMohammad Akhlaghi-4/+3
Thanks to a test build on Raul Infante Sainz's Mac OS computer, we were able to address some issues and will be trying them after this commit: a) The LLVM linker on that computer didn't recognize `-rpath-link'! So at configure time we now check for it and only include it when the linker recognizes it. b) CMake corrections: 1) `CMAKE_LIBRARY_PATH' is now defined so CMake can look in our custom directory to find the necessary libraries. 2) To build and install the CMake built programs, we now simply use `make' and `make install'. c) To avoid particular linking problems with WCSLIB (which has special problems compared to other libraries), we are now deleting the shared library version (both on GNU and Mac systems).
2018-11-29Ignoring building of GCC for pipelineMohammad Akhlaghi-3/+19
GNU Binutils (which provides the GNU Linker) is not ported to Mac OS systems. GCC also takes a very long time to build, and if we are to still have linking problems with LLVM's linker, it would be better to just ignore GCC also and use the system's C compiler and linker together. So for the time being, GCC isn't a main target of the basic dependencies and won't be installed. But we have kept the rules that were checked on a GNU/Linux operating system.
2018-11-29Using proper shell when building programs with GNU toolsMohammad Akhlaghi-2/+9
Previously the SHELL environment variable was only set in `./configure', `make', and `make install' after our internal Bash was installed. This caused problems with Lzip's configure script on older shells (tested on a Mac OS by Raul Infante Sainz). So now, before having our own Bash, we set it to a possibly existing Bash on the system and if that isn't present, just the standard `/bin/sh'.
2018-11-29GCC is now installed by the pipelineMohammad Akhlaghi-3/+4
The pipeline now installs GCC and all its necessary prerequisites.
2018-11-28Better control of shared library linkingMohammad Akhlaghi-1/+0
Until now we weren't explicity writing the full path of the dynamic libraries necessary for linking a program. But now with `-Wl,-rpath=$(ildir)' we ensure that the linker keeps the address of the dynamic libraries necessary for linking at linking time, not running time. Also, `pkg-config' is also built when preparing the basics. Several other minor corrections were made thanks to the great help of Raúl Infante Sainz.
2018-11-26High-level dependencies build without system's PATHMohammad Akhlaghi-0/+2
The high-level dependencies are now built without having access to the system's PATH. To do this, all the necessary software that we aren't building ourselves are now brought into the installed `bin/' directory using a symbolic link to the corresponding software on the host. To do this, it was also necessary to increase the number of basic/low-level packages that we are building, and add several more (Diffutils and Findutils). With this process in place, we now have a list of the exact software packages that we are not building our selves, enabling easy building of all such dependencies in the future.
2018-11-19Removed GNU Binutils, CMake's built with its own bootstrapMohammad Akhlaghi-2/+2
When the C compiler is not GNU GCC, linking with GNU Binutils is going to cause problems. So until the time that we can include GCC into this pipeline, its best to avoid Binutils also. Also, for building CMake, we were relying on an installed CMake, but now, we are using its own `./bootstrap' script, so it can be built even if the host system doesn't have CMake. Also, for TeX Live, we are now setting a custom file as main target to avoid complications with symbolic links as targets in Make. Finally, when the user says they don't want to re-write an existing configuration file, no extra notices will be printed and the configure script will immediately start building programs.
2018-11-17TeX Live also built within the pipeline (no extra packages yet)Mohammad Akhlaghi-1/+1
TeX Live is now also downloaded and built by the reproduction pipeline. Currently on the basic (TeX and LaTeX) source is built but no extra packages, so the PDF building will fail. We'll add them in the next commit.
2018-11-16Minor correction in shell's if statementMohammad Akhlaghi-2/+2
If the Makefile `$(static_build)' variable in '/reproduce/src/make/dependencies-build-rules.mk' isn't defined (by mistake), it will default to blank space, then the Shell will complain about a bad formatted operator (needing two operands). So an `x' was added before it and before `yes' which will allow us to safely pass such cases without a terrible crash.
2018-11-16Configure script checks if static libraries will be builtMohammad Akhlaghi-2/+4
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.
2018-11-15Binutils and other compressors also included in pipelineMohammad Akhlaghi-20/+21
To have better control over the build, GNU Binutils, Bzip2, GNU Gzip, and XZ Utils have also been added to the pipeline. Some other minor cleanups and fixes were also implemented throughout the process.
2018-11-15Static linking flag added to LDFLAGS, using special Bash scriptMohammad Akhlaghi-21/+19
Until now, when a package was to be built statically, we were adding the `--static' option to `CFLAGS'. This was the wrong place to put it! It should be in the linking step (thus `LDFLAGS'). Also, based on Bash's configure script, we are now using the more generic form of `-static' (single dash, not double dash). On the other hand, the `--disable-shared' option isn't available in many of the packages and it is highly redundant with the `-static' option, so it has been removed to avoid an extra warning in such packages.
2018-11-14Lzip and Tar also built as basic dependenciesMohammad Akhlaghi-1/+1
To ensure the easy unpacking and building of the programs, Lzip and Tar are now also build during the initial setup phase. Some minor corrections were also applied to make things cleaner and smoother.
2018-11-14Configuration stops if a dependency cannot be builtMohammad Akhlaghi-0/+80
Until now, we used semicolons in Make's Call function definitions to build the programs with GNU build system or CMake. Therefore, if any step of the process failed, the rest would be ignorant to it and pass. Now, we use `&&' to separate the different processing steps. In this way, we can be sure that if any of them fails (during configuration, or building for example), the pipeline will also stop and not continue to the next command (in the same recipe). Since the two Make Call functions were identical in the two `dependencies-basic.mk' and `dependencies.mk', they are now in one file to be imported in both. This bug was found by Raul Infante Sainz.