File:  [EPICS Repository] / base / configure / RULES_ARCHS
Revision 1.34: download - view: text, annotated - select for diffs
Tue Sep 22 18:41:25 2009 UTC (8 years, 2 months ago) by jba
Branches: MAIN
CVS tags: HEAD
Merged R3.14.11 changes from R3.14.2 branch.

#*************************************************************************
# 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. 
#*************************************************************************
#
# $Id: RULES_ARCHS,v 1.34 2009/09/22 18:41:25 jba Exp $
#

all: install

rebuild: clean install

ACTIONS = inc
ACTIONS += build
ACTIONS += install
ACTIONS += buildInstall
ACTIONS += browse
ACTIONS += runtests
#ACTIONS += rebuild

actionPart = $(word 1, $(subst $(DIVIDER), ,$@))
archPart = $(word 2, $(subst $(DIVIDER), ,$@))

actionArchTargets = $(foreach x, $(ACTIONS),\
		$(foreach arch,$(BUILD_ARCHS), $(x)$(DIVIDER)$(arch)))

cleanArchTargets = $(foreach arch,$(BUILD_ARCHS), clean$(DIVIDER)$(arch))

buildDirs = $(addprefix O.,$(BUILD_ARCHS))

#*************************************************************************
# Create epics_host_arch dependancies for GNU make -j option
# Only works with GNU make 3.81 or later (uses eval function)
# Needed in dirs where EPICS_HOST_ARCH build creates a tool used in 
# cross arch builds

CROSS_ARCHS += $(CROSS1) $(CROSS2)

# j is NOT found in MAKEFLAGS when using make 3.81
# Hope to uncomment this for GNU make 3.82
#ifeq ($(findstring j,$(MAKEFLAGS)),j)

define DEP_template
$(2): $$(EPICS_HOST_ARCH)
$(1)$$(DIVIDER)$(2): $(1)$$(DIVIDER)$$(EPICS_HOST_ARCH)
endef

$(foreach action, $(ACTIONS), $(foreach arch,\
      $(CROSS_ARCHS),$(eval $(call DEP_template,$(action),$(arch)))))

#endif
#*************************************************************************

$(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 $@
	$(CP) $(TOP)/Up $@/Up

O.Common:
	$(MKDIR) O.Common

#
# special clean rule
#
clean ::
	$(RMDIR) $(addprefix O.,$(BUILD_ARCHS)) O.Common

archclean ::
	$(RMDIR) $(addprefix O.,$(BUILD_ARCHS))

$(cleanArchTargets) ::
	$(RMDIR) O.$(archPart)

realclean ::
	$(RMDIR) O.*

.PHONY : $(actionArchTargets)
.PHONY : $(cleanArchTargets)
.PHONY : $(BUILD_ARCHS)
.PHONY : $(ACTIONS) clean realclean archclean all

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>