1# file      : tests/cxx/parser/built-in/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): $(out_root)/xsd/xsd
35
36$(call include-dep,$(dep),$(obj),$(gen))
37
38# Convenience alias for default target.
39#
40$(out_base)/: $(driver)
41
42
43# Test.
44#
45$(test): driver := $(driver)
46$(test): $(driver) $(src_base)/test.xml $(src_base)/output
47	$(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver))
48
49# Clean.
50#
51$(clean): $(driver).o.clean                                 \
52  $(addsuffix .cxx.clean,$(obj))                            \
53  $(addsuffix .cxx.clean,$(dep))                            \
54  $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean))
55
56# Generated .gitignore.
57#
58ifeq ($(out_base),$(src_base))
59$(gen): | $(out_base)/.gitignore
60$(driver): | $(out_base)/.gitignore
61
62$(out_base)/.gitignore: files := driver $(genf)
63$(clean): $(out_base)/.gitignore.clean
64
65$(call include,$(bld_root)/git/gitignore.make)
66endif
67
68# How to.
69#
70$(call include,$(bld_root)/cxx/o-e.make)
71$(call include,$(bld_root)/cxx/cxx-o.make)
72$(call include,$(bld_root)/cxx/cxx-d.make)
73
74$(call include,$(bld_root)/cxx/standard.make) # cxx_standard
75ifdef cxx_standard
76$(gen): xsd_options += --std $(cxx_standard)
77$(call include,$(scf_root)/xsd/parser/xsd-cxx.make)
78endif
79
80
81# Dependencies.
82#
83$(call import,$(src_root)/xsd/makefile)
84