• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Jamfile
2#
3# Copyright (c) 2007-2008 Steven Watanabe
4# Copyright (c) 2009 Joel de Guzman
5# Copyright (c) 2009 Hartmut Kaiser
6# Copyright (c) 2009 Francois Barel
7#
8# Distributed under the Boost Software License, Version 1.0. (See
9# accompanying file LICENSE_1_0.txt or copy at
10# http://www.boost.org/LICENSE_1_0.txt
11
12import testing ;
13import path ;
14import regex ;
15import print ;
16import sequence ;
17import feature ;
18
19project boost/spirit/test/test_headers
20    : requirements
21        <include>$(BOOST_ROOT)
22        <include>../../../..
23        <c++-template-depth>300
24    ;
25
26headers =
27[
28    path.glob-tree ../../../../boost/spirit/include : *.hpp : classic* phoenix1*
29] ;
30
31for local file in $(headers)
32{
33    compile test.cpp
34        : # requirements
35            <define>BOOST_SPIRIT_HEADER_NAME=$(file)
36            <dependency>$(file)
37        : # test name
38            [ regex.replace [ path.relative-to ../../../../boost/spirit $(file) ] "/" "_" ]
39        ;
40}
41
42feature.feature <generate-include-all-order> : forward reverse : incidental ;
43
44rule generate-include-all ( target : sources * : properties * )
45{
46    print.output $(target) ;
47
48    if <generate-include-all-order>reverse in $(properties)
49    {
50        sources = [ sequence.reverse $(sources) ] ;
51    }
52
53    for local file in $(sources)
54    {
55        print.text "#include <$(file:G=)>
56" : overwrite ;
57    }
58
59}
60
61make auto_all1.cpp
62    : $(headers)
63    : @generate-include-all
64    ;
65
66make auto_all2.cpp
67    : $(headers)
68    : @generate-include-all
69    : <generate-include-all-order>reverse
70    ;
71
72# this ought to catch non-inlined functions and other duplicate definitions
73link auto_all1.cpp auto_all2.cpp main.cpp
74    : <include>.
75    : auto_all_headers
76    ;
77