1# file      : tests/cxx/tree/chameleon/makefile
2# copyright : Copyright (c) 2006-2017 Code Synthesis Tools CC
3# license   : GNU GPL v2 + exceptions; see accompanying LICENSE file
4
5include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make
6
7xsd := includer.xsd
8cxx := driver.cxx
9
10obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o))
11dep := $(obj:.o=.o.d)
12
13driver := $(out_base)/driver
14test   := $(out_base)/.test
15clean  := $(out_base)/.clean
16
17
18# Import.
19#
20$(call import,\
21  $(scf_root)/import/libxerces-c/stub.make,\
22  l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
23
24
25# Build.
26#
27$(driver): $(obj) $(xerces_c.l)
28
29$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
30$(obj) $(dep): $(xerces_c.l.cpp-options)
31
32genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx)
33gen  := $(addprefix $(out_base)/,$(genf))
34
35$(gen): xsd := $(out_root)/xsd/xsd
36$(gen): xsd_options += --root-element root --generate-ostream
37$(gen): $(out_root)/xsd/xsd
38
39$(call include-dep,$(dep),$(obj),$(gen))
40
41# Convenience alias for default target.
42#
43$(out_base)/: $(driver)
44
45
46# Test.
47#
48$(test): driver := $(driver)
49$(test): $(driver) $(src_base)/test.xml $(src_base)/output
50	$(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
51
52# Clean.
53#
54$(clean): $(driver).o.clean                                \
55  $(addsuffix .cxx.clean,$(obj))                           \
56  $(addsuffix .cxx.clean,$(dep))                           \
57  $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean))
58
59# Generated .gitignore.
60#
61ifeq ($(out_base),$(src_base))
62$(gen): | $(out_base)/.gitignore
63$(driver): | $(out_base)/.gitignore
64
65$(out_base)/.gitignore: files := driver $(genf)
66$(clean): $(out_base)/.gitignore.clean
67
68$(call include,$(bld_root)/git/gitignore.make)
69endif
70
71# How to.
72#
73$(call include,$(bld_root)/cxx/o-e.make)
74$(call include,$(bld_root)/cxx/cxx-o.make)
75$(call include,$(bld_root)/cxx/cxx-d.make)
76
77$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
78ifdef cxx_standard
79$(gen): xsd_options += --std $(cxx_standard)
80$(call include,$(scf_root)/xsd/tree/xsd-cxx.make)
81endif
82
83
84# Dependencies.
85#
86$(call import,$(src_root)/xsd/makefile)
87