#************************************************************************* # Copyright (c) 2006 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. #************************************************************************* all: install host: install$(DIVIDER)$(EPICS_HOST_ARCH) ACTIONS = inc ACTIONS += build ACTIONS += install ACTIONS += buildInstall ACTIONS += runtests tapfiles clean-tests test-results junitfiles actionArchTargets = $(foreach action, $(ACTIONS), \ $(addprefix $(action)$(DIVIDER), $(BUILD_ARCHS))) cleanArchTargets = $(addprefix clean$(DIVIDER), $(BUILD_ARCHS)) buildDirs = $(addprefix O., $(BUILD_ARCHS)) # 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) 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))))) # Allows rebuild to work with parallel builds option, -j. ifeq (rebuild,$(filter rebuild,$(MAKECMDGOALS))) $(buildDirs) O.Common : clean 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) $(BUILD_ARCHS) : % : O.% O.Common $(MAKE) -C O.$@ -f ../Makefile TOP=$(TOP)/.. T_A=$@ $(ACTIONS) : % : $(foreach arch, $(BUILD_ARCHS), %$(DIVIDER)$(arch)) $(buildDirs): $(PERL) $(TOOLS)/makeMakefile.pl $@ $(TOP)/.. O.Common: $(MKDIR) O.Common # Clean rules # clean: archsCommonClean archsCommonClean: $(RMDIR) $(buildDirs) O.Common archclean: $(RMDIR) $(buildDirs) $(cleanArchTargets): $(RMDIR) O.$(archPart) realclean: $(RMDIR) O.* .PHONY : $(actionArchTargets) .PHONY : $(cleanArchTargets) .PHONY : $(BUILD_ARCHS) rebuild archsCommonClean .PHONY : $(ACTIONS) clean realclean archclean host all include $(CONFIG)/RULES_COMMON