diff --git a/Makefile b/Makefile index 4bce409b..ffdaa339 100644 --- a/Makefile +++ b/Makefile @@ -403,6 +403,7 @@ build-only-$(1)_$(3): BUILD_$(if $(findstring shared,$(3)),SHARED,STATIC) = TRUE build-only-$(1)_$(3): LIB_SUFFIX = $(if $(findstring shared,$(3)),dll,a) build-only-$(1)_$(3): BITS = $(if $(findstring x86_64,$(3)),64,32) build-only-$(1)_$(3): CMAKE_TOOLCHAIN_FILE = $(PREFIX)/$(3)/share/cmake/mxe-conf.cmake +build-only-$(1)_$(3): CMAKE_TOOLCHAIN_DIR = $(PREFIX)/$(3)/share/cmake/mxe-conf.d build-only-$(1)_$(3): $(if $(value $(call LOOKUP_PKG_RULE,$(1),BUILD,$(3))), uname -a diff --git a/src/mxe-conf.mk b/src/mxe-conf.mk index 8086bc7f..d6e0e61d 100644 --- a/src/mxe-conf.mk +++ b/src/mxe-conf.mk @@ -4,3 +4,64 @@ PKG := mxe-conf $(PKG)_VERSION := 1 $(PKG)_UPDATE := echo 1 + +define $(PKG)_BUILD_COMMON + # install target-specific autotools config file + $(INSTALL) -d '$(PREFIX)/$(TARGET)/share' + echo "ac_cv_build=$(BUILD)" > '$(PREFIX)/$(TARGET)/share/config.site' + + # install config.guess for general use + $(INSTALL) -d '$(PREFIX)/bin' + $(INSTALL) -m755 '$(EXT_DIR)/config.guess' '$(PREFIX)/bin/' + + # create the CMake toolchain file + # individual packages (e.g. hdf5) should add their + # own files under CMAKE_TOOLCHAIN_DIR + [ -d '$(CMAKE_TOOLCHAIN_DIR)' ] || mkdir -p '$(CMAKE_TOOLCHAIN_DIR)' + (echo 'set(CMAKE_SYSTEM_NAME Windows)'; \ + echo 'set(MSYS 1)'; \ + echo 'set(BUILD_SHARED_LIBS $(if $(BUILD_SHARED),ON,OFF))'; \ + echo 'set(LIBTYPE $(if $(BUILD_SHARED),SHARED,STATIC))'; \ + echo 'set(CMAKE_BUILD_TYPE Release)'; \ + echo 'set(CMAKE_FIND_ROOT_PATH $(PREFIX)/$(TARGET))'; \ + 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(CMAKE_MODULE_PATH "$(PWD)/src/cmake" $${CMAKE_MODULE_PATH}) # For mxe FindPackage scripts'; \ + echo 'set(CMAKE_INSTALL_PREFIX $(PREFIX)/$(TARGET) CACHE PATH "Installation Prefix")'; \ + echo 'set(CMAKE_BUILD_TYPE Release CACHE STRING "Debug|Release|RelWithDebInfo|MinSizeRel")'; \ + echo 'set(CMAKE_CROSS_COMPILING ON) # Workaround for http://www.cmake.org/Bug/view.php?id=14075'; \ + echo 'set(CMAKE_RC_COMPILE_OBJECT " -O coff -o ") # Workaround for buggy windres rules'; \ + echo ''; \ + echo 'file(GLOB mxe_cmake_files'; \ + echo ' "$(CMAKE_TOOLCHAIN_DIR)/*.cmake"'; \ + echo ')'; \ + echo 'foreach(mxe_cmake_file $${mxe_cmake_files})'; \ + echo ' include($${mxe_cmake_file})'; \ + echo 'endforeach()'; \ + ) > '$(CMAKE_TOOLCHAIN_FILE)' +endef + +define $(PKG)_BUILD + $($(PKG)_BUILD_COMMON) + + # create pkg-config files for OpenGL/GLU + $(INSTALL) -d '$(PREFIX)/$(TARGET)/lib/pkgconfig' + (echo 'Name: gl'; \ + echo 'Version: 0'; \ + echo 'Description: OpenGL'; \ + echo 'Libs: -lopengl32';) \ + > '$(PREFIX)/$(TARGET)/lib/pkgconfig/gl.pc' + + (echo 'Name: glu'; \ + echo 'Version: 0'; \ + echo 'Description: OpenGL'; \ + echo 'Libs: -lglu32';) \ + > '$(PREFIX)/$(TARGET)/lib/pkgconfig/glu.pc' +endef + +$(PKG)_BUILD_$(BUILD) = $($(PKG)_BUILD_COMMON) diff --git a/src/pkgconf.mk b/src/pkgconf.mk index 9a23619f..084994cd 100644 --- a/src/pkgconf.mk +++ b/src/pkgconf.mk @@ -19,68 +19,21 @@ define $(PKG)_UPDATE echo $(pkgconf_VERSION) endef -define $(PKG)_BUILD_COMMON +define $(PKG)_BUILD cd '$(1)' && ./autogen.sh cd '$(1)' && ./configure \ --prefix='$(PREFIX)/$(TARGET)' $(MAKE) -C '$(1)' -j '$(JOBS)' $(MAKE) -C '$(1)' -j 1 install - # install target-specific autotools config file - $(INSTALL) -d '$(PREFIX)/$(TARGET)/share' - echo "ac_cv_build=$(BUILD)" > '$(PREFIX)/$(TARGET)/share/config.site' - - # install config.guess for general use - $(INSTALL) -d '$(PREFIX)/bin' - $(INSTALL) -m755 '$(EXT_DIR)/config.guess' '$(PREFIX)/bin/' - # create pkg-config script (echo '#!/bin/sh'; \ echo 'PKG_CONFIG_PATH="$(PREFIX)/$(TARGET)/qt5/lib/pkgconfig":"$$PKG_CONFIG_PATH_$(subst .,_,$(subst -,_,$(TARGET)))" PKG_CONFIG_LIBDIR='\''$(PREFIX)/$(TARGET)/lib/pkgconfig'\'' exec '$(PREFIX)/$(TARGET)/bin/pkgconf' $(if $(BUILD_STATIC),--static) "$$@"') \ > '$(PREFIX)/bin/$(TARGET)-pkg-config' chmod 0755 '$(PREFIX)/bin/$(TARGET)-pkg-config' - # create the CMake toolchain file - # individual packages (e.g. hdf5) should remove/append their own entries - [ -d '$(dir $(CMAKE_TOOLCHAIN_FILE))' ] || mkdir -p '$(dir $(CMAKE_TOOLCHAIN_FILE))' - (echo 'set(CMAKE_SYSTEM_NAME Windows)'; \ - echo 'set(MSYS 1)'; \ - echo 'set(BUILD_SHARED_LIBS $(if $(BUILD_SHARED),ON,OFF))'; \ - echo 'set(LIBTYPE $(if $(BUILD_SHARED),SHARED,STATIC))'; \ - echo 'set(CMAKE_BUILD_TYPE Release)'; \ - echo 'set(CMAKE_FIND_ROOT_PATH $(PREFIX)/$(TARGET))'; \ - 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(CMAKE_MODULE_PATH "$(PWD)/src/cmake" $${CMAKE_MODULE_PATH}) # For mxe FindPackage scripts'; \ - echo 'set(CMAKE_INSTALL_PREFIX $(PREFIX)/$(TARGET) CACHE PATH "Installation Prefix")'; \ - echo 'set(CMAKE_BUILD_TYPE Release CACHE STRING "Debug|Release|RelWithDebInfo|MinSizeRel")'; \ - echo 'set(CMAKE_CROSS_COMPILING ON) # Workaround for http://www.cmake.org/Bug/view.php?id=14075'; \ - echo 'set(CMAKE_RC_COMPILE_OBJECT " -O coff -o ") # Workaround for buggy windres rules'; \ - echo 'set(PKG_CONFIG_EXECUTABLE $(PREFIX)/bin/$(TARGET)-pkg-config)'; \ - ) > '$(CMAKE_TOOLCHAIN_FILE)' -endef - -define $(PKG)_BUILD - $($(PKG)_BUILD_COMMON) - - # create pkg-config files for OpenGL/GLU - $(INSTALL) -d '$(PREFIX)/$(TARGET)/lib/pkgconfig' - (echo 'Name: gl'; \ - echo 'Version: 0'; \ - echo 'Description: OpenGL'; \ - echo 'Libs: -lopengl32';) \ - > '$(PREFIX)/$(TARGET)/lib/pkgconfig/gl.pc' + # create cmake file + echo 'set(PKG_CONFIG_EXECUTABLE $(PREFIX)/bin/$(TARGET)-pkg-config)' \ + > '$(CMAKE_TOOLCHAIN_DIR)/pkgconf.cmake' - (echo 'Name: glu'; \ - echo 'Version: 0'; \ - echo 'Description: OpenGL'; \ - echo 'Libs: -lglu32';) \ - > '$(PREFIX)/$(TARGET)/lib/pkgconfig/glu.pc' endef - -$(PKG)_BUILD_$(BUILD) = $($(PKG)_BUILD_COMMON)