diff --git a/require-ess/tools/driver.makefile b/require-ess/tools/driver.makefile index bf7c6a6cf4b523de3ff2bb79ad3c2471e1789e16..dd0ec706d7f242bf7f16485264e853f297272091 100644 --- a/require-ess/tools/driver.makefile +++ b/require-ess/tools/driver.makefile @@ -247,6 +247,10 @@ SCR = $(if ${SCRIPTS},$(filter-out -none-,${SCRIPTS}),$(wildcard *.cmd *.iocsh)) SCR += ${SCRIPTS_${EPICSVERSION}} export SCR +CFGS = ${CONFIGS} +CFGS += ${CONFIGS_${EPICSVERSION}} +export CFGS + # Filter architectures to build using EXCLUDE_ARCHS and ARCH_FILTER. ALL_ARCHS = ${EPICS_HOST_ARCH} ${CROSS_COMPILER_TARGET_ARCHS} BUILD_ARCHS = $(filter-out $(addprefix %,${EXCLUDE_ARCHS}),$(filter-out $(addsuffix %,${EXCLUDE_ARCHS}),\ @@ -287,6 +291,8 @@ debug:: @echo "ARCH_FILTER = ${ARCH_FILTER}" @echo "EXCLUDE_ARCHS = ${EXCLUDE_ARCHS}" @echo "LIBVERSION = ${LIBVERSION}" + @echo "E3_SITEMODS_PATH = ${E3_SITEMODS_PATH}" + @echo "EPICS_MODULES = ${EPICS_MODULES}" # Create e.g. build-$(T_A) rules for each architecture, so that we can just do # build: build-arch1 build-arch2 @@ -422,8 +428,6 @@ export BINS VLIBS = $(VENDOR_LIBS) $(foreach x,$(VAR_EXTENSIONS),$(VENDOR_LIBS_$x)) export VLIBS -export CFG - # These variables are written into a .yaml file in the installed module directory to keep track of # metadata for which module was compiled. @@ -468,7 +472,7 @@ INSTALL_VLIB = ${INSTALL_REV}/lib/$(T_A)/vendor INSTALL_INCLUDE = ${INSTALL_REV}/include INSTALL_DBD = ${INSTALL_REV}/dbd INSTALL_DB = ${INSTALL_REV}/db -INSTALL_CFG = ${INSTALL_REV}/cfg +INSTALL_CONFIG = ${INSTALL_REV}/cfg INSTALL_DOC = ${MODULE_LOCATION}/doc INSTALL_SCR = ${INSTALL_REV} @@ -518,10 +522,6 @@ DBDFILES += $(patsubst %.stt,%_snl.dbd,$(notdir $(filter %.stt,${SRCS}))) # Create dbd file for GPIB code. DBDFILES += $(patsubst %.gt,%.dbd,$(notdir $(filter %.gt,${SRCS}))) -# snc location -SNCALL=$(shell ls -dv $(E3_SITEMODS_PATH)/sequencer/$(sequencer_VERSION)/bin/$(EPICS_HOST_ARCH) 2> /dev/null) -SNC=$(lastword $(SNCALL))/snc - ifneq (,$(strip $(VLIBS))) USR_LDFLAGS_$(T_A) += $(foreach l,$(VLIBS),-L../$(dir $(l))) USR_LDFLAGS_$(T_A) += -Wl,-rpath,"\$$ORIGIN/vendor" @@ -536,6 +536,10 @@ ifneq ($(MODULELIB),) LIBOBJS += $(addsuffix $(OBJ),$(basename ${VERSIONFILE})) endif # MODULELIB +MODULE_RULES = ${CFGS:%=../%} +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*)) + debug:: @echo "===================== Pass 3: Build directory =====================" @echo "BUILDCLASSES = ${BUILDCLASSES}" @@ -550,6 +554,7 @@ debug:: @echo "SOURCES_${OS_CLASS} = ${SOURCES_${OS_CLASS}}" @echo "SRCS = ${SRCS}" @echo "REQ = ${REQ}" + @echo "CFGS = ${CFGS}" @echo "LIBOBJS = ${LIBOBJS}" @echo "DBDS = ${DBDS}" @echo "DBDS_${OS_CLASS} = ${DBDS_${OS_CLASS}}" @@ -558,6 +563,7 @@ debug:: @echo "TEMPLS = ${TEMPLS}" @echo "LIBVERSION = ${LIBVERSION}" @echo "MODULE_LOCATION = ${MODULE_LOCATION}" + @echo "MODULE_RULES = ${MODULE_RULES}" build: MODULEINFOS build: ${MODULEDBD} @@ -571,7 +577,10 @@ 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})) -include ${BASERULES} + include ${BASERULES} + ifneq ($(strip $(MODULE_RULES)),) + include $(MODULE_RULES) + endif endif # Fix incompatible release rules. @@ -582,7 +591,7 @@ RELEASE_INCLUDES += -I${EPICS_BASE}/include/compiler/${CMPLR_CLASS} RELEASE_INCLUDES += -I${EPICS_BASE}/include/os/${OS_CLASS} # Find all sources and set vpath accordingly. -$(foreach file, ${SRCS} ${TEMPLS} ${DBDINSTALLS} ${SCR}, $(eval vpath $(notdir ${file}) ../$(dir ${file}))) +$(foreach file, ${SRCS} ${TEMPLS} ${DBDINSTALLS} ${SCR} ${CFGS}, $(eval vpath $(notdir ${file}) ../$(dir ${file}))) $(foreach file,${VLIBS},$(eval vpath $(notdir ${file}) ../$(dir ${file}))) # Do not treat %.dbd the same way because it creates a circular dependency @@ -627,7 +636,7 @@ endif INSTALL_DBS = $(addprefix ${INSTALL_DB}/,$(notdir ${TEMPLS})) INSTALL_SCRS = $(addprefix ${INSTALL_SCR}/,$(notdir ${SCR})) INSTALL_BINS = $(addprefix ${INSTALL_BIN}/,$(notdir ${BINS})) -INSTALL_CFGS = $(CFG:%=${INSTALL_CFG}/%) +INSTALL_CONFIGS = $(addprefix ${INSTALL_CONFIG}/,$(notdir ${CFGS})) debug:: @echo "INSTALL_LIB = $(INSTALL_LIB)" @@ -643,8 +652,8 @@ debug:: @echo "INSTALL_DBS = $(INSTALL_DBS)" @echo "INSTALL_SCR = $(INSTALL_SCR)" @echo "INSTALL_SCRS = $(INSTALL_SCRS)" - @echo "INSTALL_CFG = $(INSTALL_CFG)" - @echo "INSTALL_CFGS = $(INSTALL_CFGS)" + @echo "INSTALL_CONFIG = $(INSTALL_CONFIG)" + @echo "INSTALL_CONFIGS = $(INSTALL_CONFIGS)" @echo "INSTALL_BIN = $(INSTALL_BIN)" @echo "INSTALL_BINS = $(INSTALL_BINS)" @echo "HDR_SUBDIRS = $(HDR_SUBDIRS)" @@ -661,7 +670,7 @@ debug:: endef $(foreach d,$(HDR_SUBDIRS),$(eval $(call install_subdirs,$d))) -INSTALLS += ${INSTALL_CFGS} ${INSTALL_SCRS} ${INSTALL_HDRS} ${INSTALL_DBDS} ${INSTALL_DBS} ${INSTALL_LIBS} ${INSTALL_VLIBS} ${INSTALL_BINS} ${INSTALL_DEPS} ${INSTALL_META} +INSTALLS += ${INSTALL_CONFIGS} ${INSTALL_SCRS} ${INSTALL_HDRS} ${INSTALL_DBDS} ${INSTALL_DBS} ${INSTALL_LIBS} ${INSTALL_VLIBS} ${INSTALL_BINS} ${INSTALL_DEPS} ${INSTALL_META} install: ${INSTALLS} @@ -693,7 +702,7 @@ ${INSTALL_SCRS}: $(notdir ${SCR}) @echo "Installing scripts $^ to $(@D)" $(INSTALL) -d -m$(BIN_PERMISSIONS) $^ $(@D) -${INSTALL_CFGS}: ${CFGS} +${INSTALL_CONFIGS}: $(notdir ${INSTALL_CONFIGS}) @echo "Installing configuration files $^ to $(@D)" $(INSTALL) -d -m$(INSTALL_PERMISSIONS) $^ $(@D) @@ -701,39 +710,6 @@ ${INSTALL_BINS}: $(addprefix ../,$(filter-out /%,${BINS})) $(filter /%,${BINS}) @echo "Installing binaries $^ to $(@D)" $(INSTALL) -d -m$(BIN_PERMISSIONS) $^ $(@D) -# Create SNL code from st/stt file. -# Important to have %.o: %.st and %.o: %.stt rule before %.o: %.c rule! - -CPPSNCFLAGS1 = $(filter -D%, ${OP_SYS_CFLAGS}) -CPPSNCFLAGS1 += $(filter-out ${OP_SYS_INCLUDE_CPPFLAGS} ,${CPPFLAGS}) ${CPPSNCFLAGS} -CPPSNCFLAGS1 += -I $(dir $(SNC))../../include -SNCFLAGS += -r - -%.i: %.st - @echo ">> Preprocessing $(<F)" - $(CPP) ${CPPSNCFLAGS1} $< > $(*F).i - -%.c: %.i - @echo "" - @echo ">> SNC building process .... " - @echo ">> SNC : $(SNC)" - @echo ">> SNC_VERSION : $(sequencer_VERSION)" - @echo ">> SNC is defined as $(SNC)" - $(SNC) $(TARGET_SNCFLAGS) $(SNCFLAGS) $(*F).i -o $(*F).c - -%_snl.dbd: %.c - @echo ">> Building $(*F)_snl.dbd" - awk -F [\(\)] '/epicsExportRegistrar/ { print "registrar (" $$2 ")"}' $(*F).c > $(*F)_snl.dbd - -%.c: %.stt - @echo "" - @echo ">> SNC building process .... " - @echo ">> SNC : $(SNC)" - @echo ">> SNC_VERSION : $(sequencer_VERSION)" - @echo ">> SNC is defined as $(SNC)" - $(SNC) $(TARGET_SNCFLAGS) $(SNCFLAGS) $< -o $(*F).c - - # Create GPIB code from *.gt file. %.c %.dbd %.list: %.gt @echo "Converting $*.gt"