You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mxe/src/cmake-conf.mk

66 lines
2.4 KiB

# This file is part of MXE. See LICENSE.md for licensing information.
PKG := cmake-conf
$(PKG)_VERSION := 1
$(PKG)_UPDATE := echo 1
$(PKG)_TARGETS := $(BUILD) $(MXE_TARGETS)
$(PKG)_DEPS := $(BUILD)~$(PKG)
$(PKG)_FILE_DEPS := $(wildcard $(PWD)/src/cmake/*/*)
$(PKG)_DEPS_$(BUILD) := cmake
# ensure conf is also built for a minimal `make cc cmake`
cmake: cmake-conf
define $(PKG)_BUILD
# create the CMake toolchain file using template
# individual packages (e.g. hdf5) should add their
# own files under CMAKE_TOOLCHAIN_DIR
mkdir -p '$(CMAKE_TOOLCHAIN_DIR)'
touch '$(CMAKE_TOOLCHAIN_DIR)/.gitkeep'
cmake-configure-file \
-DCMAKE_VERSION=$(cmake_VERSION) \
-DCMAKE_SHARED_BOOL=$(CMAKE_SHARED_BOOL) \
-DCMAKE_STATIC_BOOL=$(CMAKE_STATIC_BOOL) \
-DLIBTYPE=$(if $(BUILD_SHARED),SHARED,STATIC) \
-DPROCESSOR=$(PROCESSOR) \
-DPREFIX=$(PREFIX) \
-DTARGET=$(TARGET) \
-DBUILD=$(BUILD) \
-DCMAKE_TOOLCHAIN_DIR='$(CMAKE_TOOLCHAIN_DIR)' \
-DINPUT='$(PWD)/src/cmake/conf/mxe-conf.cmake.in' \
-DOUTPUT='$(CMAKE_TOOLCHAIN_FILE)'
#create prefixed cmake wrapper script
cmake-configure-file \
-DCMAKE_VERSION=$(cmake_VERSION) \
-DPREFIX=$(PREFIX) \
-DTARGET=$(TARGET) \
-DBUILD=$(BUILD) \
-DCMAKE_TOOLCHAIN_FILE='$(CMAKE_TOOLCHAIN_FILE)' \
-DCMAKE_RUNRESULT_FILE='$(CMAKE_RUNRESULT_FILE)' \
-DINPUT='$(PWD)/src/cmake/conf/target-cmake.in' \
-DOUTPUT='$(PREFIX)/bin/$(TARGET)-cmake'
chmod 0755 '$(PREFIX)/bin/$(TARGET)-cmake'
ln -sf '$(PREFIX)/$(BUILD)/bin/cpack' '$(PREFIX)/bin/$(TARGET)-cpack'
endef
define $(PKG)_BUILD_$(BUILD)
# install cmake modules
mkdir -p '$(PREFIX)/share/cmake/modules'
$(INSTALL) -m644 '$(PWD)/src/cmake/modules/'* '$(PREFIX)/share/cmake/modules'
# install cmake-configure-file for general use
# cmake-configure-file -DINPUT -DOUTPUT -DFOO -DBAR -D...
mkdir -p '$(PREFIX)/bin'
echo 'configure_file($${INPUT} $${OUTPUT} @ONLY)' \
> '$(PREFIX)/share/cmake/modules/configure_file.cmake'
(echo '#!/usr/bin/env bash'; \
echo 'exec "$(PREFIX)/$(BUILD)/bin/cmake" "$$@" \
-P "$(PREFIX)/share/cmake/modules/configure_file.cmake"'; \
) \
> '$(PREFIX)/bin/cmake-configure-file'
chmod 0755 '$(PREFIX)/bin/cmake-configure-file'
endef