Mercurial > mxe-octave
diff Makefile.in @ 3048:5ef49fb3299d
treat gcc and binutils as build tools
use a separate target for building the cmake toolchain file
don't unpack gcc or binutils if we are using the system compiler
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 14 Jun 2013 16:51:29 -0400 |
parents | f23cc822f52d |
children | b374f89bc920 |
line wrap: on
line diff
--- a/Makefile.in Thu Jun 13 22:55:24 2013 -0400 +++ b/Makefile.in Fri Jun 14 16:51:29 2013 -0400 @@ -28,10 +28,10 @@ endif BUILD_SYSTEM := $(shell tools/config.guess) -# Enable shared or static libs, or perhaps both. At least one -# package uses --with instead of --enable. Probably it doesn't +# Enable shared or static libs, or perhaps both. Probably it doesn't # make sense to disable both... BUILD_SHARED := @BUILD_SHARED@ +BUILD_STATIC := @BUILD_STATIC@ USE_PIC_FLAG := @BUILD_STATIC@ @@ -62,6 +62,7 @@ BUILD_TOOLS_PREFIX := $(PWD)/usr HOST_PREFIX := $(PWD)/usr/$(TARGET) +# At least one package uses --with instead of --enable. ifeq ($(BUILD_SHARED),yes) ifeq ($(BUILD_STATIC),yes) ENABLE_SHARED_OR_STATIC := --enable-shared --enable-static @@ -95,7 +96,7 @@ --user-agent=$(shell wget --version | \ $(SED) -n 's,GNU \(Wget\) \([0-9.]*\).*,\1/\2,p') -REQUIREMENTS := bash bzip2 gcc $(MAKE) openssl $(PATCH) $(PERL) \ +REQUIREMENTS := bash bzip2 $(MAKE) openssl $(PATCH) $(PERL) \ $(SED) unzip wget xz ifeq ($(MXE_NATIVE_MINGW_BUILD),yes) @@ -104,11 +105,20 @@ LIBTOOL := libtool LIBTOOLIZE := libtoolize -BUILD_TOOLS := $(patsubst src/%.mk, %, $(wildcard src/build-*.mk)) + +## Build tools are tools that we need to build everything else. +## They run on the build system. Some, like gcc and binutils may +## generate output that runs on the host system (TARGET in MXE terms). +ALL_BUILD_TOOLS := $(patsubst src/%.mk, %, $(wildcard src/build-*.mk)) +BUILD_COMPILER_TOOLS := build-gcc build-binutils +BUILD_TOOLS := $(ALL_BUILD_TOOLS) # Building flex for native mingw fails, so disable it. ifeq ($(MXE_NATIVE_MINGW_BUILD),yes) BUILD_TOOLS := $(filter-out build-flex, $(BUILD_TOOLS)) endif +ifeq ($(USE_SYSTEM_GCC),yes) + BUILD_TOOLS := $(filter-out $(BUILD_COMPILER_TOOLS), $(BUILD_TOOLS)) +endif STAMP_DIR := $(PWD)/installed-packages MSYS_INFO_DIR := $(PWD)/msys-info @@ -118,7 +128,7 @@ TMP_DIR = $(PWD)/tmp-$(1) TOP_DIR := $(PWD) MAKEFILE := $(TOP_DIR)/Makefile -PKGS := $(filter-out $(BUILD_TOOLS), $(shell $(SED) -n 's/^.* id="\([^"]*\)-package">.*$$/\1/p' '$(TOP_DIR)/index.html')) +PKGS := $(filter-out $(ALL_BUILD_TOOLS), $(shell $(SED) -n 's/^.* id="\([^"]*\)-package">.*$$/\1/p' '$(TOP_DIR)/index.html')) ifeq ($(MXE_NATIVE_MINGW_BUILD),yes) PATH := $(HOST_PREFIX)/bin:$(PATH) @@ -225,7 +235,7 @@ $(if $(filter %.tar.lzma,$(1)),xz -dc -F lzma '$(1)' | tar xf -, \ $(if $(filter %.tar.xz,$(1)),xz -dc '$(1)' | tar xf -, \ $(if $(filter %.zip, $(1)),unzip -q '$(1)', \ - $(error Unknown archive format: $(1))))))))) + $(error Unknown archive format for $(2): $(1))))))))) else UNPACK_ARCHIVE = \ $(if $(filter %.tgz, $(1)),tar xzf '$(1)', \ @@ -234,11 +244,11 @@ $(if $(filter %.tar.lzma,$(1)),xz -dc -F lzma '$(1)' | tar xf -, \ $(if $(filter %.tar.xz,$(1)),xz -dc '$(1)' | tar xf -, \ $(if $(filter %.zip, $(1)),unzip -q '$(1)', \ - $(error Unknown archive format: $(1)))))))) + $(error Unknown archive format for $(2): $(1)))))))) endif UNPACK_PKG_ARCHIVE = \ - $(call UNPACK_ARCHIVE,$(PKG_DIR)/$($(1)_FILE)) + $(call UNPACK_ARCHIVE,$(PKG_DIR)/$($(1)_FILE),$(1)) PKG_CHECKSUM = \ openssl sha1 '$(PKG_DIR)/$($(1)_FILE)' 2>/dev/null | $(SED) -n 's,^.*\([0-9a-f]\{40\}\)$$,\1,p' @@ -279,7 +289,7 @@ .PHONY: all-packages all-packages: $(PKGS) -$(PKGS): $(BUILD_TOOLS) +$(PKGS): $(BUILD_TOOLS) cmake-toolchain-file.stamp .PHONY: msys-base msys-base: $(MSYS_BASE_PACKAGES) @@ -334,7 +344,7 @@ '$(TOP_DIR)/index.html' \ ))) -include $(patsubst %,$(TOP_DIR)/src/%.mk,$(BUILD_TOOLS)) +include $(patsubst %,$(TOP_DIR)/src/%.mk,$(ALL_BUILD_TOOLS)) include $(patsubst %,$(TOP_DIR)/src/%.mk,$(PKGS)) .PHONY: download @@ -415,6 +425,7 @@ rm -rf $(STAMP_DIR) $(MSYS_INFO_DIR) $(LOG_DIR) rm -rf $(MSYS_BASE_DIR) $(NOTEPAD_BASE_DIR) rm -rf native-tools cross-tools octave gnuplot + rm -f Makefile cmake-toolchain-file.stamp .PHONY: clean-pkg clean-pkg: @@ -461,6 +472,43 @@ rm -f $(TOP_DIR)/tmp-cleanup-style; \ ) +define build-cmake-toolchain-file + # create the CMake toolchain file + [ -d '$(dir $(CMAKE_TOOLCHAIN_FILE))' ] || mkdir -p '$(dir $(CMAKE_TOOLCHAIN_FILE))' + (if [ $(MXE_SYSTEM) = mingw ]; then \ + echo 'set(CMAKE_SYSTEM_NAME Windows)'; \ + echo 'set(MSYS 1)'; \ + fi; \ + if [ $(BUILD_SHARED) = yes ]; then \ + echo 'set(BUILD_SHARED_LIBS ON)'; \ + else \ + echo 'set(BUILD_SHARED_LIBS OFF)'; \ + fi; \ + if [ $(BUILD_STATIC) = yes ]; then \ + echo 'set(BUILD_STATIC_LIBS ON)'; \ + else \ + echo 'set(BUILD_STATIC_LIBS OFF)'; \ + fi; \ + echo 'set(CMAKE_BUILD_TYPE Release)'; \ + 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 $(MXE_CC))'; \ + echo 'set(CMAKE_CXX_COMPILER $(MXE_CXX))'; \ + echo 'set(CMAKE_Fortran_COMPILER $(MXE_F77))'; \ + 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 $(HOST_PREFIX) CACHE PATH "Installation Prefix")'; \ + echo 'set(CMAKE_BUILD_TYPE Release CACHE STRING "Debug|Release|RelWithDebInfo|MinSizeRel")') \ + > '$(CMAKE_TOOLCHAIN_FILE)' +endef + +cmake-toolchain-file.stamp: + $(build-cmake-toolchain-file) + touch cmake-toolchain-file.stamp + # Files to distribute include dist-files.mk