| | |
| | | # |
| | | # CDDL HEADER END |
| | | # |
| | | # Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. |
| | | # Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. |
| | | # |
| | | # |
| | | # Rules and Macros for building opens source software that uses AT&T's package |
| | |
| | | # Environment variables and arguments passed into the build and install |
| | | # environment(s). These are the initial settings. |
| | | COMPONENT_BUILD_ENV += \ |
| | | CC="$(CC)" \ |
| | | CCFLAGS="$(CFLAGS)" \ |
| | | CCFLAGS.FORCE="$(CXXFLAGS)" \ |
| | | CC.RUNPATH="$(CC.RUNPATH)" \ |
| | | CC.LD.RUNPATH="$(CC.LD.RUNPATH)" \ |
| | | CC.LD.ORIGIN="$(CC.LD.ORIGIN)" \ |
| | | CC.DLL.ORIGIN="$(CC.DLL.ORIGIN)" \ |
| | | CCLDFLAGS="$(CXXFLAGS)" \ |
| | | LDOPTIONS="$(CXXFLAGS)" \ |
| | | NPROCS="$(NPROCS)" \ |
| | | LDFLAGS="$(CXXFLAGS)" |
| | | CC_EXPLICIT="$(CC)" \ |
| | | PATH=$(shell dirname $(CC)):$(PATH) \ |
| | | CC=$(shell basename $(CC)) |
| | | NPROC="$(NPROC)" |
| | | |
| | | # This is a workaround for the AT&T nmake failing to always use |
| | | # the environmental CCFLAGS in sub-compiles |
| | | COMPONENT_BUILD_ARGS= $(COMPONENT_BUILD_ENV) |
| | | # This explicitly exports the build type for 32/64 bit distinction |
| | | COMPONENT_BUILD_ARGS = \ |
| | | HOSTTYPE="$(HOSTTYPE$(BITS))" \ |
| | | CCFLAGS="$(CFLAGS)" \ |
| | | LDFLAGS="$(CXXFLAGS)" |
| | | |
| | | # The install and test process needs the same environment as the build |
| | | COMPONENT_INSTALL_ENV = $(COMPONENT_BUILD_ENV) |
| | | COMPONENT_TEST_ENV = $(COMPONENT_BUILD_ENV) |
| | | COMPONENT_INSTALL_ARGS = HOSTTYPE="$(HOSTTYPE$(BITS))" |
| | | COMPONENT_TEST_ARGS = HOSTTYPE="$(HOSTTYPE$(BITS))" |
| | | |
| | | # build the configured source |
| | | $(BUILD_DIR)/%/.built: $(SOURCE_DIR)/.prep |
| | | $(RM) -r $(@D) ; $(MKDIR) $(@D) |
| | | $(CLONEY) $(SOURCE_DIR) $(@D) |
| | | $(ENV) $(CLONEY_ARGS) $(CLONEY) $(SOURCE_DIR) $(@D) |
| | | $(COMPONENT_PRE_BUILD_ACTION) |
| | | cd $(@D); $(ENV) $(COMPONENT_BUILD_ENV) \ |
| | | bin/package make $(COMPONENT_BUILD_TARGETS) $(COMPONENT_BUILD_ARGS) |
| | |
| | | $(BUILD_DIR)/%/.installed: $(BUILD_DIR)/%/.built |
| | | $(COMPONENT_PRE_INSTALL_ACTION) |
| | | $(RM) -r $(PROTO_DIR)/$(MACH$(BITS)); $(MKDIR) $(PROTO_DIR)/$(MACH$(BITS)); |
| | | cd $(@D) ; $(ENV) $(COMPONENT_INSTALL_ENV) \ |
| | | cd $(@D); $(ENV) $(COMPONENT_INSTALL_ENV) \ |
| | | bin/package flat $(COMPONENT_INSTALL_TARGETS) \ |
| | | $(COMPONENT_INSTALL_ARGS) \ |
| | | $(PROTO_DIR)/$(MACH$(BITS)) $(COMPONENT_INSTALL_PACKAGES) |
| | | $(COMPONENT_POST_INSTALL_ACTION) |
| | | $(TOUCH) $@ |
| | | |
| | | # test the built source |
| | | $(BUILD_DIR)/%/.tested: $(BUILD_DIR)/%/.built |
| | | $(BUILD_DIR)/%/.tested-and-compared: $(COMPONENT_TEST_DEP) |
| | | $(RM) -rf $(COMPONENT_TEST_BUILD_DIR) |
| | | $(MKDIR) $(COMPONENT_TEST_BUILD_DIR) |
| | | $(COMPONENT_PRE_TEST_ACTION) |
| | | cd $(@D) ; $(ENV) $(COMPONENT_TEST_ENV) bin/package \ |
| | | test $(COMPONENT_TEST_TARGETS) |
| | | -(cd $(COMPONENT_TEST_DIR) ; \ |
| | | $(COMPONENT_TEST_ENV_CMD) $(COMPONENT_TEST_ENV) \ |
| | | bin/package test $(COMPONENT_TEST_TARGETS) \ |
| | | $(COMPONENT_TEST_ARGS)) \ |
| | | &> $(COMPONENT_TEST_OUTPUT) |
| | | $(COMPONENT_POST_TEST_ACTION) |
| | | $(COMPONENT_TEST_CREATE_TRANSFORMS) |
| | | $(COMPONENT_TEST_PERFORM_TRANSFORM) |
| | | $(COMPONENT_TEST_COMPARE) |
| | | $(COMPONENT_TEST_CLEANUP) |
| | | $(TOUCH) $@ |
| | | |
| | | $(BUILD_DIR)/%/.tested: SHELLOPTS=pipefail |
| | | $(BUILD_DIR)/%/.tested: $(COMPONENT_TEST_DEP) |
| | | $(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) \ |
| | | bin/package test $(COMPONENT_TEST_TARGETS) \ |
| | | $(COMPONENT_TEST_ARGS)) \ |
| | | |& $(TEE) $(COMPONENT_TEST_OUTPUT) |
| | | $(COMPONENT_POST_TEST_ACTION) |
| | | $(COMPONENT_TEST_CREATE_TRANSFORMS) |
| | | $(COMPONENT_TEST_PERFORM_TRANSFORM) |
| | | $(COMPONENT_TEST_CLEANUP) |
| | | $(TOUCH) $@ |
| | | |
| | | clean:: |