summaryrefslogtreecommitdiff
path: root/xsd-examples/cxx/parser/performance/buildfile
blob: 10111d6dae452c8e540eba04c2d1ad4b9a7fac1b (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
# file      : cxx/parser/performance/buildfile
# license   : not copyrighted - public domain

import libs = libxsd%lib{xsd}

import libxerces = libxerces-c%lib{xerces-c}
import libexpat  = libexpat%lib{expat}

./: doc{README}

# exe{driver-{xerces,expat}}
#
for p: 'xerces' 'expat'
{
  # Make sure that obje{time} doesn't depend on the parser library that varies
  # for different exe{driver-*} targets. Think of -I... options passed to the
  # compiler while compiling time.cxx, which would vary depending on exe
  # target time.cxx is a prerequisite of.
  #
  ./: exe{driver-$p}: obje{driver-$p time}         \
                      {hxx ixx cxx}{test-$p-pskel} \
                      $libs $(lib$p)

  exe{driver-$p}: xml{test-50k}: test.input = true

  obje{driver-$p}: cxx{driver} $libs $(lib$p)

  <{hxx ixx cxx}{test-$p-pskel}>: xsd{test} $xsd
  {
    # Note: we can't use $p in the buildscript since it will be substituted by
    # the latest $p value.
    #
    parser = $p
  }
  {{
    diag xsd ($<[0]) # @@ TMP

    $xsd cxx-parser --std c++11            \
         --generate-inline                 \
         --skel-file-suffix -$parser-pskel \
         --xml-parser $parser              \
         --output-dir $out_base            \
         $path($<[0])
  }}
}

obje{time}: {hxx cxx}{time}

# exe{gen}
#
./: exe{gen}: cxx{gen} testscript{gen}

# Build options.
#
cxx.poptions =+ "-I$out_base" "-I$src_base"

obje{driver-xerces}: cxx.poptions += -DXERCES_PARSER