summaryrefslogtreecommitdiffstats
path: root/rules/post/dump.make
blob: 6959fc99b85f6d45596f490fde8d0b5cb673aa48 (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
# -*-makefile-*-

ifneq ($(filter dump,$(MAKECMDGOALS)),)
# ----------------------------------------------------------------------------
# environment export to plugins and shell scripts
# ----------------------------------------------------------------------------
# If you run 'ptxdist make dump', you will get two files:
# $(STATEDIR)/environment.symbols <- A list of all internal Variable
#                                    Symbols in the main PTXdist Makefile
# $(STATEDIR)/environment.bash    <- A selection of Variables in bash
#				     syntax. Please adjust M2B_DUMP_VARIABLES
#				     and M2B_DUMP_SUFFIXES to your needs.
# ----------------------------------------------------------------------------
#
# dump all internal make symbols
#

#
# Make to bash export (M2B):
#
M2B=$(STATEDIR)/environment

#
# Select make variables for export to shell (by full name)
#
M2B_DUMP_VARIABLES := \
	PTXCONF_CONFIGFILE_VERSION \
	PTXCONFIG PTXCONF_SYSROOT_TARGET PTXCONF_PROJECT PTXCONF_PROJECT_VERSION \
	PTXDIST_WORKSPACE PTXDIST_TOPDIR \
	PTXDIST PTXDIST_VERSION_FULL \
	RULESDIR SCRIPTSDIR STATEDIR SYSROOT WORKDIR \
	PACKAGES- PACKAGES-y PACKAGES-m

#
# Select make variables for export to shell (by suffix)
#
M2B_DUMP_SUFFIXES := _URL _DIR _VERSION _SOURCE

$(M2B).symbols:
	@echo "$(.VARIABLES)" 		\
	| sed s/\ /\\n/g 		\
	| egrep -v "[^A-Z0-9_-]|^_$$" 	\
	| sort -u > $@

dump-symbols: $(M2B).symbols

#
# dump selected symbols with value
#
packages	:= $(PACKAGES-) $(PACKAGES-y) $(PACKAGES-m)
prefixes	:= $(shell echo $(packages) | tr "a-z-" "A-Z_")
symbols		:= $(foreach prefix,$(prefixes),$(foreach suffix,$(M2B_DUMP_SUFFIXES),$(prefix)$(suffix)))
allsymbols	:= $(prefixes) $(shell echo $(symbols) | tr "a-z-" "A-Z_") $(M2B_DUMP_VARIABLES)

$(addprefix dump-,$(sort $(allsymbols))): $(M2B).symbols
	@echo 'M2B_$(call remove_quotes,$(*))="$(call remove_quotes,$($(*)))"' >> $(M2B).bash.tmp
	@echo '$(call remove_quotes,$(*)) $(call remove_quotes,$($(*)))' >> $(M2B).tmp

dump: $(addprefix dump-,$(allsymbols))
	@mv $(M2B).bash.tmp $(M2B).bash
	@mv $(M2B).tmp $(M2B)

endif

# vim600:set foldmethod=marker:
# vim600:set syntax=make: