diff --git a/configure/CONFIG b/configure/CONFIG index 52f0a2ee5..eb95a2037 100644 --- a/configure/CONFIG +++ b/configure/CONFIG @@ -56,6 +56,8 @@ include $(CONFIG)/CONFIG_BASE_VERSION include $(CONFIG)/os/CONFIG.$(EPICS_HOST_ARCH).Common -include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).Common +RELEASE_TOPS := $(shell $(CONVERTRELEASE) -T $(TOP) releaseTops) + ifdef T_A # Cross compile specific definitions @@ -86,8 +88,10 @@ endif # Include /cfg/CONFIG* definitions from tops defined in RELEASE* files # ifneq ($(CONFIG),$(TOP)/configure) -RELEASE_TOPS := $(shell $(CONVERTRELEASE) -T $(TOP) releaseTops) -RELEASE_CFG_CONFIGS = $(foreach top, $(RELEASE_TOPS), $(wildcard $($(top))/cfg/CONFIG*)) +RELEASE_TOPS_REVERSE := $(shell \ + $(PERL) -e '$$,=" ";print reverse @ARGV' $(RELEASE_TOPS)) +RELEASE_CFG_CONFIGS = $(foreach top, $(RELEASE_TOPS_REVERSE), \ + $(wildcard $($(top))/cfg/CONFIG*)) ifneq ($(RELEASE_CFG_CONFIGS),) include $(RELEASE_CFG_CONFIGS) endif diff --git a/configure/CONFIG_APP_INCLUDE b/configure/CONFIG_APP_INCLUDE index 71c48acb6..2d00b52c4 100644 --- a/configure/CONFIG_APP_INCLUDE +++ b/configure/CONFIG_APP_INCLUDE @@ -1,25 +1,35 @@ -export TOP -export IOCAPPS +#************************************************************************* +# Copyright (c) 2013 UChicago Argonne LLC, as Operator of Argonne +# National Laboratory. +# Copyright (c) 2002 The Regents of the University of California, as +# Operator of Los Alamos National Laboratory. +# EPICS BASE is distributed subject to a Software License Agreement found +# in the file LICENSE that is included with this distribution. +#************************************************************************* +# +# $Revision-Id$ +# -RELEASE_TOPS := $(shell $(CONVERTRELEASE) -T $(TOP) releaseTops) +export TOP ifneq ($(RELEASE_TOPS),) define RELEASE_FLAGS_template export $(1) - $(1)_HOST_BIN = $$(strip $$($(1)))/bin/$$(EPICS_HOST_ARCH) - $(1)_HOST_LIB = $$(strip $$($(1)))/lib/$$(EPICS_HOST_ARCH) - $(1)_BIN = $$(wildcard $$(strip $$($(1)))/bin/$$(T_A)) - $(1)_LIB = $$(wildcard $$(strip $$($(1)))/lib/$$(T_A)) + $(1)_HOST_BIN = $$(strip $$($(1)))/bin/$(EPICS_HOST_ARCH) + $(1)_HOST_LIB = $$(strip $$($(1)))/lib/$(EPICS_HOST_ARCH) + $(1)_BIN = $$(wildcard $$(strip $$($(1)))/bin/$(T_A)) + $(1)_LIB = $$(wildcard $$(strip $$($(1)))/lib/$(T_A)) SHRLIB_SEARCH_DIRS += $$($(1)_LIB) - RELEASE_INCLUDES += $$(addprefix -I,$$(wildcard $$(strip $$($(1)))/include/compiler/$$(CMPLR_CLASS))) - RELEASE_INCLUDES += $$(addprefix -I,$$(wildcard $$(strip $$($(1)))/include/os/$$(OS_CLASS))) + RELEASE_INCLUDES += $$(addprefix -I,$$(wildcard $$(strip $$($(1)))/include/compiler/$(CMPLR_CLASS))) + RELEASE_INCLUDES += $$(addprefix -I,$$(wildcard $$(strip $$($(1)))/include/os/$(OS_CLASS))) RELEASE_INCLUDES += $$(addprefix -I,$$(wildcard $$(strip $$($(1)))/include)) RELEASE_DBD_DIRS += $$(wildcard $$(strip $$($(1)))/dbd) RELEASE_DB_DIRS += $$(wildcard $$(strip $$($(1)))/db) RELEASE_PERL_MODULE_DIRS += $$(wildcard $$(strip $$($(1)))/lib/perl) endef -$(foreach top, $(RELEASE_TOPS), $(eval $(call RELEASE_FLAGS_template,$(top)) )) +$(foreach top, $(RELEASE_TOPS), \ + $(eval $(call RELEASE_FLAGS_template,$(top)))) endif diff --git a/configure/CONFIG_BASE b/configure/CONFIG_BASE index 2d9d77120..8934a8e5d 100644 --- a/configure/CONFIG_BASE +++ b/configure/CONFIG_BASE @@ -53,8 +53,10 @@ BASE_CPPFLAGS += $(OSITHREAD_DEFAULT_STACK_FLAGS_$(OSITHREAD_USE_DEFAULT_STACK)) #--------------------------------------------------------------- # Where to find the installed build tools # Windows does not like commands with relative paths starting ../ +# but the Perl scripts in TOP/src/tools are OK TOOLS = $(abspath $(EPICS_BASE_HOST_BIN)) +FIND_TOOL = $(firstword $(wildcard $(TOOLS)/$(1) $(TOP)/src/tools/$(1))) #--------------------------------------------------------------- # Epics base build tools and tool flags @@ -64,7 +66,7 @@ DBEXPAND = $(PERL) $(TOOLS)/dbdExpand.pl DBTORECORDTYPEH = $(PERL) $(TOOLS)/dbdToRecordtypeH.pl DBTOMENUH = $(PERL) $(TOOLS)/dbdToMenuH.pl REGISTERRECORDDEVICEDRIVER = $(PERL) $(TOOLS)/registerRecordDeviceDriver.pl -CONVERTRELEASE = $(PERL) $(TOOLS)/convertRelease.pl +CONVERTRELEASE = $(PERL) $(call FIND_TOOL,convertRelease.pl) FULLPATHNAME = $(PERL) $(TOOLS)/fullPathName.pl #------------------------------------------------------- diff --git a/configure/RULES_ARCHS b/configure/RULES_ARCHS index eb5b3b593..b14318ed0 100644 --- a/configure/RULES_ARCHS +++ b/configure/RULES_ARCHS @@ -19,9 +19,6 @@ ACTIONS += install ACTIONS += buildInstall ACTIONS += runtests tapfiles -actionPart = $(word 1, $(subst $(DIVIDER), ,$@)) -archPart = $(word 2, $(subst $(DIVIDER), ,$@)) - actionArchTargets = $(foreach action, $(ACTIONS), \ $(addprefix $(action)$(DIVIDER), $(BUILD_ARCHS))) @@ -29,9 +26,17 @@ cleanArchTargets = $(addprefix clean$(DIVIDER), $(BUILD_ARCHS)) buildDirs = $(addprefix O., $(BUILD_ARCHS)) -#************************************************************************* -# Create EPICS_HOST_ARCH dependancies for GNU make -j option -# Needed in dirs where EPICS_HOST_ARCH builds a tool used by +# Include /cfg/DIR_RULES* files from tops defined in RELEASE* files +# Do this here so they can add ACTIONS +# +RELEASE_CFG_DIR_RULES = $(foreach top, $(RELEASE_TOPS), \ + $(wildcard $($(top))/cfg/DIR_RULES*)) +ifneq ($(RELEASE_CFG_DIR_RULES),) + include $(RELEASE_CFG_DIR_RULES) +endif + +# Create EPICS_HOST_ARCH dependancies for GNU make -j option. +# Needed in dirs where EPICS_HOST_ARCH build creates a tool used in # cross arch builds CROSS_ARCHS += $(CROSS1) $(CROSS2) @@ -40,11 +45,9 @@ define DEP_template $(2) : $(EPICS_HOST_ARCH) $(1)$(DIVIDER)$(2) : $(1)$(DIVIDER)$(EPICS_HOST_ARCH) O.$(2) endef - -$(foreach action, $(ACTIONS), $(foreach arch, $(CROSS_ARCHS), \ - $(eval $(call DEP_template,$(action),$(arch))))) - -#************************************************************************* +$(foreach action, $(ACTIONS), \ + $(foreach arch, $(CROSS_ARCHS), \ + $(eval $(call DEP_template,$(action),$(arch))))) # Allows rebuild to work with parallel builds option, -j. ifeq (rebuild,$(filter rebuild,$(MAKECMDGOALS))) @@ -52,8 +55,11 @@ ifeq (rebuild,$(filter rebuild,$(MAKECMDGOALS))) rebuild : install endif +archPart = $(word 2, $(subst $(DIVIDER), ,$@)) +actionPart = $(word 1, $(subst $(DIVIDER), ,$@)) $(actionArchTargets) : $(buildDirs) O.Common - $(MAKE) -C O.$(archPart) -f ../Makefile TOP=$(TOP)/.. T_A=$(archPart) $(actionPart) + $(MAKE) -C O.$(archPart) -f ../Makefile TOP=$(TOP)/.. \ + T_A=$(archPart) $(actionPart) $(BUILD_ARCHS) : % : O.% O.Common $(MAKE) -C O.$@ -f ../Makefile TOP=$(TOP)/.. T_A=$@ @@ -66,8 +72,7 @@ $(buildDirs): O.Common: $(MKDIR) O.Common -# -# special clean rule +# Clean rules # clean: archsCommonClean @@ -87,3 +92,7 @@ realclean: .PHONY : $(cleanArchTargets) .PHONY : $(BUILD_ARCHS) rebuild archsCommonClean .PHONY : $(ACTIONS) clean realclean archclean host all + +# User specific rules +# +-include $(HOME)/configure/RULES_USER diff --git a/configure/RULES_DIRS b/configure/RULES_DIRS index 57b4f0862..69cf356b1 100644 --- a/configure/RULES_DIRS +++ b/configure/RULES_DIRS @@ -15,28 +15,32 @@ ARCHS += $(BUILD_ARCHS) ACTIONS += inc build install buildInstall clean realclean archclean ACTIONS += runtests tapfiles -dirPart = $(join $(dir $@), $(word 1, $(subst $(DIVIDER), ,$(notdir $@)))) - -actionArchPart = $(join $(word 2, $(subst $(DIVIDER), ,$(notdir $@))), \ - $(addprefix $(DIVIDER),$(word 3, $(subst $(DIVIDER), ,$(notdir $@))))) - dirActionArchTargets = $(foreach dir, $(DIRS), \ - $(foreach action, $(ACTIONS),\ - $(foreach arch, $(ARCHS), \ - $(dir)$(DIVIDER)$(action)$(DIVIDER)$(arch)))) + $(foreach action, $(ACTIONS), \ + $(foreach arch, $(ARCHS), \ + $(dir)$(DIVIDER)$(action)$(DIVIDER)$(arch)))) dirArchTargets += $(foreach dir, $(DIRS), \ - $(foreach arch, $(ARCHS),\ - $(dir)$(DIVIDER)$(arch))) + $(foreach arch, $(ARCHS), \ + $(dir)$(DIVIDER)$(arch))) dirActionTargets += $(foreach dir, $(DIRS), \ - $(foreach action, $(ACTIONS),\ - $(dir)$(DIVIDER)$(action))) -actionArchTargets = $(foreach action, $(ACTIONS),\ - $(foreach arch, $(ARCHS), \ - $(action)$(DIVIDER)$(arch))) + $(foreach action, $(ACTIONS), \ + $(dir)$(DIVIDER)$(action))) +actionArchTargets = $(foreach action, $(ACTIONS), \ + $(foreach arch, $(ARCHS), \ + $(action)$(DIVIDER)$(arch))) all: install host: install$(DIVIDER)$(EPICS_HOST_ARCH) +# Include /cfg/DIR_RULES* files from tops defined in RELEASE* files +# Do this here so they can add ACTIONS +# +RELEASE_CFG_DIR_RULES = $(foreach top, $(RELEASE_TOPS), \ + $(wildcard $($(top))/cfg/DIR_RULES*)) +ifneq ($(RELEASE_CFG_DIR_RULES),) + include $(RELEASE_CFG_DIR_RULES) +endif + # Allows rebuild to work with parallel builds option, -j. ifeq (rebuild,$(filter rebuild,$(MAKECMDGOALS))) $(foreach dir, $(DIRS), $(dir)$(DIVIDER)install): \ @@ -49,30 +53,42 @@ endif define DEP_template1 $(1): $$($(1)_DEPEND_DIRS) endef -$(foreach dir, $(DIRS),$(eval $(call DEP_template1,$(dir)))) +$(foreach dir, $(DIRS), \ + $(eval $(call DEP_template1,$(dir)))) define DEP_template2 -$(1)$$(DIVIDER)$(2) : $$(foreach ddir, $$($(1)_DEPEND_DIRS),$$(addsuffix $$(DIVIDER)$(2),$$(ddir))) +$(1)$$(DIVIDER)$(2) : $$(foreach ddir, $$($(1)_DEPEND_DIRS), \ + $$(addsuffix $$(DIVIDER)$(2),$$(ddir))) endef -$(foreach action, $(ACTIONS), $(foreach dir, $(DIRS),$(eval $(call DEP_template2,$(dir),$(action))))) +$(foreach action, $(ACTIONS), \ + $(foreach dir, $(DIRS), \ + $(eval $(call DEP_template2,$(dir),$(action))))) define DEP_template3 -$(1)$$(DIVIDER)$(2) : $$(foreach ddir, $$($(1)_DEPEND_DIRS),$$(addsuffix $$(DIVIDER)$(2),$$(ddir))) +$(1)$$(DIVIDER)$(2) : $$(foreach ddir, $$($(1)_DEPEND_DIRS), \ + $$(addsuffix $$(DIVIDER)$(2),$$(ddir))) endef -$(foreach arch, $(ARCHS), $(foreach dir, $(DIRS),$(eval $(call DEP_template3,$(dir),$(arch))))) +$(foreach arch, $(ARCHS), \ + $(foreach dir, $(DIRS), \ + $(eval $(call DEP_template3,$(dir),$(arch))))) define DEP_template4 -$(1)$$(DIVIDER)$(2)$$(DIVIDER)$(3) : $$(foreach ddir, $$($(1)_DEPEND_DIRS),$$(addsuffix $$(DIVIDER)$(2)$$(DIVIDER)$(3),$$(ddir))) +$(1)$$(DIVIDER)$(2)$$(DIVIDER)$(3) : $$(foreach ddir, $$($(1)_DEPEND_DIRS), \ + $$(addsuffix $$(DIVIDER)$(2)$$(DIVIDER)$(3),$$(ddir))) endef -$(foreach arch, $(ARCHS), $(foreach action, $(ACTIONS), $(foreach dir, $(DIRS), \ - $(eval $(call DEP_template4,$(dir),$(action),$(arch)))))) - +$(foreach arch, $(ARCHS), \ + $(foreach action, $(ACTIONS), \ + $(foreach dir, $(DIRS), \ + $(eval $(call DEP_template4,$(dir),$(action),$(arch)))))) +dirPart = $(join $(dir $@), $(word 1, $(subst $(DIVIDER), ,$(notdir $@)))) +actionArchPart = $(join $(word 2, $(subst $(DIVIDER), ,$(notdir $@))), \ + $(addprefix $(DIVIDER),$(word 3, $(subst $(DIVIDER), ,$(notdir $@))))) $(DIRS) $(dirActionTargets) $(dirArchTargets) $(dirActionArchTargets) : $(MAKE) -C $(dirPart) $(actionArchPart) $(ARCHS) $(ACTIONS) $(actionArchTargets) :%: \ - $(foreach dir, $(DIRS), $(dir)$(DIVIDER)%) + $(foreach dir, $(DIRS), $(dir)$(DIVIDER)%) .PHONY : $(DIRS) all host rebuild .PHONY : $(ARCHS) $(ACTIONS) @@ -80,3 +96,7 @@ $(ARCHS) $(ACTIONS) $(actionArchTargets) :%: \ .PHONY : $(dirActionArchTargets) .PHONY : $(actionArchTargets) + +# User specific rules +# +-include $(HOME)/configure/RULES_USER diff --git a/configure/RULES_FILE_TYPE b/configure/RULES_FILE_TYPE index c559f7032..6fc6f61a5 100644 --- a/configure/RULES_FILE_TYPE +++ b/configure/RULES_FILE_TYPE @@ -6,27 +6,27 @@ # EPICS BASE is distributed subject to a Software License Agreement found # in the file LICENSE that is included with this distribution. #************************************************************************* +# # $Revision-Id$ # -#--------------------------------------------------------------- -# Include /configure/RULES_BUILD definitions from tops defined in RELEASE* files +# Include /configure/RULES_BUILD from tops defined in RELEASE* files # -RELEASE_RULES_BUILDS = $(foreach top, $(RELEASE_TOPS), $(wildcard $($(top))/configure/RULES_BUILD)) +RELEASE_RULES_BUILDS = $(foreach top, $(RELEASE_TOPS), \ + $(wildcard $($(top))/configure/RULES_BUILD)) ifneq ($(RELEASE_RULES_BUILDS),) include $(RELEASE_RULES_BUILDS) endif -#--------------------------------------------------------------- -# Include /cfg/RULES* definitions from tops defined in RELEASE* files +# Include /cfg/RULES* files from tops defined in RELEASE* files # -RELEASE_CFG_RULES = $(foreach top, $(RELEASE_TOPS), $(wildcard $($(top))/cfg/RULES*)) +RELEASE_CFG_RULES = $(foreach top, $(RELEASE_TOPS), \ + $(wildcard $($(top))/cfg/RULES*)) ifneq ($(RELEASE_CFG_RULES),) include $(RELEASE_CFG_RULES) endif -#--------------------------------------------------------------- -# If this is not BASE then include TOP/configure/RULES_BUILD definitions +# If this is not BASE then include /configure/RULES_BUILD # ifeq ($(wildcard $(TOP)/configure/CONFIG_BASE_VERSION),) TOP_RULES_BUILDS = $(wildcard $(TOP)/configure/RULES_BUILD) @@ -35,40 +35,42 @@ ifneq ($(TOP_RULES_BUILDS),) endif endif -#--------------------------------------------- -# Include our own $(INSTALL_CFG)/RULES* definitions +# Include our own $(INSTALL_CFG)/RULES* files # TOP_CFG_RULES = $(wildcard $(INSTALL_CFG)/RULES*) ifneq ($(TOP_CFG_RULES),) include $(TOP_CFG_RULES) endif -#--------------------------------------------------------------- - +# Rules to install each FILE_TYPE +# define FILE_TYPE_template - -$(1) += $$(if $$(strip $$($(1)_$$(OS_CLASS))),$$(subst -nil-,,$$($(1)_$$(OS_CLASS))), $$($(1)_DEFAULT)) - +$(1) += $$(if $$(strip $$($(1)_$(OS_CLASS))), \ + $$(subst -nil-,,$$($(1)_$(OS_CLASS))), \ + $$($(1)_DEFAULT)) INSTALLS_$(1) = $$($(1):%=$$(INSTALL_$(1))/%) $$(INSTALL_$(1))/%: ../% $(ECHO) "Installing $(1) file $$@" @$$(INSTALL) -d -m $$(INSTALL_PERMISSIONS) $$< $$(dir $$@) - $$(INSTALL_$(1))/%: % $(ECHO) "Installing $(1) file $$@" @$$(INSTALL) -d -m $$(INSTALL_PERMISSIONS) $$< $$(dir $$@) -buildInstall : $$(INSTALLS_$(1)) - +buildInstall: $$(INSTALLS_$(1)) endef +$(foreach type, $(FILE_TYPE), \ + $(eval $(call FILE_TYPE_template,$(strip $(type))))) -$(foreach type, $(FILE_TYPE),$(eval $(call FILE_TYPE_template,$(strip $(type))))) -#--------------------------------------------- - +# Cleaning FILE_TYPE files +# clean: file_type_clean file_type_clean: @$(RM) $(foreach type, $(FILE_TYPE), $($(type))) .PHONY : file_type_clean + +# User specific rules +# +-include $(HOME)/configure/RULES_USER diff --git a/configure/RULES_TOP b/configure/RULES_TOP index dcc08c565..6b21a6673 100644 --- a/configure/RULES_TOP +++ b/configure/RULES_TOP @@ -4,17 +4,17 @@ # Copyright (c) 2002 The Regents of the University of California, as # Operator of Los Alamos National Laboratory. # EPICS BASE is distributed subject to a Software License Agreement found -# in file LICENSE that is included with this distribution. +# in the file LICENSE that is included with this distribution. #************************************************************************* # -# $Revision-Id$ +# $Revision-Id$ # include $(CONFIG)/RULES_DIRS distclean: realclean cvsclean realuninstall -CVSCLEAN=$(firstword $(wildcard $(TOOLS)/cvsclean.pl $(TOP)/src/tools/cvsclean.pl)) +CVSCLEAN = $(call FIND_TOOL,cvsclean.pl) cvsclean: $(PERL) $(CVSCLEAN) @@ -22,16 +22,14 @@ realuninstall: uninstallDirs $(RMDIR) $(INSTALL_LOCATION_BIN) $(RMDIR) $(INSTALL_LOCATION_LIB) -UNINSTALL_DIRS += $(INSTALL_DBD) $(INSTALL_INCLUDE) $(INSTALL_DOC) -UNINSTALL_DIRS += $(INSTALL_HTML) $(INSTALL_TEMPLATES) $(INSTALL_DB) -UNINSTALL_DIRS += $(DIRECTORY_TARGETS) +UNINSTALL_DIRS += $(INSTALL_DBD) $(INSTALL_INCLUDE) $(INSTALL_DOC) \ + $(INSTALL_HTML) $(INSTALL_TEMPLATES) $(INSTALL_DB) $(DIRECTORY_TARGETS) uninstallDirs: $(RMDIR) $(UNINSTALL_DIRS) uninstall: archuninstall uninstallDirs -archuninstall: $(addprefix uninstall$(DIVIDER),$(BUILD_ARCHS)) - @$(MAKE) -f Makefile cleandirs +archuninstall: $(addprefix uninstall$(DIVIDER),$(BUILD_ARCHS)) | cleandirs archPart = $(word 2, $(subst $(DIVIDER), ,$@)) uninstall$(DIVIDER)%: @@ -39,14 +37,14 @@ uninstall$(DIVIDER)%: $(RMDIR) $(INSTALL_LOCATION_LIB)/$(archPart) cleandirs: + @$(NOP) ifeq ($(wildcard $(INSTALL_LOCATION_BIN)/*),) $(RMDIR) $(INSTALL_LOCATION_BIN) endif ifeq ($(wildcard $(INSTALL_LOCATION_LIB)/*),) $(RMDIR) $(INSTALL_LOCATION_LIB) endif - @echo -# The echo above stops a "nothing to be done for cleandirs" message + help: @echo "Usage: gnumake [options] [target] ..." @@ -82,3 +80,10 @@ help: .PHONY: cleandirs distclean cvsclean realuninstall archuninstall uninstallDirs .PHONY: uninstall help +# Include /cfg/TOP_RULES* files from tops defined in RELEASE* files +# +RELEASE_CFG_TOP_RULES = $(foreach top, $(RELEASE_TOPS), \ + $(wildcard $($(top))/cfg/TOP_RULES*)) +ifneq ($(RELEASE_CFG_TOP_RULES),) + include $(RELEASE_CFG_TOP_RULES) +endif diff --git a/documentation/RELEASE_NOTES.html b/documentation/RELEASE_NOTES.html index 89b2d1acf..d2d32e559 100644 --- a/documentation/RELEASE_NOTES.html +++ b/documentation/RELEASE_NOTES.html @@ -14,6 +14,31 @@

Changes between 3.15.1 and 3.15.2

+

Changes to <top>/cfg/* files

+ +

The order in which cfg/CONFIG* and cfg/RULES* files are included from support +applications listed in the configure/RELEASE* files has been changed. Previously +these files were included in the order in which the top areas are listed in the +RELEASE file, but it makes more sense to load them in reverse order since later +entries override earlier ones in Makefiles but the release file order is +supposed to allow earlier entries to take precedence over later ones. The same +change has been made to the inclusion of the <top>/configure/RULES_BUILD +files.

+ +

Two new file types can also be provided in a module's cfg directory. Files +named TOP_RULES* will be included by the top-level Makefile of other modules +that refer to this module; files name DIR_RULES* will be included by all +Makefiles that merely descend into lower-level directories. The cfg/RULES* files +are only included when make is building code inside the O.<arch> +directories.

+ +

The new cfg/DIR_RULES* file inclusion was designed to permit new recursive +make actions to be implemented by appending the name of the new action to the +ACTIONS variable. There must be a matching rule in one of the cfg/RULES* files +when doing this. Similar rules may also be defined in the cfg/TOP_RULES* and/or +cfg/DIR_RULES* files, but these should only state prerequisites and not directly +provide commands to be executed.

+

Build rules for RTEMS GESYS modules

RTEMS target builds can now be configured to make GESYS modules by changing