summaryrefslogtreecommitdiff
path: root/status/Jamfile.v2
blob: d05e9ab557c4c36ee8fa91023951e064a23dd7ab (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
125
126
127
128
129
130
131
132
133
134
135
# Boost regression-testing Jamfile
#  (C) Copyright David Abrahams 2002. Permission to copy, use, modify, sell and
#  distribute this software is granted provided this copyright notice appears in
#  all copies. This software is provided "as is" without express or implied
#  warranty, and with no claim as to its suitability for any purpose.

#  Status:
#  - std::locale-support usage is commented out.
#  Two test suite have different names.
#  <no-warn> in config test is commented out.
#  One of the smart_ptr test is run only from invocation dir in V1, and not
#  run in V2 at all.


project status
    : source-location $(BOOST_ROOT)
    : requirements <hardcode-dll-paths>true
    ;

import testing ;
import modules ;
import project ;
import regex ;
import modules ;
import path ;

local check-libs-only = [ MATCH "^--(check-libs-only)" : [ modules.peek : ARGV ] ] ;
local check-libs-only-targets = ;
local libraries = ;

local rule run-tests ( root : tests * )
{
    local limit-tests = [ MATCH "^--limit-tests=(.*)" : [ modules.peek : ARGV ] ] ;
    local location = [ project.attribute $(__name__) location ] ;
    for local test in $(tests)
    {
        local library = [ regex.split $(test) "/" ] ;
        library = $(library[0]) ;
        if $(limit-tests)
        {
            if ! [ MATCH "^($(limit-tests))" : $(test) ]
            {
                library = ;
            }
        }
        if $(library)
        {
            use-project /boost/$(test) : ../$(root)/$(test) ;
            if $(root) = libs && ( ! ( $(library) in $(libraries) ) )
            {
                libraries += $(library) ;
                local test_module = [ project.find ../$(root)/$(test) : $(location) ] ;
                modules.poke $(test_module) : __LIBRARY__ : $(root)/$(library) ;
                modules.poke $(test_module) : __JAMFILE__ : [ modules.peek project : JAMFILE ] ;
                project.push-current [ project.target $(test_module) ] ;
                module $(test_module)
                {
                    import testing ;
                    testing.make-test run-pyd :
                        $(BOOST_ROOT)/status/boost_check_library.py
                        :
                        <pythonpath>$(BOOST_ROOT)/status
                        <testing.arg>--boost-root=\"$(BOOST_ROOT)\"
                        <testing.arg>--library=$(__LIBRARY__)
                        <testing.arg>--jamfile=\"$(__JAMFILE__:J=;)\"
                        <testing.arg>organization
                        :
                        __boost_check_library__ ;
                }
                project.pop-current ;
                check-libs-only-targets += ../$(root)/$(test)//__boost_check_library__ ;
            }
            if ! $(check-libs-only)
            {
                build-project ../$(root)/$(test) ;
            }
        }
        else
        {
            use-project /boost/$(test) : ../$(root)/$(test) ;
        }
    }
}

local libs-to-test = ;
for local libdir in [ path.glob $(BOOST_ROOT) : libs/* ]
{
    local jamfiles = [ path.glob [ path.join $(libdir) test ] : [ modules.peek project : JAMFILE ] ] ;
    if $(jamfiles)
    {
        libs-to-test += $(libdir:B) ;
    }
}
libs-to-test = [ SORT $(libs-to-test) ] ;

run-tests libs : $(libs-to-test)/test ;

# Tests from Jamfiles in individual library test subdirectories
# Please keep these in alphabetic order by test-suite name
run-tests libs :
    algorithm/minmax/test       # test-suite algorith/minmax
    algorithm/string/test       # test-suite algorithm/string
    concept_check               # test-suite concept_check
    container/bench             # test-suite container benchmarks
    container/example           # test-suite container_example
    core/test/swap              # test-suite core/swap
    disjoint_sets               # test-suite disjoint_sets
    dynamic_bitset              # test-suite dynamic_bitset
    functional/factory/test     # test-suite functional/factory
    functional/forward/test     # test-suite functional/forward
    functional/hash/test        # test-suite functional/hash
    functional/overloaded_function/test # test-suite func./overloaded_function
    geometry/index/test         # test-suite geometry/index
    geometry/extensions/test    # test-suite geometry/extensions
    interprocess/example        # test-suite interprocess_example
    intrusive/example           # test-suite intrusive_example
    move/example                # test-suite move_example
    numeric/conversion/test     # test-suite numeric/conversion
    numeric/interval/test       # test-suite numeric/interval
    numeric/odeint/test         # test-suite numeric/odeint
    numeric/ublas/test          # test-suite numeirc/uBLAS
    spirit/classic/test         # test-suite classic spirit
    spirit/repository/test      # test-suite spirit_v2 repository
    utility/identity_type/test  # test-suite utility/identity_type
    wave/test/build             # test-suite wave
    ;

run-tests tools :
    bcp/test
    ;

if $(check-libs-only-targets)
{
    alias check-libs-only : $(check-libs-only-targets) ;
}