summaryrefslogtreecommitdiff
path: root/build-0.3/import.make
blob: 82a67633e9dac63d30bb99f5a959570e8b9167c4 (plain)
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
# file      : build/import.make
# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC
# license   : GNU GPL v2; see accompanying LICENSE file


# This cannot be eliminated.
#
%frame_exclude% += import-set-value
define import-set-value
$(eval $$1 := $$2)
endef

%frame_exclude% += exported-names
define exported-names
$(foreach i,1 2 3 4 5 6 7,$(if $(value $i),$(lastword $(value $i))))
endef

%frame_exclude% += import-names
define import-names
$(foreach i,1 2 3 4 5 6 7,$(if $(lastword $(value $i)),\
$(call import-set-value,$(lastword $(value $i)),$(value $(firstword $(value $i))))))
endef

%frame_exclude% += import-body
define import-body
$(call frame-enter,$(call exported-names,$2,$3,$4,$5,$6,$7,$8))

$(call include,$1)

$(call import-names,$2,$3,$4,$5,$6,$7,$8)

$(call frame-leave)
endef


# Simple case where there are no names imported. Also note that we use
# include-once here since there is no reason to do it more than once.
# We key it onto out_root to make sure we don't process the same makefile
# more than once since that's what export stubs do.
#
%frame_exclude% += import-body-simple
define import-body-simple
$(call frame-enter)

$(call include-once,$1,$(out_root))

$(call frame-leave)
endef


#
#
%frame_exclude% += import
define import
$(eval $(if $(strip $2),\
$(call import-body,$1,$2,$3,$4,$5,$6,$7,$8),\
$(call import-body-simple,$1)))
endef


#
# export
#
%frame_exclude% += export-names
define export-names
$(foreach i,1 2 3 4 5 6 7,$(if $(value $i),\
$(call import-set-value,$(firstword $(value $i)),$(wordlist 2,$(words $(value $i)),$(value $i)))))
endef


%frame_exclude% += export
define export
$(call export-names,$1,$2,$3,$4,$5,$6,$7)
endef