1# file      : tests/cxx/parser/enumeration/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 := test.xsd
8cxx := driver.cxx
9
10obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o))
11dep := $(obj:.o=.o.d)
12
13driver := $(out_base)/driver
14test   := $(out_base)/.test
15clean  := $(out_base)/.clean
16
17# Import.
18#
19$(call import,\
20  $(scf_root)/import/libxerces-c/stub.make,\
21  l: xerces_c.l,cpp-options: xerces_c.l.cpp-options)
22
23# Build.
24#
25$(driver): $(obj) $(xerces_c.l)
26
27$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd
28$(obj) $(dep): $(xerces_c.l.cpp-options)
29
30genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx)
31gen  := $(addprefix $(out_base)/,$(genf))
32
33$(gen): xsd := $(out_root)/xsd/xsd
34$(gen): xsd_options += --type-map $(src_base)/test.map
35$(gen): $(out_root)/xsd/xsd $(src_base)/test.map
36
37$(call include-dep,$(dep),$(obj),$(gen))
38
39# Convenience alias for default target.
40#
41$(out_base)/: $(driver)
42
43
44# Test.
45#
46$(test): driver := $(driver)
47$(test): $(driver) $(src_base)/test.xml $(src_base)/output
48	$(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
49
50# Clean.
51#
52$(clean): $(driver).o.clean                                 \
53  $(addsuffix .cxx.clean,$(obj))                            \
54  $(addsuffix .cxx.clean,$(dep))                            \
55  $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
56
57# Generated .gitignore.
58#
59ifeq ($(out_base),$(src_base))
60$(gen): | $(out_base)/.gitignore
61$(driver): | $(out_base)/.gitignore
62
63$(out_base)/.gitignore: files := driver $(genf)
64$(clean): $(out_base)/.gitignore.clean
65
66$(call include,$(bld_root)/git/gitignore.make)
67endif
68
69# How to.
70#
71$(call include,$(bld_root)/cxx/o-e.make)
72$(call include,$(bld_root)/cxx/cxx-o.make)
73$(call include,$(bld_root)/cxx/cxx-d.make)
74
75$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
76ifdef cxx_standard
77$(gen): xsd_options += --std $(cxx_standard)
78$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
79endif
80
81
82# Dependencies.
83#
84$(call import,$(src_root)/xsd/makefile)
85