aboutsummaryrefslogtreecommitdiff
path: root/build2/buildfile
blob: b24fc155e37f765667cf5a38bfd9529fae223074 (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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# file      : build2/buildfile
# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd
# license   : MIT; see accompanying LICENSE file

import libs = libbutl%lib{butl}

exe{b}:                                         \
          {hxx ixx     cxx}{ algorithm        } \
          {            cxx}{ b                } \
          {hxx ixx     cxx}{ b-options        } \
          {hxx     txx cxx}{ context          } \
          {hxx         cxx}{ depdb            } \
          {hxx         cxx}{ diagnostics      } \
          {hxx         cxx}{ dump             } \
          {hxx ixx     cxx}{ file             } \
	  {hxx     txx cxx}{ filesystem       } \
          {hxx         cxx}{ lexer            } \
          {hxx         cxx}{ module           } \
          {hxx ixx     cxx}{ name             } \
          {hxx         cxx}{ operation        } \
          {hxx         cxx}{ parser           } \
          {hxx         cxx}{ prerequisite     } \
          {hxx         cxx}{ rule             } \
          {hxx            }{ rule-map         } \
          {hxx         cxx}{ scope            } \
          {hxx         cxx}{ search           } \
          {hxx         cxx}{ spec             } \
          {hxx ixx txx cxx}{ target           } \
          {hxx            }{ target-key       } \
          {hxx            }{ target-type      } \
          {hxx         cxx}{ token            } \
          {hxx            }{ types            } \
	  {hxx         cxx}{ types-parsers    } \
          {hxx ixx txx cxx}{ utility          } \
          {hxx ixx txx cxx}{ variable         } \
          {hxx            }{ version          } \
      bin/{hxx         cxx}{ guess            } \
      bin/{hxx         cxx}{ init             } \
      bin/{hxx         cxx}{ rule             } \
      bin/{hxx         cxx}{ target           } \
        c/{hxx         cxx}{ init             } \
        c/{hxx            }{ target           } \
       cc/{hxx            }{ common           } \
       cc/{hxx         cxx}{ compile          } \
       cc/{            cxx}{ gcc              } \
       cc/{hxx         cxx}{ guess            } \
       cc/{hxx         cxx}{ init             } \
       cc/{hxx         cxx}{ install          } \
       cc/{hxx         cxx}{ link             } \
       cc/{hxx         cxx}{ module           } \
       cc/{            cxx}{ msvc             } \
       cc/{            cxx}{ pkgconfig        } \
       cc/{hxx         cxx}{ target           } \
       cc/{hxx            }{ types            } \
       cc/{hxx ixx     cxx}{ utility          } \
       cc/{            cxx}{ windows-manifest } \
       cc/{            cxx}{ windows-rpath    } \
      cli/{hxx         cxx}{ init             } \
      cli/{hxx         cxx}{ rule             } \
      cli/{hxx         cxx}{ target           } \
   config/{hxx         cxx}{ init             } \
   config/{hxx            }{ module           } \
   config/{hxx         cxx}{ operation        } \
   config/{hxx     txx cxx}{ utility          } \
      cxx/{hxx         cxx}{ init             } \
      cxx/{hxx         cxx}{ target           } \
     dist/{hxx         cxx}{ init             } \
     dist/{hxx         cxx}{ operation        } \
     dist/{hxx         cxx}{ rule             } \
pkgconfig/{hxx         cxx}{ init             } \
  install/{hxx         cxx}{ init             } \
  install/{hxx         cxx}{ operation        } \
  install/{hxx         cxx}{ rule             } \
  install/{hxx            }{ utility          } \
     test/{hxx         cxx}{ init             } \
     test/{hxx         cxx}{ operation        } \
     test/{hxx         cxx}{ rule             } \
                            $libs

# Pass our compiler target to be used as build2 host.
#
# obj{context}: cxx.poptions += -DBUILD2_HOST_TRIPLET=\"$cxx.target\"
if ($__build2_greater_than_0_2_0_hack__ == "true")
{
  var=cxx.target
}
else
{
  var=cxx.host
}

obj{b context}: cxx.poptions += -DBUILD2_HOST_TRIPLET='"'$($var)'"'

# Load the cli module but only if it's available. This way a distribution
# that includes pre-generated files can be built without installing cli.
# This is also the reason why above we explicitly spelled out individual
# source files instead of using the cli.cxx{} group (it won't be there
# unless the module is loaded).
#
using? cli

if! $cli.loaded
{
  define cli: file
  cli{*}: extension = cli
}

{hxx ixx cxx}{b-options}: cli{b}

cli.options += -I $src_root --include-with-brackets --include-prefix build2 \
--guard-prefix BUILD2 --cxx-prologue "#include <build2/types-parsers>"      \
--cli-namespace build2::cl --generate-file-scanner --generate-parse 	    \
--generate-specifier

# Usage options.
#
cli.options += --suppress-undocumented --long-usage --ansi-color \
--page-usage 'build2::print_$name$_' --option-length 20

# Include generated cli files into the distribution.
#
hxx{*-options}: dist = true
ixx{*-options}: dist = true
cxx{*-options}: dist = true