| | |
| | | # Ref: http://www.cmake.org/cmake/help/v2.8.12/cmake.html#module:GNUInstallDirs |
| | | # |
| | | |
| | | ifeq ($(strip $(PREFERRED_BITS)),64) |
| | | CMAKE_BINDIR.32 = bin/$(MACH32) |
| | | CMAKE_BINDIR.64 = bin |
| | | CMAKE_SBINDIR.32 = sbin/$(MACH32) |
| | | CMAKE_SBINDIR.64 = sbin |
| | | else |
| | | CMAKE_BINDIR.32 = bin |
| | | CMAKE_BINDIR.64 = bin/$(MACH64) |
| | | CMAKE_SBINDIR.32 = sbin |
| | | CMAKE_SBINDIR.64 = sbin/$(MACH64) |
| | | endif |
| | | CMAKE_LIBDIR.32 = lib |
| | | CMAKE_LIBDIR.64 = lib/$(MACH64) |
| | | CMAKE_LIBEXECDIR.32 = lib |
| | | CMAKE_LIBEXECDIR.64 = lib/$(MACH64) |
| | | CMAKE_INCLUDEDIR = include |
| | | CMAKE_DATAROOTDIR = share |
| | | CMAKE_INFODIR = share/info |
| | | CMAKE_LOCALEDIR = share/locale |
| | | CMAKE_MANDIR = share/man |
| | | CMAKE_DATADIR = $(CMAKE_DATAROOTDIR) |
| | | CMAKE_INFODIR = $(CMAKE_DATAROOTDIR)/info |
| | | CMAKE_LOCALEDIR = $(CMAKE_DATAROOTDIR)/locale |
| | | CMAKE_MANDIR = $(CMAKE_DATAROOTDIR)/man |
| | | CMAKE_DOCDIR = $(CMAKE_DATAROOTDIR)/doc |
| | | |
| | | CMAKE_ENV = CONFIG_SHELL="$(CONFIG_SHELL)" |
| | | CMAKE_ENV += CC="$(CC)" |
| | |
| | | CMAKE_ENV += FCFLAGS="$(FCFLAGS)" |
| | | CMAKE_ENV += LDFLAGS="$(LDFLAGS)" |
| | | CMAKE_ENV += PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" |
| | | CMAKE_ENV += PATH="$(PATH)" |
| | | |
| | | # Rewrite absolute source-code paths into relative for ccache, so that any |
| | | # workspace with a shared CCACHE_DIR can benefit when compiling a component |
| | | ifneq ($(strip $(CCACHE)),) |
| | | CMAKE_ENV += CCACHE="$(CCACHE)" |
| | | CMAKE_ENV += CC_gcc_32="$(CC_gcc_32)" |
| | | CMAKE_ENV += CC_gcc_64="$(CC_gcc_32)" |
| | | CMAKE_ENV += CXX_gcc_32="$(CXX_gcc_64)" |
| | | CMAKE_ENV += CXX_gcc_64="$(CXX_gcc_64)" |
| | | CMAKE_ENV.$(BITS) += CCACHE_BASEDIR="$(BUILD_DIR_$(BITS))" |
| | | |
| | | ifneq ($(strip $(CCACHE_DIR)),) |
| | | CMAKE_ENV += CCACHE_DIR="$(CCACHE_DIR)" |
| | | endif |
| | | |
| | | ifneq ($(strip $(CCACHE_LOGFILE)),) |
| | | CMAKE_ENV += CCACHE_LOGFILE="$(CCACHE_LOGFILE)" |
| | | endif |
| | | |
| | | endif |
| | | |
| | | CMAKE_DEFAULT_DIRS?=yes |
| | | |
| | |
| | | CMAKE_OPTIONS += -DCMAKE_CXX_FLAGS:STRING="$(CXXFLAGS)" |
| | | CMAKE_OPTIONS += -DCMAKE_Fortran_FLAGS:STRING="$(FCFLAGS)" |
| | | |
| | | CMAKE_OPTIONS += LDFLAGS="$(LDFLAGS)" |
| | | CMAKE_OPTIONS += PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" |
| | | |
| | | CMAKE_OPTIONS += -DCMAKE_INSTALL_PREFIX:PATH=$(CMAKE_PREFIX) |
| | | ifeq ($(CMAKE_DEFAULT_DIRS),yes) |
| | | CMAKE_OPTIONS += -DCMAKE_INSTALL_BINDIR:PATH=$(CMAKE_BINDIR.$(BITS)) |
| | | CMAKE_OPTIONS += -DCMAKE_INSTALL_SBINDIR:PATH=$(CMAKE_SBINDIR.$(BITS)) |
| | | CMAKE_OPTIONS += -DCMAKE_INSTALL_LIBDIR:PATH=$(CMAKE_LIBDIR.$(BITS)) |
| | | CMAKE_OPTIONS += -DCMAKE_INSTALL_SBINDIR:PATH=$(CMAKE_SBINDIR.$(BITS)) |
| | | CMAKE_OPTIONS += -DCMAKE_INSTALL_DATAROOTDIR:PATH=$(CMAKE_DATAROOTDIR) |
| | | CMAKE_OPTIONS += -DCMAKE_INSTALL_DATADIR:PATH=$(CMAKE_DATAROOTDIR) |
| | | CMAKE_OPTIONS += -DCMAKE_INSTALL_INFODIR:PATH=$(CMAKE_INFODIR) |
| | | CMAKE_OPTIONS += -DCMAKE_INSTALL_LOCALEDIR:PATH=$(CMAKE_LOCALEDIR) |
| | | CMAKE_OPTIONS += -DCMAKE_INSTALL_MANDIR:PATH=$(CMAKE_MANDIR) |
| | | |
| | | CMAKE_OPTIONS += -DLIBEXEC_INSTALL_DIR="$(CMAKE_PREFIX)/$(CMAKE_LIBEXECDIR.$(BITS))" |
| | | |
| | | # Some components use LIB_INSTALL_DIR or CMAKE_INSTALL_LIBDIR, as-is, |
| | | # others forcibly ignore it and set |
| | | # based on CMAKE_INSTALL_PREFIX. Those usually instead offer a LIB_SUFFIX |
| | | # variable that we can generally use to accomplish the same result. Setting |
| | | # them both shouldn't harm anything. |
| | | CMAKE_OPTIONS += -DLIB_INSTALL_DIR="$(CMAKE_PREFIX)/$(CMAKE_LIBDIR.$(BITS))" |
| | | CMAKE_OPTIONS.64 += -DCMAKE_LIBRARY_ARCHITECTURE=$(MACH64) |
| | | CMAKE_OPTIONS.64 += -DLIB_SUFFIX="/$(MACH64)" |
| | | endif |
| | | CMAKE_OPTIONS += $(CMAKE_OPTIONS.$(BITS)) |
| | | |
| | |
| | | |
| | | CMAKE_ENV += $(CMAKE_ENV.$(BITS)) |
| | | |
| | | COMPONENT_TEST_CMD=ctest |
| | | COMPONENT_TEST_TARGETS= |
| | | |
| | | # configure the unpacked source for building 32 and 64 bit version |
| | | CMAKE = cmake |
| | | |
| | | # provide test transforms for ctest |
| | | CMAKE_TEST_TRANSFORMS = \ |
| | | ' -e "s/[0-9]*\.[0-9]* sec//" ' \ |
| | | ' -n ' \ |
| | | ' -e "/Not Run/p" ' \ |
| | | ' -e "/Start/p" ' \ |
| | | ' -e "/Skipped/p" ' \ |
| | | ' -e "/Failed/p" ' \ |
| | | ' -e "/Passed/p" ' \ |
| | | ' -e "/failed/p" ' |
| | | |
| | | USE_DEFAULT_TEST_TRANSFORMS?=no |
| | | ifeq ($(strip $(USE_DEFAULT_TEST_TRANSFORMS)),yes) |
| | | COMPONENT_TEST_TRANSFORMS += $(CMAKE_TEST_TRANSFORMS) |
| | | endif |
| | | |
| | | $(BUILD_DIR)/%/.configured: $(SOURCE_DIR)/.prep |
| | | ($(RM) -rf $(@D) ; $(MKDIR) $(@D)) |
| | | $(COMPONENT_PRE_CMAKE_ACTION) |
| | |
| | | $(GMAKE) $(COMPONENT_BUILD_GMAKE_ARGS) $(COMPONENT_BUILD_ARGS) \ |
| | | $(COMPONENT_BUILD_TARGETS)) |
| | | $(COMPONENT_POST_BUILD_ACTION) |
| | | ifeq ($(strip $(PARFAIT_BUILD)),yes) |
| | | -$(PARFAIT) build |
| | | endif |
| | | $(TOUCH) $@ |
| | | |
| | | # install the built source into a prototype area |
| | |
| | | |
| | | # test the built source |
| | | $(BUILD_DIR)/%/.tested-and-compared: $(BUILD_DIR)/%/.built |
| | | $(RM) -rf $(COMPONENT_TEST_BUILD_DIR) |
| | | $(MKDIR) $(COMPONENT_TEST_BUILD_DIR) |
| | | $(COMPONENT_PRE_TEST_ACTION) |
| | | -(cd $(COMPONENT_TEST_DIR) ; \ |
| | | $(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \ |
| | |
| | | $(COMPONENT_TEST_CLEANUP) |
| | | $(TOUCH) $@ |
| | | |
| | | $(BUILD_DIR)/%/.tested: SHELLOPTS=pipefail |
| | | $(BUILD_DIR)/%/.tested: $(BUILD_DIR)/%/.built |
| | | $(RM) -rf $(COMPONENT_TEST_BUILD_DIR) |
| | | $(MKDIR) $(COMPONENT_TEST_BUILD_DIR) |
| | | $(COMPONENT_PRE_TEST_ACTION) |
| | | (cd $(COMPONENT_TEST_DIR) ; \ |
| | | $(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \ |
| | | $(COMPONENT_TEST_CMD) \ |
| | | $(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS)) |
| | | $(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS)) \ |
| | | |& $(TEE) $(COMPONENT_TEST_OUTPUT) |
| | | $(COMPONENT_POST_TEST_ACTION) |
| | | $(COMPONENT_TEST_CREATE_TRANSFORMS) |
| | | $(COMPONENT_TEST_PERFORM_TRANSFORM) |
| | | $(COMPONENT_TEST_CLEANUP) |
| | | $(TOUCH) $@ |
| | | |
| | | ifeq ($(strip $(PARFAIT_BUILD)),yes) |
| | | parfait: install |
| | | -$(PARFAIT) build |
| | | else |
| | | parfait: |
| | | $(MAKE) PARFAIT_BUILD=yes parfait |
| | | endif |
| | | |
| | | clean:: |
| | | $(RM) -r $(BUILD_DIR) $(PROTO_DIR) |