diff --git a/require-ess/tools/driver.makefile b/require-ess/tools/driver.makefile index 3c87c98ab4c0f2b9a803a9b908345d9e7792d2ed..cfa8c310f00f07b9191ec66bf8aabeda47f3fd9e 100644 --- a/require-ess/tools/driver.makefile +++ b/require-ess/tools/driver.makefile @@ -538,7 +538,11 @@ ifneq ($(MODULELIB),) LIBOBJS += $(addsuffix $(OBJ),$(basename ${VERSIONFILE})) endif # MODULELIB -MODULE_RULES = ${CFGS:%=../%} +MODULE_CONFIGS = $(foreach cfg,${CFGS},$(if $(filter CONFIG%,$(notdir $(cfg))),$(if $(filter /%,$(cfg)),$(cfg),../$(cfg)))) +MODULE_CONFIGS += $(foreach m,$(REQ),$(wildcard $(E3_SITEMODS_PATH)/$m/$($(m)_VERSION)/cfg/CONFIG*)) +MODULE_CONFIGS += $(foreach m,$(REQ),$(wildcard $(EPICS_MODULES)/$m/$($(m)_VERSION)/cfg/CONFIG*)) + +MODULE_RULES = $(foreach cfg,${CFGS},$(if $(filter RULES%,$(notdir $(cfg))),$(if $(filter /%,$(cfg)),$(cfg),../$(cfg)))) MODULE_RULES += $(foreach m,$(REQ),$(wildcard $(E3_SITEMODS_PATH)/$m/$($(m)_VERSION)/cfg/RULES*)) MODULE_RULES += $(foreach m,$(REQ),$(wildcard $(EPICS_MODULES)/$m/$($(m)_VERSION)/cfg/RULES*)) @@ -565,6 +569,7 @@ debug:: @echo "TEMPLS = ${TEMPLS}" @echo "LIBVERSION = ${LIBVERSION}" @echo "MODULE_LOCATION = ${MODULE_LOCATION}" + @echo "MODULE_CONFIGS = ${MODULE_CONFIGS}" @echo "MODULE_RULES = ${MODULE_RULES}" build: MODULEINFOS @@ -582,6 +587,9 @@ INSTALL_LOADABLE_SHRLIBS= # We ony want to include ${BASERULES} from EPICS base if we are /not/ in debug # mode. Including this causes all of the source files to be compiled! ifeq (,$(findstring debug,${MAKECMDGOALS})) + ifneq ($(strip $(MODULE_CONFIGS)),) + include $(MODULE_CONFIGS) + endif include ${BASERULES} ifneq ($(strip $(MODULE_RULES)),) include $(MODULE_RULES) diff --git a/tests/test_build.py b/tests/test_build.py index 4571f96ee95be82cd1ef2673e97ce4b548c859a8..6c24f3cbc97ecf891c8682668e2e269c81d067ae 100644 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -751,3 +751,15 @@ def test_install_license(wrapper: Wrapper): file_path = wrapper.package_dir / "doc/foo/LICENSE" assert file_path.exists() + + +def test_load_custom_config_files(wrapper: Wrapper): + custom_config_file = wrapper.config_dir / "CONFIG_FOO" + custom_config_file.write_text("$(error foobarbaz)") + + wrapper.add_file(custom_config_file) + wrapper.add_var_to_module_makefile("CONFIGS", str(custom_config_file)) + + rc, _, errs = wrapper.run_make("build") + assert rc == 2 + assert "foobarbaz" in errs