1# copyright John Maddock 2003
2# Distributed under the Boost Software License, Version 1.0.
3# (See accompanying file LICENSE_1_0.txt or copy at
4# http://www.boost.org/LICENSE_1_0.txt.
5
6project
7    : requirements
8      <threading>multi
9      <link>shared:<define>BOOST_REGEX_DYN_LINK=1
10      <toolset>msvc-7.1:<define>TEST_MFC=1
11      <toolset>msvc-7.0:<define>TEST_MFC=1
12      <toolset>msvc:<asynch-exceptions>on
13      # There are unidentified linker problems on these platforms:
14      <toolset>mipspro-7.4:<link>static
15      <toolset>sun-5.9:<link>static
16      <warnings>all
17      <toolset>gcc:<cxxflags>-Wextra
18      <toolset>gcc:<cxxflags>-Wshadow
19      <define>U_USING_ICU_NAMESPACE=0
20      #<toolset>gcc-mw:<link>static
21      #<toolset>gcc-mingw:<link>static
22      #<toolset>gcc-cygwin:<link>static
23      <toolset>sun:<link>static
24    ;
25
26#
27# rule for simple regex test programs:
28#
29rule regex-test ( name : sources + : requirements * : input-files * )
30{
31    return [ run $(sources) ../build//boost_regex
32               :
33               : $(input-files)
34               : $(requirements)
35               : $(name) ] ;
36}
37
38R_SOURCE =
39basic_tests.cpp
40main.cpp
41wmain.cpp
42test_alt.cpp
43test_anchors.cpp
44test_asserts.cpp
45test_backrefs.cpp
46test_deprecated.cpp
47test_emacs.cpp
48test_escapes.cpp
49test_grep.cpp
50test_locale.cpp
51test_mfc.cpp
52test_non_greedy_repeats.cpp
53test_perl_ex.cpp
54test_replace.cpp
55test_sets.cpp
56test_simple_repeats.cpp
57test_tricky_cases.cpp
58test_icu.cpp
59test_unicode.cpp
60test_overloads.cpp
61test_operators.cpp
62;
63
64lib boost_regex_recursive :
65   ../src/posix_api.cpp
66   ../src/regex.cpp
67   ../src/regex_debug.cpp
68   ../src/static_mutex.cpp
69   ../src/wide_posix_api.cpp
70   ../build//icu_options
71    :
72        <define>BOOST_REGEX_RECURSIVE=1
73        <define>BOOST_REGEX_CXX03=1
74	     <link>shared:<define>BOOST_REGEX_DYN_LINK=1
75    :
76    ;
77
78
79local regress-sources = regress/$(R_SOURCE) ;
80
81test-suite regex
82      :
83      [ run regress/$(R_SOURCE) ../build//boost_regex ../build//icu_options
84        : # command line
85        : # input files
86        : # requirements
87        : regex_regress ]
88
89      [ run regress/$(R_SOURCE) ../build//boost_regex
90                                ../../thread/build//boost_thread ../build//icu_options
91        : # command line
92        : # input files
93        : # requirements
94        <define>TEST_THREADS
95        : regex_regress_threaded ]
96
97      [ regex-test posix_api_check : c_compiler_checks/posix_api_check.c ]
98
99      [ compile c_compiler_checks/wide_posix_api_check.c
100        : : wide_posix_api_check_c ]
101
102      [ regex-test posix_api_check_cpp : c_compiler_checks/posix_api_check.cpp ]
103
104      [ regex-test wide_posix_api_check_cpp
105          : c_compiler_checks/wide_posix_api_check.cpp ]
106
107      [ run pathology/bad_expression_test.cpp : : :
108            [ check-target-builds ../build//is_legacy_03 : : <source>../build//boost_regex ]
109      ]
110
111      [ run pathology/recursion_test.cpp : : :
112            [ check-target-builds ../build//is_legacy_03 : : <source>../build//boost_regex ]
113      ]
114
115      [ run named_subexpressions/named_subexpressions_test.cpp : : :
116            [ check-target-builds ../build//is_legacy_03 : : <source>../build//boost_regex ]
117      ]
118
119      [ run unicode/unicode_iterator_test.cpp : : :
120            [ check-target-builds ../build//is_legacy_03 : : <source>../build//boost_regex ]
121            release <define>TEST_UTF8 : unicode_iterator_test_utf8 ]
122      [ run unicode/unicode_iterator_test.cpp : : :
123            [ check-target-builds ../build//is_legacy_03 : : <source>../build//boost_regex ]
124            release <define>TEST_UTF16 : unicode_iterator_test_utf16 ]
125      [ run static_mutex/static_mutex_test.cpp
126            ../../thread/build//boost_thread ../build//boost_regex
127      ]
128      [ run object_cache/object_cache_test.cpp : : :
129            [ check-target-builds ../build//is_legacy_03 : : <source>../build//boost_regex ]
130      ]
131
132      [ run config_info/regex_config_info.cpp
133         ../build//boost_regex/<link>static
134         : # command line
135         : # input files
136         : <test-info>always_show_run_output
137      ]
138      [ run config_info/regex_config_info.cpp ../build//boost_regex
139        : # command line
140        : # input files
141        : <test-info>always_show_run_output
142        : regex_dll_config_info
143      ]
144
145      [ run collate_info/collate_info.cpp ../build//boost_regex
146      : : : <test-info>always_show_run_output : test_collate_info ]
147
148
149      [ link concepts/concept_check.cpp :
150            [ check-target-builds ../build//is_legacy_03 : : <source>../build//boost_regex ]
151      ]
152      [ link concepts/concept_check.cpp :
153            <define>BOOST_REGEX_STANDALONE [ check-target-builds ../build//is_legacy_03 : : <build>no ] : standalone_concept_check
154      ]
155      [ link concepts/icu_concept_check.cpp :
156            <define>BOOST_REGEX_STANDALONE [ check-target-builds ../build//is_legacy_03 : : <source>../build//boost_regex ]
157      ]
158      [ link concepts/icu_concept_check.cpp :
159            [ check-target-builds ../build//is_legacy_03 : : <build>no ] : standalone_icu_concept_check
160      ]
161      [ link concepts/range_concept_check.cpp :
162            [ check-target-builds ../build//is_legacy_03 : : <source>../build//boost_regex ]
163      ]
164      [ run concepts/test_bug_11988.cpp : : :
165            [ check-target-builds ../build//is_legacy_03 : : <source>../build//boost_regex ]
166      ]
167
168     [ run
169    # sources
170    captures/captures_test.cpp
171    ../build//icu_options
172 :  # additional args
173 :  # test-files
174 :  # requirements
175    <threading>multi
176    <define>BOOST_REGEX_MATCH_EXTRA=1
177    <define>BOOST_REGEX_NO_LIB=1
178    [ check-target-builds ../build//is_legacy_03 : : <source>../build//boost_regex ]
179 :  # test name
180    captures_test
181 ]
182
183 [ run regress/$(R_SOURCE) .//boost_regex_recursive
184                          ../build//icu_options
185  : # command line
186  : # input files
187  : # requirements
188    <define>BOOST_REGEX_RECURSIVE=1
189    <define>BOOST_REGEX_CXX03=1
190  : regex_regress_recursive ]
191
192[ run regress/$(R_SOURCE) ./noeh_test//boost_regex_noeh
193                          ../build//icu_options
194  : # command line
195  : # input files
196  : # requirements
197    <define>BOOST_NO_EXCEPTIONS=1
198    <exception-handling>off
199    <link>static
200    <runtime-link>shared
201  : regex_regress_noeh ]
202
203;
204
205compile test_consolidated.cpp ;
206
207build-project ../example ;
208
209# `quick` target (for CI)
210run quick.cpp ../build//boost_regex ;
211
212compile test_warnings.cpp
213   :     <toolset>msvc:<warnings>all <toolset>msvc:<warnings-as-errors>on
214         <toolset>gcc:<warnings>all <toolset>gcc:<warnings-as-errors>on
215         <toolset>clang:<warnings>all <toolset>clang:<warnings-as-errors>on ;
216
217compile test_warnings.cpp
218   :     <toolset>msvc:<warnings>all <toolset>msvc:<warnings-as-errors>on
219         <toolset>gcc:<warnings>all <toolset>gcc:<warnings-as-errors>on
220         <toolset>clang:<warnings>all <toolset>clang:<warnings-as-errors>on
221         <define>BOOST_REGEX_STANDALONE
222         [ check-target-builds ../build//is_legacy_03 : : <build>no ]
223   :  test_warnings_standalone ;
224