diff options
Diffstat (limited to 'reproduce')
| -rw-r--r-- | reproduce/src/make/dependencies-basic.mk | 20 | ||||
| -rw-r--r-- | reproduce/src/make/dependencies-build-rules.mk | 80 | ||||
| -rw-r--r-- | reproduce/src/make/dependencies.mk | 27 | ||||
| -rw-r--r-- | reproduce/src/make/initialize.mk | 3 | 
4 files changed, 87 insertions, 43 deletions
diff --git a/reproduce/src/make/dependencies-basic.mk b/reproduce/src/make/dependencies-basic.mk index dad9c5f..33b682b 100644 --- a/reproduce/src/make/dependencies-basic.mk +++ b/reproduce/src/make/dependencies-basic.mk @@ -38,6 +38,7 @@  # Top level environment  include reproduce/config/pipeline/LOCAL.mk +include reproduce/src/make/dependencies-build-rules.mk  include reproduce/config/pipeline/dependency-versions.mk  ddir  = $(BDIR)/dependencies @@ -67,7 +68,8 @@ $(tarballs): $(tdir)/%:  	if [ -f $(DEPENDENCIES-DIR)/$* ]; then                            \  	  cp $(DEPENDENCIES-DIR)/$* $@;                                   \  	else                                                              \ -	  n=$$(echo $* | sed -e's/[0-9\-]/ /g' -e's/\./ /g'               \ +	  n=$$(echo $* | sed -e's/[0-9\-]/ /g'                            \ +	                     -e's/\./ /g'                                 \  	               | awk '{print $$1}' );                             \  	                                                                  \  	  mergenames=1;                                                   \ @@ -91,20 +93,6 @@ $(tarballs): $(tdir)/%: -# Build system rules -# ------------------ -gbuild = cd $(ddir); rm -rf $(2); tar xf $(tdir)/$(1); cd $(2);      \ -         if [ $(3)x = staticx ]; then                                \ -         opts="CFLAGS=--static --disable-shared";                    \ -         fi;                                                         \ -         ./configure $$opts $(4) --prefix=$(idir); make $(5);        \ -         check="$(6)"; if [ x"$$check" != x ]; then $$check; fi;     \ -         make install; cd ..; rm -rf $(2) - - - - -  # GNU Bash  # --------  # @@ -125,4 +113,4 @@ $(ibdir)/bash: $(tdir)/bash-$(bash-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.gz -	$(call gbuild,$(subst $(tdir),,$<), make-$(make-version)) +	$(call gbuild,$(subst $(tdir),,$<), make-$(make-version), , , ,) diff --git a/reproduce/src/make/dependencies-build-rules.mk b/reproduce/src/make/dependencies-build-rules.mk new file mode 100644 index 0000000..a4d25aa --- /dev/null +++ b/reproduce/src/make/dependencies-build-rules.mk @@ -0,0 +1,80 @@ +# Generic configurable recipes to build packages with GNU Build system or +# CMake. This is Makefile is not intended to be run directly, it will be +# imported into `dependencies-basic.mk' and `dependencies.mk'. They should +# be activated with Make's `Call' function. +# +# Original author: +#     Mohammad Akhlaghi <mohammad@akhlaghi.org> +# Contributing author(s): +#     Your name <your@email.address> +# Copyright (C) 2018, 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/>. + + + + + +# IMPORTANT note +# -------------- +# +# Without using `&&', if a step fails, the process will continue. However, +# in the `if' statements, we need `;' (particularly between `]' and +# `then'). So we need to put any necessary checks at the start, then when +# we start the process, every command will be separated by an `&&'. + + + + + +# GNU Build system +# ---------------- +# +# Arguments: +#  1: Tarball full address. +#  2: Directory name after unpacking. +#  3: Set to `static' for a static build. +#  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                                   \ +         configopts="CFLAGS=--static --disable-shared";                 \ +         fi;                                                            \ +	 check="$(6)";                                                  \ +	 if [ x"$$check" = x ]; then check="echo Skipping-check"; fi;   \ +	 cd $(ddir) && rm -rf $(2) && tar xf $(tdir)/$(1) && cd $(2) && \ +         ./configure $$configopts $(4) --prefix=$(idir) &&              \ +	 make $(5) &&                                                   \ +	 $$check &&                                                     \ +         make install&&                                                 \ +	 cd ..&& rm -rf $(2) + + + + + +# CMake +# ----- +cbuild = if [ $(3)x = staticx ]; then                                   \ +	   export CFLAGS="--static $$CFLAGS";                           \ +	   opts="-DBUILD_SHARED_LIBS=OFF";                              \ +	 fi;                                                            \ +	 cd $(ddir) && rm -rf $(2) && tar xf $(tdir)/$(1) && cd $(2) && \ +	 rm -rf my-build && mkdir my-build && cd my-build && opts="" && \ +	 cmake .. $$opts $(4) &&                                        \ +	 cmake --build . &&                                             \ +	 cmake .. -DCMAKE_INSTALL_PREFIX=$(idir) &&                     \ +	 cmake --build . --target install &&                            \ +	 cd ../.. &&                                                    \ +	 rm -rf $(2) diff --git a/reproduce/src/make/dependencies.mk b/reproduce/src/make/dependencies.mk index 1e29973..6da554c 100644 --- a/reproduce/src/make/dependencies.mk +++ b/reproduce/src/make/dependencies.mk @@ -31,6 +31,7 @@  # Top level environment  include reproduce/config/pipeline/LOCAL.mk +include reproduce/src/make/dependencies-build-rules.mk  include reproduce/config/pipeline/dependency-versions.mk  ddir  = $(BDIR)/dependencies @@ -148,32 +149,6 @@ $(tarballs): $(tdir)/%: -# Build system rules -# ------------------ -gbuild = cd $(ddir); rm -rf $(2); tar xf $(tdir)/$(1); cd $(2);      \ -         if [ $(3)x = staticx ]; then                                \ -         opts="CFLAGS=--static --disable-shared";                    \ -         fi;                                                         \ -         ./configure $$opts $(4) --prefix=$(idir); make $(5);        \ -         check="$(6)"; if [ x"$$check" != x ]; then $$check; fi;     \ -         make install; cd ..; rm -rf $(2) - - -cbuild = cd $(ddir); rm -rf $(2); tar xf $(tdir)/$(1); cd $(2);      \ -	 rm -rf my-build; mkdir my-build; cd my-build; opts="";      \ -	 if [ $(3)x = staticx ]; then                                \ -	   export CFLAGS="--static $$CFLAGS";                        \ -	   opts="-DBUILD_SHARED_LIBS=OFF";                           \ -	 fi;                                                         \ -	 cmake .. $$opts $(4);                                       \ -	 cmake --build .;                                            \ -	 cmake .. -DCMAKE_INSTALL_PREFIX=$(idir);                    \ -	 cmake --build . --target install; cd ../..; rm -rf $(2) - - - - -  # Libraries  # ---------  $(ildir)/libcfitsio.a: $(tdir)/cfitsio-$(cfitsio-version).tar.gz         \ diff --git a/reproduce/src/make/initialize.mk b/reproduce/src/make/initialize.mk index 563462f..d0f69a3 100644 --- a/reproduce/src/make/initialize.mk +++ b/reproduce/src/make/initialize.mk @@ -139,7 +139,8 @@ distclean: clean          # `rm' program. So for this recipe, we'll use the host system's          # `rm', not our own.  	$(sys-rm) -rf $(BDIR) reproduce/build -	$(sys-rm) -f Makefile $(pconfdir)/LOCAL.mk .gnuastro .local +	$(sys-rm) -f Makefile .gnuastro .local +	$(sys-rm) -f $(pconfdir)/LOCAL.mk $(gconfdir)/gnuastro-local.conf  | 
