109 lines
3.2 KiB
Plaintext
109 lines
3.2 KiB
Plaintext
#*************************************************************************
|
|
# 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$
|
|
#
|
|
|
|
all: install
|
|
|
|
build install buildInstall: $(CHECK_RELEASE_$(CHECK_RELEASE))
|
|
|
|
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.80 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)
|
|
|
|
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)))))
|
|
|
|
#*************************************************************************
|
|
|
|
$(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
|
|
|
|
#
|
|
# RELEASE consistency checking
|
|
|
|
# The RELEASE.$(EPICS_HOST_ARCH) files don't need to be included here:
|
|
targetReleaseFiles = $(wildcard $(foreach arch, $(BUILD_ARCHS), \
|
|
$(TOP)/configure/RELEASE.Common.$(arch) \
|
|
$(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).$(arch)))
|
|
|
|
checkReleaseTargets = $(addprefix checkRelease, $(suffix $(targetReleaseFiles)))
|
|
checkRelease: $(checkReleaseTargets)
|
|
$(CONVERTRELEASE) -h $(EPICS_HOST_ARCH) checkRelease
|
|
$(checkReleaseTargets):checkRelease.%:
|
|
$(CONVERTRELEASE) -h $(EPICS_HOST_ARCH) -a $* checkRelease
|
|
|
|
warnReleaseTargets = $(addprefix warnRelease, $(suffix $(targetReleaseFiles)))
|
|
warnRelease: $(warnReleaseTargets)
|
|
-$(CONVERTRELEASE) -h $(EPICS_HOST_ARCH) checkRelease
|
|
$(warnReleaseTargets):warnRelease.%:
|
|
-$(CONVERTRELEASE) -h $(EPICS_HOST_ARCH) -a $* checkRelease
|
|
|
|
#
|
|
# 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
|
|
.PHONY : checkRelease $(checkReleaseTargets)
|