diff --git a/require-ess/tools/driver.makefile b/require-ess/tools/driver.makefile index b33d51226fa5418d9f396a38e13c4b123eea5d8a..5ad119fec074b15c999f048742ba968479bf34ca 100644 --- a/require-ess/tools/driver.makefile +++ b/require-ess/tools/driver.makefile @@ -533,39 +533,28 @@ INSTALL_INCLUDES = EPICS_INCLUDES = # Add include directory of foreign modules to include file search path. -# Default is to use latest version of any module. -# The user can overwrite the version by defining <module>_VERSION=<version>. -# For each foreign module look for include/ for the EPICS base version in use. -# The user can overwrite (or add) by defining <module>_INC=<relative/path> (not recommended!). -# Only really existing directories are added to the search path. - -# The tricky part is to sort versions numerically. Make can't but ls -v can. -# Only accept numerical versions (needs extended glob). -# define ADD_FOREIGN_INCLUDES -# $(eval $(1)_VERSION := $(patsubst ${EPICS_MODULES}/$(1)/%/include,%,$(firstword $(shell ls -dvr ${EPICS_MODULES}/$(1)/$(VERSIONGLOB)/include 2>/dev/null)))) -# INSTALL_INCLUDES += $$(patsubst %,-I${EPICS_MODULES}/$(1)/%/include,$$($(1)_VERSION)) -# endef -# $(eval $(foreach m,$(filter-out $(PRJ),$(notdir $(wildcard ${EPICS_MODULES}/*))),$(call ADD_FOREIGN_INCLUDES,$m))) +# +# The default behaviour is to start with <module>_VERSION and to select the highest +# available build number, unless otherwise specified. This is determined with the +# shell script build_number.sh included with require. +# +# Note that we do not perform this search when building require as +# 1. require has no dependencies +# 2. build_number.sh is not installed yet, so ADD_OTHER_INCLUDES complains +# when searching EPICS_MODULES (= $(EPICS_BASE)) + ifneq ($(strip $(PRJ)),require) define FETCH_BUILD_NUMBER $(shell $(E3_REQUIRE_TOOLS)/build_number.sh $(1) $(2) $($(2)_VERSION)) endef -define ADD_SITEMODS_INCLUDES -INSTALL_INCLUDES += $$(patsubst %,-I${E3_SITEMODS_PATH}/$(1)/%/include,$$(call FETCH_BUILD_NUMBER,$(E3_SITEMODS_PATH),$(1))) -endef -$(foreach m,$(filter-out $(PRJ),$(notdir $(wildcard ${E3_SITEMODS_PATH}/*))),$(eval $(call ADD_SITEMODS_INCLUDES,$m))) - -define ADD_SITEAPPS_INCLUDES -INSTALL_INCLUDES += $$(patsubst %,-I${E3_SITEAPPS_PATH}/$(1)/%/include,$$(call FETCH_BUILD_NUMBER,$(E3_SITEAPPS_PATH),$(1))) -endef -$(foreach m,$(filter-out $(PRJ),$(notdir $(wildcard ${E3_SITEAPPS_PATH}/*))),$(eval $(call ADD_SITEAPPS_INCLUDES,$m))) - -define ADD_OTHER_INCLUDES -INSTALL_INCLUDES += $$(patsubst %,-I${EPICS_MODULES}/$(1)/%/include,$$(call FETCH_BUILD_NUMBER,$(EPICS_MODULES),$(1))) +define ADD_INCLUDES_TEMPLATE +INSTALL_INCLUDES += $$(patsubst %,-I${2}/$(1)/%/include,$$(call FETCH_BUILD_NUMBER,$(2),$(1))) endef -$(foreach m,$(filter-out $(PRJ),$(notdir $(wildcard ${EPICS_MODULES}/*))),$(eval $(call ADD_OTHER_INCLUDES,$m))) +$(foreach m,$(filter-out $(PRJ),$(notdir $(wildcard ${E3_SITEMODS_PATH}/*))),$(eval $(call ADD_INCLUDES_TEMPLATE,$m,$(E3_SITEMODS_PATH)))) +$(foreach m,$(filter-out $(PRJ),$(notdir $(wildcard ${E3_SITEAPPS_PATH}/*))),$(eval $(call ADD_INCLUDES_TEMPLATE,$m,$(E3_SITEAPPS_PATH)))) +$(foreach m,$(filter-out $(PRJ),$(notdir $(wildcard ${EPICS_MODULES}/*))),$(eval $(call ADD_INCLUDES_TEMPLATE,$m,$(EPICS_MODULES)))) endif