summaryrefslogtreecommitdiff
path: root/build/xsd/tree/xsd-cxx.make
blob: 575b3ebf28df402afaaa304333251c325877a255 (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
# file      : build/xsd/tree/xsd-cxx.make
# author    : Boris Kolpackov <boris@codesynthesis.com>
# copyright : Copyright (c) 2005-2011 Code Synthesis Tools CC
# license   : GNU GPL v2 + exceptions; see accompanying LICENSE file

#@@ Need to use extensions from cxx config.
#

# C++/Tree mapping.
#
xsd_tree_pattern :=                     \
$(out_base)/%$(xsd_tree_suffix).cxx     \
$(out_base)/%$(xsd_tree_suffix).hxx     \
$(out_base)/%$(xsd_tree_suffix).ixx     \
$(out_base)/%$(xsd_tree_suffix)-fwd.hxx

$(xsd_tree_pattern): xsd := xsd
$(xsd_tree_pattern): xsd_command := cxx-tree
$(xsd_tree_pattern): xsd_options := --generate-inline

.PRECIOUS: $(xsd_tree_pattern)

ifeq ($(out_base),$(src_base))

$(xsd_tree_pattern): $(src_base)/%.xsd
	$(call message,xsd $<,$(xsd) $(xsd_command) $(xsd_options) --output-dir $(dir $@) $<)

else

$(xsd_tree_pattern): $(src_base)/%.xsd | $$(dir $$@).
	$(call message,xsd $<,$(xsd) $(xsd_command) $(xsd_options) --output-dir $(dir $@) $<)

$(xsd_tree_pattern): $(out_base)/%.xsd | $$(dir $$@).
	$(call message,xsd $<,$(xsd) $(xsd_command) $(xsd_options) --output-dir $(dir $@) $<)

endif

.PHONY: $(out_base)/%$(xsd_tree_suffix).cxx.xsd.clean

$(out_base)/%$(xsd_tree_suffix).cxx.xsd.clean:
	$(call message,rm $(@:.cxx.xsd.clean=.cxx),rm -f $(@:.cxx.xsd.clean=.cxx))
	$(call message,rm $(@:.cxx.xsd.clean=.hxx),rm -f $(@:.cxx.xsd.clean=.hxx))
	$(call message,rm $(@:.cxx.xsd.clean=.ixx),rm -f $(@:.cxx.xsd.clean=.ixx))
	$(call message,rm $(@:.cxx.xsd.clean=-fwd.hxx),rm -f $(@:.cxx.xsd.clean=-fwd.hxx))

# Reset the config variables so they won't take effect in other places.
#
xsd_tree_suffix :=