Files
pcas/config/RULES_ARCHS
1996-07-30 21:27:39 +00:00

86 lines
2.2 KiB
Plaintext

#
# $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 += depends
actionPart = $(word 1, $(subst $(DIVIDER), ,$@))
archPart = $(word 2, $(subst $(DIVIDER), ,$@))
#
# hostActionArchTargets
#
ifeq (Makefile.$(BUILD_TYPE), $(wildcard Makefile.$(BUILD_TYPE)))
hostArchs = $(HOST_ARCH) $(filter-out $(HOST_ARCH),$(CROSS_COMPILER_HOST_ARCHS))
hostDirs = $(addprefix O.,$(hostArchs))
hostActionArchTargets = $(foreach x, $(ACTIONS),\
$(foreach arch,$(hostArchs), $(x)$(DIVIDER)$(arch)))
$(hostActionArchTargets) : $(hostDirs)
$(MAKE) -C O.$(archPart) -f ../Makefile.$(BUILD_TYPE) T_A=$(archPart) $(actionPart)
endif
#
# crossActionArchTargets
#
ifeq (Makefile.Vx, $(wildcard Makefile.Vx))
crossArchs = $(CROSS_COMPILER_TARGET_ARCHS)
crossDirs = $(addprefix O.,$(crossArchs))
crossActionArchTargets = $(foreach x, $(ACTIONS), \
$(foreach arch, $(CROSS_COMPILER_TARGET_ARCHS), $(x)$(DIVIDER)$(arch)))
$(crossActionArchTargets) : $(crossDirs)
$(MAKE) -C O.$(archPart) -f ../Makefile.Vx T_A=$(archPart) $(actionPart)
endif
$(hostDirs) :
$(MKDIR) $@
echo "T_A=$(subst O.,,$@)" > $@/Makefile
echo "include ../Makefile.$(BUILD_TYPE)" >> $@/Makefile
$(crossDirs) :
$(MKDIR) $@
echo "T_A=$(subst O.,,$@)" > $@/Makefile
echo "include ../Makefile.Vx" >> $@/Makefile
#
# host/cross action targets
#
$(ACTIONS) clean : % : %$(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)
$(hostArchs) : % : O.%
$(MAKE) -C O.$@ -f ../Makefile.$(BUILD_TYPE) T_A=$@
$(crossArchs) : % : O.%
$(MAKE) -C O.$@ -f ../Makefile.Vx T_A=$@
#
# special clean rule
#
clean$(DIVIDER)% :
$(RMDIR) O.$*
.PHONY : $(HostActionTargets)
.PHONY : $(CrossActionTargets)
.PHONY : $(crossActionArchTargets)
.PHONY : $(hostActionArchTargets)
.PHONY : $(hostArchs) $(crossArchs)
.PHONY : $(ACTIONS) clean all host cross