Mercurial > mxe-octave
diff Makefile @ 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 | 23989e9403a3 |
children | bcc26ffe9a0f |
line wrap: on
line diff
--- a/Makefile Sat Jun 01 20:52:09 2013 -0400 +++ b/Makefile Sun Jun 02 10:31:04 2013 -0400 @@ -1,6 +1,10 @@ # This file is part of MXE. # See index.html for further information. +PWD := $(shell pwd) + +## Configuration variables. + # Set the following configuration variables with a configure script? # Current valid values are mingw (cross) and gnu-linux (native). @@ -11,8 +15,10 @@ MXE_NATIVE_BUILD := no #MXE_NATIVE_BUILD := yes -# Set to "yes" to use the verions of GCC and binutils already -# installed on your system. +# Set to "yes" to use the versions of GCC and binutils already +# installed on your system. NOTE: building a copy of GCC for a +# native build does not appear to work correctly yet, so for now you +# must set USE_SYSTEM_GCC to yes if MXE_NATIVE_BUILD is set to yes. USE_SYSTEM_GCC := no #USE_SYSTEM_GCC := yes @@ -35,6 +41,12 @@ ## end of configuration variables. +# These can't be chosen arbitrarily. The way things are configured now, +# GCC expects to find cross-compiler include files in $(PREFIX)/$(TARGET). +# and it's not clear to me how to change that. +BUILD_TOOLS_PREFIX := $(PWD)/usr +HOST_PREFIX := $(PWD)/usr/$(TARGET) + ifeq ($(BUILD_SHARED),yes) ifeq ($(BUILD_STATIC),yes) ENABLE_SHARED_OR_STATIC := --enable-shared --enable-static @@ -59,7 +71,6 @@ PKG_MIRROR := s3.amazonaws.com/mxe-pkg PKG_CDN := d1yihgixbnrglp.cloudfront.net -PWD := $(shell pwd) SHELL := bash INSTALL := $(shell ginstall --help >/dev/null 2>&1 && echo g)install @@ -76,21 +87,19 @@ LIBTOOLIZE := libtoolize BUILD_TOOLS := $(patsubst src/%.mk, %, $(wildcard src/build-*.mk)) -PREFIX := $(PWD)/usr +STAMP_DIR := $(PWD)/installed-packages +MSYS_INFO_DIR := $(PWD)/msys-info LOG_DIR := $(PWD)/log TIMESTAMP := $(shell date +%Y%m%d_%H%M%S) PKG_DIR := $(PWD)/pkg TMP_DIR = $(PWD)/tmp-$(1) -MAKEFILE := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) -TOP_DIR := $(patsubst %/,%,$(dir $(MAKEFILE))) +TOP_DIR := $(PWD) +MAKEFILE := $(TOP_DIR)/Makefile PKGS := $(filter-out $(BUILD_TOOLS), $(shell $(SED) -n 's/^.* id="\([^"]*\)-package">.*$$/\1/p' '$(TOP_DIR)/index.html')) -PATH := $(PREFIX)/bin:$(PATH) -ifeq ($(MXE_NATIVE_BUILD),yes) - PATH := $(PREFIX)/$(TARGET)/bin:$(PATH) -endif +PATH := $(BUILD_TOOLS_PREFIX)/bin:$(PATH) -CONFIGURE_CPPFLAGS := CPPFLAGS='-I$(PREFIX)/$(TARGET)/include' -CONFIGURE_LDFLAGS := LDFLAGS='-L$(PREFIX)/$(TARGET)/lib' +CONFIGURE_CPPFLAGS := CPPFLAGS='-I$(HOST_PREFIX)/include' +CONFIGURE_LDFLAGS := LDFLAGS='-L$(HOST_PREFIX)/lib' ifeq ($(MXE_NATIVE_BUILD),yes) MXE_AR := ar @@ -106,36 +115,36 @@ MXE_PKG_CONFIG := pkg-config MXE_QMAKE := qmake else - MXE_AR := '$(PREFIX)/bin/$(TARGET)-ar' - MXE_RANLIB := '$(PREFIX)/bin/$(TARGET)-ranlib' - MXE_CC := '$(PREFIX)/bin/$(TARGET)-gcc' - MXE_CXX := '$(PREFIX)/bin/$(TARGET)-g++' - MXE_F77 := '$(PREFIX)/bin/$(TARGET)-gfortran' + MXE_AR := '$(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-ar' + MXE_RANLIB := '$(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-ranlib' + MXE_CC := '$(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-gcc' + MXE_CXX := '$(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-g++' + MXE_F77 := '$(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-gfortran' ifeq ($(MXE_SYSTEM),mingw) - MXE_WINDRES := '$(PREFIX)/bin/$(TARGET)-windres' + MXE_WINDRES := '$(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-windres' else MXE_WINDRES := true endif - MXE_PKG_CONFIG := '$(PREFIX)/bin/$(TARGET)-pkg-config' - MXE_QMAKE := '$(PREFIX)/bin/$(TARGET)-qmake' + MXE_PKG_CONFIG := '$(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-pkg-config' + MXE_QMAKE := '$(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-qmake' endif ifeq ($(MXE_SYSTEM),mingw) MAKE_SHARED_FROM_STATIC_OPTIONS := --windowsdll endif -MXE_BINDIR := '$(PREFIX)/$(TARGET)/bin' -MXE_LIBDIR := '$(PREFIX)/$(TARGET)/lib' -MXE_INCDIR := '$(PREFIX)/$(TARGET)/include' +MXE_BINDIR := '$(HOST_PREFIX)/bin' +MXE_LIBDIR := '$(HOST_PREFIX)/lib' +MXE_INCDIR := '$(HOST_PREFIX)/include' ifeq ($(MXE_SYSTEM),mingw) ifneq ($(MXE_NATIVE_BUILD),yes) MSYS_BASE_URL := http://sourceforge.net/projects/mingw/files/MSYS/Base MSYS_BASE_VER := 1.0.13 - MSYS_BASE_DIR := $(PREFIX)/../msys-base + MSYS_BASE_DIR := $(TOP_DIR)/msys-base MSYS_BASE_PACKAGES := $(addprefix msys-,bash coreutils diffutils file findutils gawk grep gzip less libiconv libintl libmagic make msys-core regex sed tar termcap) - NOTEPAD_BASE_DIR := $(PREFIX)/../notepad++ + NOTEPAD_BASE_DIR := $(TOP_DIR)/notepad++ endif else LD_LIBRARY_PATH := '$(MXE_LIBDIR)' @@ -161,7 +170,7 @@ MAKE_SHARED_FROM_STATIC := \ $(TOP_DIR)/tools/make-shared-from-static $(MAKE_SHARED_FROM_STATIC_OPTIONS) -CMAKE_TOOLCHAIN_FILE := $(PREFIX)/$(TARGET)/share/cmake/mxe-conf.cmake +CMAKE_TOOLCHAIN_FILE := $(HOST_PREFIX)/share/cmake/mxe-conf.cmake # unexport any environment variables that might cause trouble unexport AR CC CFLAGS C_INCLUDE_PATH CPATH CPLUS_INCLUDE_PATH CPP @@ -253,15 +262,15 @@ fi endef -check-requirements: $(PREFIX)/installed/check-requirements -$(PREFIX)/installed/check-requirements: $(MAKEFILE) +check-requirements: $(STAMP_DIR)/check-requirements +$(STAMP_DIR)/check-requirements: $(MAKEFILE) @echo '[check requirements]' $(foreach REQUIREMENT,$(REQUIREMENTS),$(call CHECK_REQUIREMENT,$(REQUIREMENT))) - @[ -d '$(PREFIX)/installed' ] || mkdir -p '$(PREFIX)/installed' + @[ -d '$(STAMP_DIR)' ] || mkdir -p '$(STAMP_DIR)' @if test "$(USE_SYSTEM_GCC)" = yes; then \ - $(INSTALL) -d '$(PREFIX)/bin' ; \ - $(INSTALL) -m 755 tools/config.guess '$(PREFIX)/bin/config.guess' ; \ - $(INSTALL) -m 755 tools/config.sub '$(PREFIX)/bin/config.sub' ; \ + $(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' ; \ fi @touch '$@' @@ -290,11 +299,11 @@ fi .PHONY: $(1) -$(1): $(PREFIX)/installed/$(1) -$(PREFIX)/installed/$(1): $(TOP_DIR)/src/$(1).mk \ +$(1): $(STAMP_DIR)/$(1) +$(STAMP_DIR)/$(1): $(TOP_DIR)/src/$(1).mk \ $(wildcard $(TOP_DIR)/src/$(1)-*.patch) \ $(wildcard $(TOP_DIR)/src/$(1)-test*) \ - $(addprefix $(PREFIX)/installed/,$($(1)_DEPS)) \ + $(addprefix $(STAMP_DIR)/,$($(1)_DEPS)) \ | check-requirements @[ -d '$(LOG_DIR)/$(TIMESTAMP)' ] || mkdir -p '$(LOG_DIR)/$(TIMESTAMP)' @if ! $(call CHECK_PKG_ARCHIVE,$(1)); then \ @@ -344,15 +353,18 @@ (du -k -d 0 '$(2)' 2>/dev/null || du -k --max-depth 0 '$(2)') | $(SED) -n 's/^\(\S*\).*/du: \1 KiB/p' rm -rfv '$(2)' ,) - [ -d '$(PREFIX)/installed' ] || mkdir -p '$(PREFIX)/installed' - touch '$(PREFIX)/installed/$(1)' + [ -d '$(STAMP_DIR)' ] || mkdir -p '$(STAMP_DIR)' + touch '$(STAMP_DIR)/$(1)' endef $(foreach PKG,$(PKGS),$(eval $(call PKG_RULE,$(PKG),$(call TMP_DIR,$(PKG))))) $(foreach TOOL,$(BUILD_TOOLS),$(eval $(call PKG_RULE,$(TOOL),$(call TMP_DIR,$(TOOL))))) .PHONY: clean clean: - rm -rf $(call TMP_DIR,*) $(PREFIX)/* + rm -rf $(call TMP_DIR,*) $(BUILD_TOOLS_PREFIX) + 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 .PHONY: clean-pkg clean-pkg: