changeset 4066:0962acdde3be

builld: allow out of source build * Makefile.in: add TOP_BUILD_DIR var and use TOP_DIR=srcdir, TOP_BUILD_DIR=builddir, modify paths to use TOP_DIR where needed * binary-dist-rules.mk: use TOP_DIR and TOP_BUILD_DIR where needed * makeinst-script.sh: use script path to determine TOPDIR, use TOPDIR where needed * src/default-octave.mk: install octave-version to builddir * src/stable-octave.mk: install octave-version to builddir * src/octave.mk: install octave-version to builddir * tools/set-mxe-env.sh.in: update fir builddir and srcdir use
author John Donoghue
date Wed, 23 Dec 2015 08:11:04 -0500
parents aacf84e7af56
children bdcddfdc57d0
files Makefile.in binary-dist-rules.mk configure.ac makeinst-script.sh src/default-octave.mk src/octave.mk src/stable-octave.mk tools/set-mxe-env.sh.in
diffstat 8 files changed, 46 insertions(+), 45 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile.in	Fri Dec 11 15:56:18 2015 -0500
+++ b/Makefile.in	Wed Dec 23 08:11:04 2015 -0500
@@ -4,7 +4,8 @@
 OCTAVE_TARGET := @ENABLE_OCTAVE@octave
 
 PWD := $(shell pwd)
-TOP_DIR := $(PWD)
+TOP_BUILD_DIR := @abs_builddir@
+TOP_DIR := @abs_srcdir@
 
 STRIP_DIST_FILES := @STRIP_DIST_FILES@
 
@@ -61,7 +62,7 @@
 # Should match what config.guess prints for your system.
 # If cross compiling, you must set it manually.
 ifeq ($(MXE_NATIVE_BUILD),yes)
-  TARGET := $(shell tools/config.guess)
+  TARGET := $(shell $(TOP_DIR)/tools/config.guess)
 else
   ifeq ($(ENABLE_WINDOWS_64),yes)
     TARGET := x86_64-w64-mingw32
@@ -69,7 +70,7 @@
     TARGET := i686-w64-mingw32
   endif
 endif
-BUILD_SYSTEM := $(shell tools/config.guess)
+BUILD_SYSTEM := $(shell $(TOP_DIR)/tools/config.guess)
 
 # Enable shared or static libs, or perhaps both.  Probably it doesn't
 # make sense to disable both...
@@ -125,7 +126,7 @@
 # and it's not clear to me how to change that.
 #
 # For native builds, dump everything all together in one directory tree.
-ROOT_PREFIX := $(TOP_DIR)/usr
+ROOT_PREFIX := $(TOP_BUILD_DIR)/usr
 BUILD_TOOLS_PREFIX := $(ROOT_PREFIX)
 ifeq ($(MXE_NATIVE_BUILD),yes)
   HOST_PREFIX := $(ROOT_PREFIX)
@@ -239,13 +240,13 @@
   BUILD_TOOLS := $(filter-out build-msvctools, $(BUILD_TOOLS))
 endif
 
-STAMP_DIR  := $(TOP_DIR)/installed-packages
-MSYS_INFO_DIR := $(TOP_DIR)/msys-info
-LOG_DIR    := $(TOP_DIR)/log
+STAMP_DIR  := $(TOP_BUILD_DIR)/installed-packages
+MSYS_INFO_DIR := $(TOP_BUILD_DIR)/msys-info
+LOG_DIR    := $(TOP_BUILD_DIR)/log
 TIMESTAMP  := $(shell date +%Y%m%d_%H%M%S)
 PKG_DIR    := $(TOP_DIR)/pkg
-TMP_DIR     = $(TOP_DIR)/tmp-$(1)
-MAKEFILE   := $(TOP_DIR)/Makefile
+TMP_DIR     = $(TOP_BUILD_DIR)/tmp-$(1)
+MAKEFILE   := $(TOP_BUILD_DIR)/Makefile
 PKGS       := $(filter-out $(ALL_BUILD_TOOLS), $(shell $(SED) -n 's/^.* class="package">\([^<]*\)<.*$$/\1/p' '$(TOP_DIR)/index.html'))
 
 PATH := $(BUILD_TOOLS_PREFIX)/bin:$(PATH)
@@ -371,8 +372,8 @@
     MSYS_EXTENSION_URL := $(MSYS_URL)/Extension
     MSYS_BASE_VER := 1.0.13
     MSYS_EXTENSION_VER := 1.0.13
-    MSYS_BASE_DIR := $(TOP_DIR)/msys-base
-    MSYS_EXTENSION_DIR := $(TOP_DIR)/msys-extension
+    MSYS_BASE_DIR := $(TOP_BUILD_DIR)/msys-base
+    MSYS_EXTENSION_DIR := $(TOP_BUILD_DIR)/msys-extension
     MSYS_BASE_PACKAGES := $(addprefix msys-,bash coreutils diffutils dos2unix file findutils gawk grep gzip less libiconv libintl libmagic libopenssl make msys-core patch regex sed tar termcap unzip zip wget zlib)
 
     ifeq ($(ENABLE_DEVEL_TOOLS),yes)
@@ -382,7 +383,7 @@
     MSYS_BASE_SOURCES := $(addprefix src-,$(MSYS_BASE_PACKAGES))
     PKGS += $(MSYS_BASE_SOURCES)
 
-     NOTEPAD_BASE_DIR := $(TOP_DIR)/notepad++
+     NOTEPAD_BASE_DIR := $(TOP_BUILD_DIR)/notepad++
   endif
 else ifeq ($(MXE_SYSTEM),msvc)
   MXE_WINDOWS_BUILD := yes
@@ -493,18 +494,18 @@
 
 ifeq ($(IGNORE_SETTINGS),yes)
     $(info [ignore settings.mk])
-else ifeq ($(wildcard $(TOP_DIR)/settings.mk),$(TOP_DIR)/settings.mk)
-    include $(TOP_DIR)/settings.mk
+else ifeq ($(wildcard $(TOP_BUILD_DIR)/settings.mk),$(TOP_BUILD_DIR)/settings.mk)
+    include $(TOP_BUILD_DIR)/settings.mk
 else
     $(info [create settings.mk])
     $(shell { \
         echo '#JOBS = $(JOBS)'; \
         echo '#PKGS ='; \
-    } >'$(TOP_DIR)/settings.mk')
+    } >'$(TOP_BUILD_DIR)/settings.mk')
 endif
 
 .PHONY: all
-all: configure Makefile $(OCTAVE_TARGET)
+all: $(TOP_DIR)/configure Makefile $(OCTAVE_TARGET)
 
 .PHONY: all-packages
 all-packages: $(PKGS)
@@ -526,13 +527,13 @@
 .PHONY: devel-packages
 devel-packages: $(DEVEL_PACKAGES)
 
-configure: configure.ac
-	autoconf
+$(TOP_DIR)/configure: $(TOP_DIR)/configure.ac
+	cd $(TOP_DIR) && autoconf
 
-config.status: configure
+config.status: $(TOP_DIR)/configure
 	$(SHELL) ./config.status --recheck
 
-Makefile: Makefile.in config.status
+Makefile: $(TOP_DIR)/Makefile.in config.status
 	$(SHELL) ./config.status Makefile
 
 .PHONY: check-requirements
@@ -567,8 +568,8 @@
 	@[ -d '$(STAMP_DIR)' ] || mkdir -p '$(STAMP_DIR)'
 	@if test "$(USE_SYSTEM_GCC)" = yes; then \
 	  $(INSTALL) -d '$(BUILD_TOOLS_PREFIX)/bin' ; \
-	  $(INSTALL) -m 755 tools/config.guess '$(BUILD_TOOLS_PREFIX)/bin/config.guess' ; \
-	  $(INSTALL) -m 755 tools/config.sub '$(BUILD_TOOLS_PREFIX)/bin/config.sub' ; \
+	  $(INSTALL) -m 755 $(TOP_DIR)/tools/config.guess '$(BUILD_TOOLS_PREFIX)/bin/config.guess' ; \
+	  $(INSTALL) -m 755 $(TOP_DIR)/tools/config.sub '$(BUILD_TOOLS_PREFIX)/bin/config.sub' ; \
 	fi
 	@touch '$@'
 
@@ -853,7 +854,7 @@
 	@echo [done]
 
 # Files to distribute
-include dist-files.mk
+include $(TOP_DIR)/dist-files.mk
 
 PACKAGE_VERSION := @PACKAGE_VERSION@
 PACKAGE_TARNAME := @PACKAGE_TARNAME@
@@ -867,4 +868,4 @@
 	$(TAR) cf - $(DIST_FILES) | ( cd $(distdir) ; $(TAR) xpf - )
 	$(TAR) czf $(distdir).tar.gz $(distdir)
 
-include binary-dist-rules.mk
+include $(TOP_DIR)/binary-dist-rules.mk
--- a/binary-dist-rules.mk	Fri Dec 11 15:56:18 2015 -0500
+++ b/binary-dist-rules.mk	Wed Dec 23 08:11:04 2015 -0500
@@ -5,9 +5,9 @@
   OCTAVE_DIST_NAME := octave-$(DATE)
 endif
 
-OCTAVE_DIST_DIR := $(TOP_DIR)/dist/$(OCTAVE_DIST_NAME)
+OCTAVE_DIST_DIR := $(TOP_BUILD_DIR)/dist/$(OCTAVE_DIST_NAME)
 
-OCTAVE_NSI_FILE := $(TOP_DIR)/dist/octave.nsi
+OCTAVE_NSI_FILE := $(TOP_BUILD_DIR)/dist/octave.nsi
 
 ifeq ($(MXE_WINDOWS_BUILD),yes)
   TAR_H_OPTION := -h
@@ -35,7 +35,7 @@
 
 define delete-dist-directory
   echo "deleting previous dist directory..."
-  rm -rf $(TOP_DIR)/dist
+  rm -rf $(TOP_BUILD_DIR)/dist
 endef
 
 define make-dist-directory
@@ -62,13 +62,13 @@
       cp $(BUILD_TOOLS_PREFIX)/lib/gcc/$(TARGET)/*.dll $(OCTAVE_DIST_DIR)/bin
       cp $(BUILD_TOOLS_PREFIX)/lib/gcc/$(TARGET)/$(build-gcc_VERSION)/*.dll $(OCTAVE_DIST_DIR)/bin
       echo "  msys base files..."
-      cd $(TOP_DIR)/msys-base \
+      cd $(TOP_BUILD_DIR)/msys-base \
         && tar -c $(TAR_H_OPTION) -f - . | ( cd $(OCTAVE_DIST_DIR) ; tar xpf - )
       echo "  msys extension files..."
-      cd $(TOP_DIR)/msys-extension \
+      cd $(TOP_BUILD_DIR)/msys-extension \
         && tar -c $(TAR_H_OPTION) -f - . | ( cd $(OCTAVE_DIST_DIR) ; tar xpf - )
       echo "  notepad++..."
-      cd $(TOP_DIR) \
+      cd $(TOP_BUILD_DIR) \
           && tar -c $(TAR_H_OPTION) -f - notepad++ | ( cd $(OCTAVE_DIST_DIR) ; tar xpf - )
       echo "  README.html..."
       cp $(TOP_DIR)/installer-files/README.html $(OCTAVE_DIST_DIR)/
@@ -174,9 +174,9 @@
     rm -f $(OCTAVE_NSI_FILE); \
   fi
   echo "generating installer script..."
-  ./makeinst-script.sh $(OCTAVE_DIST_DIR) $(OCTAVE_NSI_FILE)
+  $(TOP_DIR)/makeinst-script.sh $(OCTAVE_DIST_DIR) $(OCTAVE_NSI_FILE)
   echo "generating installer..."
-  $(TARGET)-makensis $(OCTAVE_NSI_FILE) > $(TOP_DIR)/dist/nsis.log
+  $(TARGET)-makensis $(OCTAVE_NSI_FILE) > $(TOP_BUILD_DIR)/dist/nsis.log
 endef
 
 $(OCTAVE_DIST_NAME)-installer.exe: nsis binary-dist-files
@@ -187,7 +187,7 @@
 
 define make-zip-dist
   echo "generating zip file..."
-  cd $(TOP_DIR)/dist \
+  cd $(TOP_BUILD_DIR)/dist \
     && zip -q -9 -r $(OCTAVE_DIST_NAME).zip $(OCTAVE_DIST_NAME)
 endef
 
@@ -197,7 +197,7 @@
 
 define make-tar-dist
   echo "generating tar file..."
-  cd $(TOP_DIR)/dist \
+  cd $(TOP_BUILD_DIR)/dist \
     && tar -c -z -f $(OCTAVE_DIST_NAME).tgz $(OCTAVE_DIST_NAME)
 endef
 
--- a/configure.ac	Fri Dec 11 15:56:18 2015 -0500
+++ b/configure.ac	Wed Dec 23 08:11:04 2015 -0500
@@ -215,7 +215,7 @@
 AC_SUBST(MXE_SYSTEM)
 
 # set MXE_ROOTDIR for knowing the mxe root
-MXE_ROOTDIR=`cd $srcdir; pwd`
+MXE_ROOTDIR=`cd "$builddir"; pwd`
 AC_SUBST(MXE_ROOTDIR)
 
 AC_CONFIG_FILES([Makefile tools/set-mxe-env.sh])
--- a/makeinst-script.sh	Fri Dec 11 15:56:18 2015 -0500
+++ b/makeinst-script.sh	Wed Dec 23 08:11:04 2015 -0500
@@ -7,10 +7,10 @@
 fi
 
 OUTFILE="$2"
-TOPDIR=`dirname $1`
+TOPDIR=`dirname $0`
 OCTAVE_SOURCE=`basename $1`
 
-cd $TOPDIR
+cd `dirname $1`
 MXEDIR=`cd ..; pwd`
 
 if [ -e $OCTAVE_SOURCE/bin/libopenblas.dll ]; then
@@ -42,7 +42,7 @@
 !define OCTAVE_VERSION "$OCTAVE_VERSION"
 !define COPYRIGHT "Copyright © 2013 John W. Eaton and others."
 !define DESCRIPTION "GNU Octave is a high-level programming language, primarily intended for numerical computations."
-!define INSTALLER_FILES "../installer-files"
+!define INSTALLER_FILES "$TOPDIR/installer-files"
 !define INSTALLER_NAME "octave-$OCTAVE_VERSION-installer.exe"
 !define MAIN_APP_EXE "octave-firsttime.vbs"
 !define INSTALL_TYPE "SetShellVarContext current"
--- a/src/default-octave.mk	Fri Dec 11 15:56:18 2015 -0500
+++ b/src/default-octave.mk	Wed Dec 23 08:11:04 2015 -0500
@@ -163,9 +163,9 @@
     fi
 
     if [ $(MXE_SYSTEM) != msvc ]; then \
-        $(MAKE) -C '$(1)/.build' -j '$(JOBS)' DESTDIR=$(TOP_DIR)/octave install; \
+        $(MAKE) -C '$(1)/.build' -j '$(JOBS)' DESTDIR=$(TOP_BUILD_DIR)/octave install; \
     fi
 
     # create a file with latest installed octave rev in it
-    echo "$($(PKG)_VERSION)" > $(TOP_DIR)/octave/octave-version
+    echo "$($(PKG)_VERSION)" > $(TOP_BUILD_DIR)/octave/octave-version
 endef
--- a/src/octave.mk	Fri Dec 11 15:56:18 2015 -0500
+++ b/src/octave.mk	Wed Dec 23 08:11:04 2015 -0500
@@ -158,9 +158,9 @@
     fi
 
     if [ $(MXE_SYSTEM) != msvc ]; then \
-        $(MAKE) -C '$(1)/.build' -j '$(JOBS)' DESTDIR=$(TOP_DIR)/octave install; \
+        $(MAKE) -C '$(1)/.build' -j '$(JOBS)' DESTDIR=$(TOP_BUILD_DIR)/octave install; \
     fi
 
     # create a file with latest installed octave rev in it
-    echo "$($(PKG)_VERSION)" > $(TOP_DIR)/octave/octave-version
+    echo "$($(PKG)_VERSION)" > $(TOP_BUILD_DIR)/octave/octave-version
 endef
--- a/src/stable-octave.mk	Fri Dec 11 15:56:18 2015 -0500
+++ b/src/stable-octave.mk	Wed Dec 23 08:11:04 2015 -0500
@@ -154,9 +154,9 @@
     fi
 
     if [ $(MXE_SYSTEM) != msvc ]; then \
-        $(MAKE) -C '$(1)/.build' -j '$(JOBS)' DESTDIR=$(TOP_DIR)/octave install; \
+        $(MAKE) -C '$(1)/.build' -j '$(JOBS)' DESTDIR=$(TOP_BUILD_DIR)/octave install; \
     fi
 
     # create a file with latest installed octave rev in it
-    echo "$($(PKG)_VERSION)" > $(TOP_DIR)/octave/octave-version
+    echo "$($(PKG)_VERSION)" > $(TOP_BUILD_DIR)/octave/octave-version
 endef
--- a/tools/set-mxe-env.sh.in	Fri Dec 11 15:56:18 2015 -0500
+++ b/tools/set-mxe-env.sh.in	Wed Dec 23 08:11:04 2015 -0500
@@ -8,7 +8,7 @@
     MXE_INC_PATH="$MXEDIR/usr/include"
     MXE_LIB_PATH="$MXEDIR/usr/lib"
   else
-    HOST=$($MXEDIR/tools/config.guess)
+    HOST=$(@abs_top_srcdir@/tools/config.guess)
 
     MXE_PATH="$MXEDIR/usr/$HOST/bin:$MXEDIR/usr/bin"
     MXE_INC_PATH="$MXEDIR/usr/$HOST/include"