File: Jamfile.v2

package info (click to toggle)
boost1.88 1.88.0-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 576,932 kB
  • sloc: cpp: 4,149,234; xml: 136,789; ansic: 35,092; python: 33,910; asm: 5,698; sh: 4,604; ada: 1,681; makefile: 1,633; pascal: 1,139; perl: 1,124; sql: 640; yacc: 478; ruby: 271; java: 77; lisp: 24; csh: 6
file content (210 lines) | stat: -rw-r--r-- 6,417 bytes parent folder | download | duplicates (3)
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
# Copyright 2007 Andy Tompkins.
# Copyright 2017 - 2022 James E. King III
# Distributed under the Boost Software License, Version 1.0. (See
# accompanying file LICENSE_1_0.txt or copy at
# https://www.boost.org/LICENSE_1_0.txt)

local WERROR =

    <toolset>msvc:<warnings-as-errors>on
    <toolset>gcc:<warnings-as-errors>on
    <toolset>clang:<warnings-as-errors>on
;

project
    : requirements
      $(WERROR)
      <library>/boost/uuid//boost_uuid
      <library>/boost/core//boost_core

     : default-build
      <warnings>pedantic
;

import os ;
import path ;
import regex ;
import testing ;

# this rule enumerates through all the headers and ensures
# that inclusion of the header by itself is sufficient to
# compile successfully, proving the header does not depend
# on any other headers to be included first - adapted from
# logic in the winapi test bjam script

path-constant HERE : . ;

rule test_headers
{
    local all_rules = ;
    local file ;
    local headers_path = [ path.make $(HERE)/../include/boost/uuid ] ;

    for file in [ path.glob-tree $(headers_path) : *.hpp : uuid ]
    {
        local rel_file = [ path.relative-to $(headers_path) $(file) ] ;
        # Note: The test name starts with '~' in order to group these tests in the test report table, preferably at the end.
        #       All '/' are replaced with '-' because apparently test scripts have a problem with test names containing slashes.
        local test_name = [ regex.replace $(rel_file) "/" "-" ] ;
        local decl_test_name = ~hdr-decl-$(test_name) ;
        # ECHO $(rel_file) ;
        all_rules += [ compile compile/decl_header.cpp : <define>"BOOST_UUID_TEST_HEADER=$(rel_file)" <dependency>$(file) : $(decl_test_name) ] ;
    }

    # ECHO All rules: $(all_rules) ;
    return $(all_rules) ;
}

alias test_headers : [ test_headers ] ;

# test inclucing all .hpp files in 2 translations units
# to look for issues when using multiple translation units
# eg. missing inline on a global functionstate is not missing

run test_include1.cpp test_include2.cpp ;

# main tests

run test_uuid.cpp
  : : : <library>/boost/container_hash//boost_container_hash <define>BOOST_UUID_REPORT_IMPLEMENTATION ;
run test_uuid.cpp : : : <library>/boost/container_hash//boost_container_hash <define>BOOST_UUID_NO_SIMD <define>BOOST_UUID_REPORT_IMPLEMENTATION : test_uuid_no_simd ;
run test_uuid_2.cpp ;
run test_uuid_3.cpp ;

# test type properties

run test_alignment.cpp ;
run test_alignment_2.cpp ;
run test_attribute_packed.cpp
  : : : -$(WERROR) ;
run test_pragma_pack.cpp ;
run test_data.cpp ;

# test comparison

run test_comparison.cpp
  : : : <define>BOOST_UUID_REPORT_IMPLEMENTATION ;
run test_comparison.cpp : : : <define>BOOST_UUID_NO_SIMD <define>BOOST_UUID_REPORT_IMPLEMENTATION : test_comparison_no_simd ;

# test uuid_io.hpp

run test_io.cpp
  : : : <library>/boost/lexical_cast//boost_lexical_cast <library>/boost/predef//boost_predef -$(WERROR) ;
run test_io_2.cpp ;
run test_to_chars.cpp ;
run test_to_chars_2.cpp ;

# test uuid_clock

run test_uuid_clock.cpp ;

# test generators

run test_nil_generator.cpp ;
run test_string_generator.cpp ;
run test_random_generator.cpp
  : : : <library>/boost/random//boost_random <library>/boost/predef//boost_predef ;

run test_name_generator.cpp
  : : : <library>/boost/predef//boost_predef ;
run test_namespaces.cpp ;
run test_name_generator_md5.cpp ;
run test_name_generator_sha1.cpp ;

lib atomic ;

run test_time_generator.cpp
  : : : <toolset>gcc:<library>atomic <toolset>clang-linux:<library>atomic
        <toolset>gcc-4.8,<address-model>32:<build>no ;

run test_time_generator_v1.cpp
  : : : <toolset>gcc:<library>atomic <toolset>clang-linux:<library>atomic
        <toolset>gcc-4.8,<address-model>32:<build>no ;

run test_time_generator_v1_2.cpp
  : : : <toolset>gcc:<library>atomic <toolset>clang-linux:<library>atomic
        <toolset>gcc-4.8,<address-model>32:<build>no ;

run test_time_generator_v1_3.cpp
  : : : <threading>multi
        <toolset>gcc:<library>atomic <toolset>clang-linux:<library>atomic
        <toolset>gcc-4.8,<address-model>32:<build>no ;

run test_time_generator_v6.cpp
  : : : <toolset>gcc:<library>atomic <toolset>clang-linux:<library>atomic
        <toolset>gcc-4.8,<address-model>32:<build>no ;

run test_time_generator_v6_2.cpp
  : : : <toolset>gcc:<library>atomic <toolset>clang-linux:<library>atomic
        <toolset>gcc-4.8,<address-model>32:<build>no ;

run test_time_generator_v6_3.cpp
  : : : <threading>multi
        <toolset>gcc:<library>atomic <toolset>clang-linux:<library>atomic
        <toolset>gcc-4.8,<address-model>32:<build>no ;

run test_time_generator_v7.cpp ;
run test_time_generator_v7_2.cpp ;
run test_time_generator_v7_3.cpp ;

# test serializing uuids

run test_serialization.cpp
  : : : <library>/boost/serialization//boost_serialization <undefined-sanitizer>norecover:<link>static -$(WERROR) ;

# run test_wserialization.cpp /boost/serialization//boost_serialization /boost/serialization//boost_wserialization ;

# test tagging an object

run test_tagging.cpp ;

# test use cases

run test_uuid_class.cpp ;
run test_uuid_in_map.cpp ;

# test hashing support

run test_hash.cpp
   : : : <library>/boost/container_hash//boost_container_hash ;
run test_hash_value.cpp ;

run test_std_unordered.cpp ;
run test_boost_unordered.cpp
  : : : <toolset>gcc-4.7:<build>no <library>/boost/unordered//boost_unordered ;

# test detail components

run test_detail_md5.cpp ;
run test_detail_sha1.cpp ;
run test_detail_endian.cpp ;
run test_detail_chacha20.cpp ;

# compile-fail tests

compile-fail compile-fail/random_provider_no_copy_ctor.cpp : -$(WERROR) ;
compile-fail compile-fail/random_provider_no_copy_assign.cpp : -$(WERROR) ;

# test MSVC 12 (VS2013) optimizer bug with SIMD operations.
# See https://svn.boost.org/trac/boost/ticket/8509#comment:3
# Only happens in Release x64 builds.

run test_msvc_simd_bug981648_main.cpp test_msvc_simd_bug981648_foo.cpp : : : <variant>release <debug-symbols>on : test_msvc_simd_bug981648 ;

# a small benchmark test for random generation

run test_bench_random.cpp /boost/timer//boost_timer : : : <toolset>clang-cloudabi:<build>no ;

# tests for the header-only random provider

run test_entropy_error.cpp ;
run test_detail_random_provider.cpp
  : : : <library>/boost/array//boost_array ;

# constexpr tests

compile test_uuid_cx.cpp ;

# 'quick' test for CI

run quick.cpp ;