File: RULES_ARCHS

package info (click to toggle)
epics-base 7.0.8.1%2Bdfsg1-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 22,512 kB
  • sloc: cpp: 130,870; ansic: 115,274; perl: 10,647; makefile: 3,476; yacc: 1,307; python: 594; lex: 236; sh: 108; csh: 36
file content (93 lines) | stat: -rw-r--r-- 2,681 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#*************************************************************************
# 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 <top>/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