From 30c7c010abc37b41dca9d3f2b224ebec87b8b2ae Mon Sep 17 00:00:00 2001 From: Dirk Zimoch <dirk.zimoch@psi.ch> Date: Mon, 14 Sep 2015 17:44:07 +0200 Subject: [PATCH] support for manual dependencies --- App/tools/driver.makefile | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/App/tools/driver.makefile b/App/tools/driver.makefile index d115a55c..64e31eed 100644 --- a/App/tools/driver.makefile +++ b/App/tools/driver.makefile @@ -162,7 +162,7 @@ help: clean help version; \ do echo " make $$target"; \ done - @echo "Makefile variables: (defaults)" + @echo "Makefile variables:(defaults) [comment]" @echo " EPICS_VERSIONS (${DEFAULT_EPICS_VERSIONS})" @echo " MODULE (${PRJ}) [from current directory name]" @echo " PROJECT [older name for MODULE]" @@ -174,7 +174,7 @@ help: @echo " EXCLUDE_VERSIONS () [versions not to build, e.g. 3.14]" @echo " EXCLUDE_ARCHS () [target architectures not to build]" @echo " ARCH_FILTER () [target architectures to build, e.g. SL6%]" - @echo " BUILDCLASSES (vxWorks) [other choices: Linux]" + @echo " BUILDCLASSES (vxWorks) [other choices: Linux]" # "make version" shows the version and why it is how it is. version: ${IGNOREFILES} @@ -425,6 +425,9 @@ install build debug: O.${EPICSVERSION}_Common O.${EPICSVERSION}_${T_A} endif +REQ = ${REQUIRED} ${REQUIRED_${OS_CLASS}} ${REQUIRED_${T_A}} ${REQUIRED_${EPICS_BASETYPE}} ${REQUIRED_${EPICSVERSION}} +export REQ + else # in O.* ## RUN 4 # in O.* directory @@ -456,6 +459,12 @@ endef # The tricky part is to sort versions numerically. Make can't but ls -v can. Only accept numerical versions. $(eval $(foreach m,$(filter-out %/$(PRJ),$(wildcard ${EPICS_MODULES}/*)),$(call ADD_FOREIGN_INCLUDES,$m))) +# manually required modules +define ADD_MANUAL_DEPENDENCIES +$(eval $(notdir $(1))_VERSION := $(or $(patsubst $(1)/%/R${EPICSVERSION},%,$(lastword $(shell ls -dv $(1)/*.*.*/R${EPICSVERSION} 2>/dev/null))),$(error Manually required module $(notdir $(1)) not found))) +endef +$(eval $(foreach m,${REQ},$(call ADD_MANUAL_DEPENDENCIES,${EPICS_MODULES}/$m))) + debug: @echo "BUILDCLASSES = ${BUILDCLASSES}" @echo "OS_CLASS = ${OS_CLASS}" @@ -848,11 +857,12 @@ ${EXPORTFILE}: $(filter-out $(basename ${EXPORTFILE})$(OBJ),${LIBOBJS}) $(NM) $^ ${BASELIBS:%=${EPICS_BASE}/lib/${T_A}/${LIB_PREFIX}%$(LSUFFIX)} ${CORELIB} | awk '$(makexportfile)' > $@ # Create dependency file for recursive requires -${DEPFILE}: ${LIBOBJS} +${DEPFILE}: ${LIBOBJS} $(USERMAKEFILE) @echo "Collecting dependencies" $(RM) $@ @echo "# Generated file. Do not edit." > $@ cat *.d | sed 's/ /\n/g' | sed -n 's%$(EPICS_MODULES)/*\([^/]*\)/\([^/]*\)/.*%\1 \2+%p'|sort -u >> $@ + $(foreach m,${REQ},echo "$m $(basename ${$m_VERSION})+" >> $@;) $(BUILDRULE) $(RM) MakefileInclude -- GitLab