# # $Id$ # # EPICS RULES_ARCH # by Matthew Needes and Mike Bordua and Janet Andersoni and Jeff Hill # all:: install ACTIONS += inc ACTIONS += build ACTIONS += install ACTIONS += buildInstall ACTIONS += depends ACTIONS += rebuild actionPart = $(word 1, $(subst $(DIVIDER), ,$@)) archPart = $(word 2, $(subst $(DIVIDER), ,$@)) # # hostActionArchTargets # hostArchs = $(HOST_ARCH) hostActionArchTargets = $(foreach x, $(ACTIONS),\ $(foreach arch,$(hostArchs), $(x)$(DIVIDER)$(arch))) ifeq (Makefile.$(BUILD_TYPE), $(wildcard Makefile.$(BUILD_TYPE))) hostDirs = $(addprefix O.,$(hostArchs)) $(hostActionArchTargets) : $(hostDirs) $(MAKE) -C O.$(archPart) -f ../Makefile.$(BUILD_TYPE) T_A=$(archPart) $(actionPart) $(hostArchs) : % : O.% $(MAKE) -C O.$@ -f ../Makefile.$(BUILD_TYPE) T_A=$@ else $(hostActionArchTargets) : $(hostArchs) : endif # # crossActionArchTargets # crossArchs = $(filter-out $(hostArchs),$(BUILD_ARCHS)) crossActionArchTargets = $(foreach x, $(ACTIONS), \ $(foreach arch, $(CROSS_COMPILER_TARGET_ARCHS), $(x)$(DIVIDER)$(arch))) ifeq (Makefile.Vx, $(wildcard Makefile.Vx)) crossDirs = $(addprefix O.,$(crossArchs)) $(crossActionArchTargets) : $(crossDirs) $(MAKE) -C O.$(archPart) -f ../Makefile.Vx T_A=$(archPart) $(actionPart) $(crossArchs) : % : O.% $(MAKE) -C O.$@ -f ../Makefile.Vx T_A=$@ else $(crossActionArchTargets) : $(crossArchs) : endif $(hostDirs) : $(EPICS_BASE)/config/makeMakefile.pl $(PERL) $(EPICS_BASE)/config/makeMakefile.pl $@ $(BUILD_TYPE) $(crossDirs) : $(EPICS_BASE)/config/makeMakefile.pl $(PERL) $(EPICS_BASE)/config/makeMakefile.pl $@ Vx # # host/cross action targets # $(ACTIONS) : % : %$(DIVIDER)host %$(DIVIDER)cross HostActionTargets = $(foreach x, $(ACTIONS) clean, $(x)$(DIVIDER)host) CrossActionTargets = $(foreach x, $(ACTIONS) clean, $(x)$(DIVIDER)cross) $(HostActionTargets) : %$(DIVIDER)host : $(addprefix %$(DIVIDER), $(hostArchs)) $(CrossActionTargets) : %$(DIVIDER)cross : $(addprefix %$(DIVIDER), $(crossArchs)) # # arch targets # host : $(hostArchs) cross : $(crossArchs) # # special clean rule # clean : $(RMDIR) $(hostDirs) $(crossDirs) clean$(DIVIDER)% : $(RMDIR) O.$* .PHONY :: $(HostActionTargets) .PHONY :: $(CrossActionTargets) .PHONY :: $(crossActionArchTargets) .PHONY :: $(hostActionArchTargets) .PHONY :: $(hostArchs) $(crossArchs) .PHONY :: $(ACTIONS) clean all host cross