diff src/gcc.mk @ 3012:100e618349f7

Improve handling of prefix directories by defining HOST_PREFIX and BUILD_TOOLS_PREFIX variables in top-level Makefile.
author John W. Eaton <jwe@octave.org>
date Sun, 02 Jun 2013 10:31:04 -0400
parents 4f9b72cf7ee7
children bcc26ffe9a0f
line wrap: on
line diff
--- a/src/gcc.mk	Sat Jun 01 20:52:09 2013 -0400
+++ b/src/gcc.mk	Sun Jun 02 10:31:04 2013 -0400
@@ -12,18 +12,26 @@
   $(PKG)_DEPS :=
 else
   ifeq ($(MXE_NATIVE_BUILD),yes)
-    $(PKG)_DEPS := binutils gcc-gmp gcc-mpc gcc-mpfr
+    $(PKG)_DEPS := binutils
   else
     ifeq ($(MXE_SYSTEM),mingw)
-      $(PKG)_DEPS := mingwrt w32api binutils gcc-gmp gcc-mpc gcc-mpfr
-    else
+      $(PKG)_DEPS := mingwrt w32api binutils
     endif
   endif
 endif
+
 ifneq ($(BUILD_SHARED),yes)
-$(PKG)_STATIC_FLAG := --static
+  $(PKG)_STATIC_FLAG := --static
 endif
 
+ifeq ($(MXE_SYSTEM),mingw)
+  $(PKG)_SYSDEP_CONFIGURE_OPTIONS := \
+    --disable-sjlj-exceptions \
+    --disable-win32-registry \
+    --enable-threads=win32
+endif
+
+
 define $(PKG)_UPDATE
     $(WGET) -q -O- 'http://ftp.gnu.org/gnu/gcc/?C=M;O=D' | \
     $(SED) -n 's,.*<a href="gcc-\([0-9][^"]*\)/".*,\1,p' | \
@@ -50,7 +58,7 @@
        echo 'set(BUILD_STATIC_LIBS OFF)'; \
      fi; \
      echo 'set(CMAKE_BUILD_TYPE Release)'; \
-     echo 'set(CMAKE_FIND_ROOT_PATH $(PREFIX)/$(TARGET))'; \
+     echo 'set(CMAKE_FIND_ROOT_PATH $(HOST_PREFIX))'; \
      echo 'set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)'; \
      echo 'set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)'; \
      echo 'set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)'; \
@@ -60,53 +68,41 @@
      echo 'set(CMAKE_RC_COMPILER $(MXE_WINDRES))'; \
      echo 'set(PKG_CONFIG_EXECUTABLE $(MXE_PKG_CONFIG))'; \
      echo 'set(QT_QMAKE_EXECUTABLE $(MXE_QMAKE))'; \
-     echo 'set(CMAKE_INSTALL_PREFIX $(PREFIX)/$(TARGET) CACHE PATH "Installation Prefix")'; \
+     echo 'set(CMAKE_INSTALL_PREFIX $(HOST_PREFIX) CACHE PATH "Installation Prefix")'; \
      echo 'set(CMAKE_BUILD_TYPE Release CACHE STRING "Debug|Release|RelWithDebInfo|MinSizeRel")') \
      > '$(CMAKE_TOOLCHAIN_FILE)'
 endef
 else
 define $(PKG)_BUILD
-    # unpack support libraries
-    cd '$(1)' && $(call UNPACK_PKG_ARCHIVE,gcc-gmp)
-    mv '$(1)/$(gcc-gmp_SUBDIR)' '$(1)/gmp'
-    cd '$(1)' && $(call UNPACK_PKG_ARCHIVE,gcc-mpc)
-    mv '$(1)/$(gcc-mpc_SUBDIR)' '$(1)/mpc'
-    cd '$(1)' && $(call UNPACK_PKG_ARCHIVE,gcc-mpfr)
-    mv '$(1)/$(gcc-mpfr_SUBDIR)' '$(1)/mpfr'
-
-    # build GCC and support libraries
+    cd '$(1)' && ./contrib/download_prerequisites
     mkdir '$(1).build'
     cd    '$(1).build' && '$(1)/configure' \
         --target='$(TARGET)' \
         --build="`config.guess`" \
-        --prefix='$(PREFIX)' \
-        --libdir='$(PREFIX)/lib' \
-        --enable-languages='c,c++,objc,fortran' \
+        --prefix='$(BUILD_TOOLS_PREFIX)' \
+        --libdir='$(BUILD_TOOLS_PREFIX)/lib' \
+        --enable-languages='c,c++,fortran' \
         --enable-version-specific-runtime-libs \
         --with-gcc \
         --with-gnu-ld \
         --with-gnu-as \
         --disable-nls \
         $(ENABLE_SHARED_OR_STATIC) \
-        --disable-sjlj-exceptions \
         --without-x \
-        --disable-win32-registry \
-        --enable-threads=win32 \
+        $($(PKG)_SYSDEP_CONFIGURE_OPTIONS) \
         --disable-libgomp \
         --disable-libmudflap \
-        --with-mpfr-include='$(1)/mpfr/src' \
-        --with-mpfr-lib='$(1).build/mpfr/src/.libs' \
         $(shell [ `uname -s` == Darwin ] && echo "LDFLAGS='-Wl,-no_pie'")
     $(MAKE) -C '$(1).build' -j '$(JOBS)'
     $(MAKE) -C '$(1).build' -j 1 install
-    mkdir -p $(PREFIX)/../cross-tools/$(MXE_BINDIR)
-    $(MAKE) -C '$(1).build' -j 1 DESTDIR=$(PREFIX)/../cross-tools install
+    mkdir -p $(TOP_DIR)/cross-tools/$(MXE_BINDIR)
+    $(MAKE) -C '$(1).build' -j 1 DESTDIR=$(TOP_DIR)/cross-tools install
 
     # create pkg-config script
     (echo '#!/bin/sh'; \
      echo 'PKG_CONFIG_PATH="$$PKG_CONFIG_PATH_$(subst -,_,$(TARGET))" PKG_CONFIG_LIBDIR='\''$(MXE_LIBDIR)/pkgconfig'\'' exec pkg-config $($(PKG)_STATIC_FLAG) "$$@"') \
-             > '$(PREFIX)/bin/$(TARGET)-pkg-config'
-    chmod 0755 '$(PREFIX)/bin/$(TARGET)-pkg-config'
+             > '$(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-pkg-config'
+    chmod 0755 '$(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-pkg-config'
 
     # create the CMake toolchain file
     [ -d '$(dir $(CMAKE_TOOLCHAIN_FILE))' ] || mkdir -p '$(dir $(CMAKE_TOOLCHAIN_FILE))'
@@ -123,17 +119,17 @@
        echo 'set(BUILD_STATIC_LIBS OFF)'; \
      fi; \
      echo 'set(CMAKE_BUILD_TYPE Release)'; \
-     echo 'set(CMAKE_FIND_ROOT_PATH $(PREFIX)/$(TARGET))'; \
+     echo 'set(CMAKE_FIND_ROOT_PATH $(HOST_PREFIX))'; \
      echo 'set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)'; \
      echo 'set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)'; \
      echo 'set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)'; \
-     echo 'set(CMAKE_C_COMPILER $(PREFIX)/bin/$(TARGET)-gcc)'; \
-     echo 'set(CMAKE_CXX_COMPILER $(PREFIX)/bin/$(TARGET)-g++)'; \
-     echo 'set(CMAKE_Fortran_COMPILER $(PREFIX)/bin/$(TARGET)-gfortran)'; \
-     echo 'set(CMAKE_RC_COMPILER $(PREFIX)/bin/$(TARGET)-windres)'; \
-     echo 'set(PKG_CONFIG_EXECUTABLE $(PREFIX)/bin/$(TARGET)-pkg-config)'; \
-     echo 'set(QT_QMAKE_EXECUTABLE $(PREFIX)/bin/$(TARGET)-qmake)'; \
-     echo 'set(CMAKE_INSTALL_PREFIX $(PREFIX)/$(TARGET) CACHE PATH "Installation Prefix")'; \
+     echo 'set(CMAKE_C_COMPILER $(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-gcc)'; \
+     echo 'set(CMAKE_CXX_COMPILER $(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-g++)'; \
+     echo 'set(CMAKE_Fortran_COMPILER $(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-gfortran)'; \
+     echo 'set(CMAKE_RC_COMPILER $(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-windres)'; \
+     echo 'set(PKG_CONFIG_EXECUTABLE $(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-pkg-config)'; \
+     echo 'set(QT_QMAKE_EXECUTABLE $(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-qmake)'; \
+     echo 'set(CMAKE_INSTALL_PREFIX $(HOST_PREFIX) CACHE PATH "Installation Prefix")'; \
      echo 'set(CMAKE_BUILD_TYPE Release CACHE STRING "Debug|Release|RelWithDebInfo|MinSizeRel")') \
      > '$(CMAKE_TOOLCHAIN_FILE)'
 endef