294e908a2c
cmake checks the build system and its variables on its own to detect if the makefiles need to be regenerated. Unfortunately this can invalidate overrides passed in the Build/Configure step. On non-Linux systems this breaks the build when switching between targets of the same package architecture. Fix this by forcibly disabling the build system check and relying on the LEDE build system to take care of these things Signed-off-by: Felix Fietkau <nbd@nbd.name>
113 lines
3.8 KiB
Makefile
113 lines
3.8 KiB
Makefile
cmake_bool = $(patsubst %,-D%:BOOL=$(if $($(1)),ON,OFF),$(2))
|
|
|
|
PKG_INSTALL:=1
|
|
|
|
ifneq ($(findstring c,$(OPENWRT_VERBOSE)),)
|
|
MAKE_FLAGS+=VERBOSE=1
|
|
endif
|
|
|
|
CMAKE_BINARY_DIR = $(PKG_BUILD_DIR)$(if $(CMAKE_BINARY_SUBDIR),/$(CMAKE_BINARY_SUBDIR))
|
|
CMAKE_SOURCE_DIR = $(PKG_BUILD_DIR)
|
|
HOST_CMAKE_SOURCE_DIR = $(HOST_BUILD_DIR)
|
|
MAKE_PATH = $(firstword $(CMAKE_BINARY_SUBDIR) .)
|
|
|
|
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
|
cmake_tool=$(TOOLCHAIN_DIR)/bin/$(1)
|
|
else
|
|
cmake_tool=$(shell which $(1))
|
|
endif
|
|
|
|
ifeq ($(CONFIG_CCACHE),)
|
|
CMAKE_C_COMPILER:=$(call cmake_tool,$(TARGET_CC))
|
|
CMAKE_CXX_COMPILER:=$(call cmake_tool,$(TARGET_CXX))
|
|
CMAKE_C_COMPILER_ARG1:=
|
|
CMAKE_CXX_COMPILER_ARG1:=
|
|
else
|
|
CCACHE:=$(STAGING_DIR_HOST)/bin/ccache
|
|
CMAKE_C_COMPILER:=$(CCACHE)
|
|
CMAKE_C_COMPILER_ARG1:=$(TARGET_CC_NOCACHE)
|
|
CMAKE_CXX_COMPILER:=$(CCACHE)
|
|
CMAKE_CXX_COMPILER_ARG1:=$(TARGET_CXX_NOCACHE)
|
|
endif
|
|
CMAKE_AR:=$(call cmake_tool,$(TARGET_AR))
|
|
CMAKE_NM:=$(call cmake_tool,$(TARGET_NM))
|
|
CMAKE_RANLIB:=$(call cmake_tool,$(TARGET_RANLIB))
|
|
|
|
CMAKE_FIND_ROOT_PATH:=$(STAGING_DIR)/usr;$(TOOLCHAIN_DIR)$(if $(CONFIG_EXTERNAL_TOOLCHAIN),;$(CONFIG_TOOLCHAIN_ROOT))
|
|
CMAKE_HOST_FIND_ROOT_PATH:=$(STAGING_DIR)/host;$(STAGING_DIR_HOSTPKG);$(STAGING_DIR_HOST)
|
|
CMAKE_SHARED_LDFLAGS:=-Wl,-Bsymbolic-functions
|
|
|
|
define Build/Configure/Default
|
|
mkdir -p $(CMAKE_BINARY_DIR)
|
|
(cd $(CMAKE_BINARY_DIR); \
|
|
CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)" \
|
|
CXXFLAGS="$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS)" \
|
|
LDFLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)" \
|
|
cmake \
|
|
-DCMAKE_SYSTEM_NAME=Linux \
|
|
-DCMAKE_SYSTEM_VERSION=1 \
|
|
-DCMAKE_SYSTEM_PROCESSOR=$(ARCH) \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_C_FLAGS_RELEASE="-DNDEBUG" \
|
|
-DCMAKE_CXX_FLAGS_RELEASE="-DNDEBUG" \
|
|
-DCMAKE_C_COMPILER="$(CMAKE_C_COMPILER)" \
|
|
-DCMAKE_C_COMPILER_ARG1="$(CMAKE_C_COMPILER_ARG1)" \
|
|
-DCMAKE_CXX_COMPILER="$(CMAKE_CXX_COMPILER)" \
|
|
-DCMAKE_CXX_COMPILER_ARG1="$(CMAKE_CXX_COMPILER_ARG1)" \
|
|
-DCMAKE_ASM_COMPILER="$(CMAKE_C_COMPILER)" \
|
|
-DCMAKE_ASM_COMPILER_ARG1="$(CMAKE_C_COMPILER_ARG1)" \
|
|
-DCMAKE_EXE_LINKER_FLAGS:STRING="$(TARGET_LDFLAGS)" \
|
|
-DCMAKE_MODULE_LINKER_FLAGS:STRING="$(TARGET_LDFLAGS) $(CMAKE_SHARED_LDFLAGS)" \
|
|
-DCMAKE_SHARED_LINKER_FLAGS:STRING="$(TARGET_LDFLAGS) $(CMAKE_SHARED_LDFLAGS)" \
|
|
-DCMAKE_AR="$(CMAKE_AR)" \
|
|
-DCMAKE_NM="$(CMAKE_NM)" \
|
|
-DCMAKE_RANLIB="$(CMAKE_RANLIB)" \
|
|
-DCMAKE_FIND_ROOT_PATH="$(CMAKE_FIND_ROOT_PATH)" \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=BOTH \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \
|
|
-DCMAKE_STRIP=: \
|
|
-DCMAKE_INSTALL_PREFIX=/usr \
|
|
-DDL_LIBRARY=$(STAGING_DIR) \
|
|
-DCMAKE_PREFIX_PATH=$(STAGING_DIR) \
|
|
-DCMAKE_SKIP_RPATH=TRUE \
|
|
$(CMAKE_OPTIONS) \
|
|
$(CMAKE_SOURCE_DIR) \
|
|
)
|
|
endef
|
|
|
|
define Build/InstallDev/cmake
|
|
$(INSTALL_DIR) $(1)
|
|
$(CP) $(PKG_INSTALL_DIR)/* $(1)/
|
|
endef
|
|
|
|
Build/InstallDev = $(if $(CMAKE_INSTALL),$(Build/InstallDev/cmake))
|
|
|
|
define Host/Configure/Default
|
|
(cd $(HOST_BUILD_DIR); \
|
|
CFLAGS="$(HOST_CFLAGS)" \
|
|
CXXFLAGS="$(HOST_CFLAGS)" \
|
|
LDFLAGS="$(HOST_LDFLAGS)" \
|
|
cmake \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_C_FLAGS_RELEASE="-DNDEBUG" \
|
|
-DCMAKE_CXX_FLAGS_RELEASE="-DNDEBUG" \
|
|
-DCMAKE_EXE_LINKER_FLAGS:STRING="$(HOST_LDFLAGS)" \
|
|
-DCMAKE_MODULE_LINKER_FLAGS:STRING="$(HOST_LDFLAGS)" \
|
|
-DCMAKE_SHARED_LINKER_FLAGS:STRING="$(HOST_LDFLAGS)" \
|
|
-DCMAKE_FIND_ROOT_PATH="$(CMAKE_HOST_FIND_ROOT_PATH)" \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=BOTH \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
|
|
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \
|
|
-DCMAKE_STRIP=: \
|
|
-DCMAKE_INSTALL_PREFIX=$(HOST_BUILD_PREFIX) \
|
|
-DCMAKE_PREFIX_PATH=$(HOST_BUILD_PREFIX) \
|
|
-DCMAKE_SKIP_RPATH=TRUE \
|
|
$(CMAKE_HOST_OPTIONS) \
|
|
$(HOST_CMAKE_SOURCE_DIR) \
|
|
)
|
|
endef
|
|
|
|
MAKE_FLAGS += \
|
|
CMAKE_COMMAND='$$(if $$(CMAKE_DISABLE_$$@),:,$(STAGING_DIR_HOST)/bin/cmake)' \
|
|
CMAKE_DISABLE_cmake_check_build_system=1
|