1#============================================================================== 2# Copyright (c) 2001-2011 Joel de Guzman 3# Copyright (c) 2001-2012 Hartmut Kaiser 4# Copyright (c) 2011 Bryce Lelbach 5# 6# Use, modification and distribution is subject to the Boost Software 7# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 8# http://www.boost.org/LICENSE_1_0.txt) 9#============================================================================== 10 11# bring in rules for testing 12import testing ; 13import modules ; 14import feature ; 15 16############################################################################### 17project spirit_v2x/test 18 : requirements 19 <include>. 20 <toolset>gcc:<cxxflags>-ftemplate-depth-512 21 <toolset>darwin:<cxxflags>-ftemplate-depth-512 22 <toolset>clang:<cxxflags>-ftemplate-depth=512 23 : 24 : 25 ; 26 27v3_tests = ; 28 29rule run ( sources + : args * : input-files * : requirements * : target-name ? : default-build * ) 30{ 31 target-name ?= $(sources[1]:D=:S=) ; 32 v3_tests += [ testing.run $(sources) : $(args) : $(input-files) : $(requirements) : $(target-name)-p3 : $(default-build) ] ; 33} 34 35rule compile ( sources + : requirements * : target-name ? ) 36{ 37 target-name ?= $(sources[1]:D=:S=) ; 38 v3_tests += [ testing.compile $(sources) : $(requirements) : $(target-name)-p3 ] ; 39} 40 41rule compile-fail ( sources + : requirements * : target-name ? ) 42{ 43 target-name ?= $(sources[1]:D=:S=) ; 44 v3_tests += [ testing.compile-fail $(sources) : $(requirements) : $(target-name)-p3 ] ; 45} 46 47############################################################################### 48path-constant LEX_DIR : $(BOOST_ROOT)/libs/spirit/test/lex ; 49 50{ 51 ########################################################################### 52 test-suite spirit_v2/qi : 53 54 [ run qi/actions.cpp : : : : qi_actions ] 55 [ run qi/actions2.cpp : : : : qi_actions2 ] 56 [ run qi/alternative.cpp : : : : qi_alternative ] 57 [ run qi/attr.cpp : : : : qi_attr ] 58 [ run qi/attribute1.cpp : : : : qi_attribute1 ] 59 [ run qi/attribute2.cpp : : : : qi_attribute2 ] 60 [ run qi/and_predicate.cpp : : : : qi_and_predicate ] 61 [ run qi/auto.cpp : : : : qi_auto ] 62 [ run qi/binary.cpp : : : : qi_binary ] 63 [ run qi/bool1.cpp : : : : qi_bool1 ] 64 [ run qi/bool2.cpp : : : : qi_bool2 ] 65 [ run qi/char1.cpp : : : : qi_char1 ] 66 [ run qi/char2.cpp : : : : qi_char2 ] 67 [ run qi/char_class.cpp : : : : qi_char_class ] 68 [ run qi/debug.cpp : : : : qi_debug ] 69 [ run qi/difference.cpp : : : : qi_difference ] 70 [ run qi/encoding.cpp : : : : qi_encoding ] 71 [ run qi/end.cpp : : : : qi_end ] 72 [ run qi/eps.cpp : : : : qi_eps ] 73 [ run qi/expect.cpp : : : : qi_expect ] 74 [ run qi/grammar.cpp : : : : qi_grammar ] 75 [ run qi/int1.cpp : : : : qi_int1 ] 76 [ run qi/int2.cpp : : : : qi_int2 ] 77 [ run qi/int3.cpp : : : : qi_int3 ] 78 [ run qi/kleene.cpp : : : : qi_kleene ] 79 [ run qi/lazy.cpp : : : : qi_lazy ] 80 [ run qi/lexeme.cpp : : : : qi_lexeme ] 81 [ run qi/lit1.cpp : : : : qi_lit1 ] 82 [ run qi/lit2.cpp : : : : qi_lit2 ] 83 [ run qi/list.cpp : : : : qi_list ] 84 [ run qi/hold.cpp : : : : qi_hold ] 85 [ run qi/match_manip1.cpp : : : : qi_match_manip1 ] 86 [ run qi/match_manip2.cpp : : : : qi_match_manip2 ] 87 [ run qi/match_manip3.cpp : : : : qi_match_manip3 ] 88 [ run qi/match_manip_attr.cpp : : : : qi_match_manip_attr ] 89 [ run qi/matches.cpp : : : : qi_matches ] 90 [ run qi/no_case.cpp : : : : qi_no_case ] 91 [ run qi/no_skip.cpp : : : : qi_no_skip ] 92 [ run qi/not_predicate.cpp : : : : qi_not_predicate ] 93 [ run qi/optional.cpp : : : : qi_optional ] 94 [ run qi/parse_attr.cpp : : : : qi_parse_attr ] 95 [ run qi/pass_container1.cpp : : : : qi_pass_container1 ] 96 [ run qi/pass_container2.cpp : : : : qi_pass_container2 ] 97 [ run qi/permutation.cpp : : : : qi_permutation ] 98 [ run qi/plus.cpp : : : : qi_plus ] 99 [ run qi/range_run.cpp : : : : qi_range_run ] 100 [ run qi/raw.cpp : : : : qi_raw ] 101 [ run qi/real1.cpp : : : : qi_real1 ] 102 [ run qi/real2.cpp : : : : qi_real2 ] 103 [ run qi/real3.cpp : : : : qi_real3 ] 104 [ run qi/real4.cpp : : : : qi_real4 ] 105 [ run qi/real5.cpp : : : : qi_real5 ] 106 [ run qi/repeat.cpp : : : : qi_repeat ] 107 [ run qi/rule1.cpp : : : : qi_rule1 ] 108 [ run qi/rule2.cpp : : : : qi_rule2 ] 109 [ run qi/rule3.cpp : : : : qi_rule3 ] 110 [ run qi/rule4.cpp : : : : qi_rule4 ] 111 [ run qi/sequence.cpp : : : : qi_sequence ] 112 [ run qi/sequential_or.cpp : : : : qi_sequential_or ] 113 [ run qi/skip.cpp : : : : qi_skip ] 114 [ run qi/stream.cpp : : : : qi_stream ] 115 [ run qi/symbols1.cpp : : : : qi_symbols1 ] 116 [ run qi/symbols2.cpp : : : : qi_symbols2 ] 117 [ run qi/terminal_ex.cpp : : : : qi_terminal_ex ] 118 [ 119 run qi/tst.cpp 120 /boost//system 121 : : : : qi_tst 122 ] 123 [ run qi/uint1.cpp : : : : qi_uint1 ] 124 [ run qi/uint2.cpp : : : : qi_uint2 ] 125 [ run qi/uint3.cpp : : : : qi_uint3 ] 126 [ run qi/uint_radix.cpp : : : : qi_uint_radix ] 127 [ run qi/utree1.cpp : : : : qi_utree1 ] 128 [ run qi/utree2.cpp : : : : qi_utree2 ] 129 [ run qi/utree3.cpp : : : : qi_utree3 ] 130 [ run qi/utree4.cpp : : : : qi_utree4 ] 131 132 ; 133 134 ########################################################################### 135 test-suite spirit_v2/qi_regressions : 136 137 [ compile qi/pass_container3.cpp : : qi_pass_container3 ] 138 [ compile qi/regression_attr_with_action.cpp : : qi_regression_attr_with_action ] 139 [ compile qi/regression_container_attribute.cpp : : qi_regression_container_attribute ] 140 [ compile qi/regression_debug_optional.cpp : : qi_regression_debug_optional ] 141 [ compile qi/regression_fusion_proto_spirit.cpp : : qi_regression_fusion_proto_spirit ] 142 [ compile qi/regression_one_element_fusion_sequence.cpp : : qi_regression_one_element_fusion_sequence ] 143 [ compile qi/regression_one_element_sequence_attribute.cpp : : qi_regression_one_element_sequence_attribute ] 144 145 [ run qi/regression_adapt_adt.cpp : : : : qi_regression_adapt_adt ] 146 [ run qi/regression_clear.cpp : : : : qi_regression_clear ] 147 #[ run qi/regression_float_fraction.cpp : : : : qi_regression_float_fraction ] 148 [ run qi/regression_lazy_repeat.cpp : : : : qi_regression_lazy_repeat ] 149 [ run qi/regression_numeric_alternatives.cpp : : : : qi_regression_numeric_alternatives ] 150 [ run qi/regression_reorder.cpp : : : : qi_regression_reorder ] 151 [ run qi/regression_repeat.cpp : : : : qi_regression_repeat ] 152 [ run qi/regression_transform_assignment.cpp : : : : qi_regression_transform_assignment ] 153 [ run qi/regression_binary_action.cpp : : : : qi_regression_binary_action ] 154 [ run qi/regression_stream_eof.cpp : : : : qi_regression_stream_eof ] 155 ; 156 157 ########################################################################### 158 test-suite spirit_v2/karma : 159 160 [ compile-fail karma/grammar_fail.cpp : : karma_grammar_fail ] 161 [ compile-fail karma/rule_fail.cpp : : karma_rule_fail ] 162 [ run karma/actions.cpp : : : : karma_actions ] 163 [ run karma/alternative1.cpp : : : : karma_alternative1 ] 164 [ run karma/alternative2.cpp : : : : karma_alternative2 ] 165 [ run karma/and_predicate.cpp : : : : karma_and_predicate ] 166 [ run karma/attribute.cpp : : : : karma_attribute ] 167 [ run karma/auto1.cpp : : : : karma_auto1 ] 168 [ run karma/auto2.cpp : : : : karma_auto2 ] 169 [ run karma/auto3.cpp : : : : karma_auto3 ] 170 [ run karma/binary1.cpp : : : : karma_binary1 ] 171 [ run karma/binary2.cpp : : : : karma_binary2 ] 172 [ run karma/binary3.cpp : : : : karma_binary3 ] 173 [ run karma/bool.cpp : : : : karma_bool ] 174 [ run karma/buffer.cpp : : : : karma_buffer ] 175 [ run karma/case_handling1.cpp : : : : karma_case_handling1 ] 176 [ run karma/case_handling2.cpp : : : : karma_case_handling2 ] 177 [ run karma/case_handling3.cpp : : : : karma_case_handling3 ] 178 [ run karma/center_alignment.cpp : : : : karma_center_alignment ] 179 [ run karma/char1.cpp : : : : karma_char1 ] 180 [ run karma/char2.cpp : : : : karma_char2 ] 181 [ run karma/char3.cpp : : : : karma_char3 ] 182 [ run karma/char_class.cpp : : : : karma_char_class ] 183 [ run karma/columns.cpp : : : : karma_columns ] 184 [ run karma/debug.cpp : : : : karma_debug ] 185 [ run karma/delimiter.cpp : : : : karma_delimiter ] 186 [ run karma/duplicate.cpp : : : : karma_duplicate ] 187 [ run karma/encoding.cpp : : : : karma_encoding ] 188 [ run karma/eol.cpp : : : : karma_eol ] 189 [ run karma/eps.cpp : : : : karma_eps ] 190 [ run karma/format_manip.cpp : : : : karma_format_manip ] 191 [ run karma/format_manip_attr.cpp : : : : karma_format_manip_attr ] 192 [ run karma/format_pointer_container.cpp : : : : karma_format_pointer_container ] 193 [ run karma/generate_attr.cpp : : : : karma_generate_attr ] 194 [ run karma/grammar.cpp : : : : karma_grammar ] 195 [ run karma/int1.cpp : : : : karma_int1 ] 196 [ run karma/int2.cpp : : : : karma_int2 ] 197 [ run karma/int3.cpp : : : : karma_int3 ] 198 [ run karma/kleene.cpp : : : : karma_kleene ] 199 [ run karma/lazy.cpp : : : : karma_lazy ] 200 [ run karma/left_alignment.cpp : : : : karma_left_alignment ] 201 [ run karma/list.cpp : : : : karma_list ] 202 [ run karma/lit.cpp : : : : karma_lit ] 203 [ run karma/maxwidth.cpp : : : : karma_maxwidth ] 204 [ run karma/not_predicate.cpp : : : : karma_not_predicate ] 205 [ run karma/omit.cpp : : : : karma_omit ] 206 [ run karma/optional.cpp : : : : karma_optional ] 207 [ run karma/pattern1.cpp : : : : karma_pattern1 ] 208 [ run karma/pattern2.cpp : : : : karma_pattern2 ] 209 [ run karma/pattern3.cpp : : : : karma_pattern3 ] 210 [ run karma/pattern4.cpp : : : : karma_pattern4 ] 211 [ run karma/plus.cpp : : : : karma_plus ] 212 [ run karma/real1.cpp : : : : karma_real1 ] 213 [ run karma/real2.cpp : : : : karma_real2 ] 214 [ run karma/real3.cpp : : : : karma_real3 ] 215 [ run karma/repeat1.cpp : : : : karma_repeat1 ] 216 [ run karma/repeat2.cpp : : : : karma_repeat2 ] 217 [ run karma/right_alignment.cpp : : : : karma_right_alignment ] 218 [ run karma/sequence1.cpp : : : : karma_sequence1 ] 219 [ run karma/sequence2.cpp : : : : karma_sequence2 ] 220 [ run karma/stream.cpp : : : : karma_stream ] 221 [ run karma/symbols1.cpp : : : : karma_symbols1 ] 222 [ run karma/symbols2.cpp : : : : karma_symbols2 ] 223 [ run karma/symbols3.cpp : : : : karma_symbols3 ] 224 [ run karma/tricky_alignment.cpp : : : : karma_tricky_alignment ] 225 [ run karma/uint_radix.cpp : : : : karma_uint_radix ] 226 [ run karma/utree1.cpp : : : : karma_utree1 ] 227 [ run karma/utree2.cpp : : : : karma_utree2 ] 228 [ run karma/utree3.cpp : : : : karma_utree3 ] 229 [ run karma/wstream.cpp : : : : karma_wstream ] 230 231 ; 232 233 ########################################################################### 234 test-suite spirit_v2/karma_regressions : 235 236 [ compile karma/regression_const_real_policies.cpp : : regression_const_real_policies ] 237 238 [ run karma/regression_adapt_adt.cpp : : : : karma_regression_adapt_adt ] 239 [ run karma/regression_optional_double.cpp : : : : karma_regression_optional_double ] 240 [ run karma/regression_semantic_action_attribute.cpp : : : : karma_regression_semantic_action_attribute ] 241 [ run karma/regression_real_scientific.cpp : : : : karma_regression_real_scientific ] 242 [ run karma/regression_center_alignment.cpp : : : : karma_regression_center_alignment ] 243 [ run karma/regression_container_variant_sequence.cpp : : : : karma_regression_container_variant_sequence ] 244 [ run karma/regression_real_0.cpp : : : : karma_regression_real_0 ] 245 [ run karma/regression_unicode_char.cpp : : : : karma_regression_unicode_char ] 246 [ run karma/regression_iterator.cpp : : : : karma_regression_iterator ] 247 248 ; 249 250 ########################################################################### 251 test-suite spirit_v2/lex : 252 253 [ run lex/auto_switch_lexerstate.cpp : : : : lex_auto_switch_lexerstate ] 254 [ run lex/dedent_handling_phoenix.cpp : : : : lex_dedent_handling_phoenix ] 255 [ run lex/id_type_enum.cpp : : : : lex_id_type_enum ] 256 [ run lex/lexertl1.cpp : : : : lex_lexertl1 ] 257 [ run lex/lexertl2.cpp : : : : lex_lexertl2 ] 258 [ run lex/lexertl3.cpp : : : : lex_lexertl3 ] 259 [ run lex/lexertl4.cpp : : : : lex_lexertl4 ] 260 [ run lex/lexertl5.cpp : : : : lex_lexertl5 ] 261 [ run lex/lexer_state_switcher.cpp : : : : lex_lexer_state_switcher ] 262 [ run lex/semantic_actions.cpp : : : : lex_semantic_actions ] 263 [ run lex/set_token_value.cpp : : : : lex_set_token_value ] 264 [ run lex/set_token_value_phoenix.cpp : : : : lex_set_token_value_phoenix ] 265 [ run lex/state_switcher.cpp : : : : lex_state_switcher ] 266 [ run lex/string_token_id.cpp : : : : lex_string_token_id ] 267 [ run lex/token_iterpair.cpp : : : : lex_token_iterpair ] 268 [ run lex/token_moretypes.cpp : : : : lex_token_moretypes ] 269 [ run lex/token_omit.cpp : : : : lex_token_omit ] 270 [ run lex/token_onetype.cpp : : : : lex_token_onetype ] 271 272 ; 273 274 ########################################################################### 275 test-suite spirit_v2/lex_regressions : 276 277 [ run lex/regression_basic_lexer.cpp : : : : lex_regression_basic_lexer ] 278 [ run lex/regression_matlib_dynamic.cpp : : : : lex_regression_matlib_dynamic ] 279 [ run lex/regression_matlib_generate.cpp : $(LEX_DIR)/matlib_static.h : : : lex_regression_matlib_generate ] 280# [ run lex/regression_matlib_static.cpp : : : 281# <phoenix_v3>on:<dependency>.//lex_regression_matlib_generate-p3 282# <phoenix_v3>off:<dependency>.//lex_regression_matlib_generate-p2 283# : lex_regression_matlib_static ] 284 [ run lex/regression_matlib_generate_switch.cpp : $(LEX_DIR)/matlib_static_switch.h : : : lex_regression_matlib_generate_switch ] 285# [ run lex/regression_matlib_switch.cpp : : : 286# <phoenix_v3>on:<dependency>.//lex_regression_matlib_generate_switch-p3 287# <phoenix_v3>off:<dependency>.//lex_regression_matlib_generate_switch-p2 288# : lex_regression_matlib_switch ] 289 [ run lex/regression_word_count.cpp : : : : lex_regression_word_count ] 290 [ run lex/regression_syntax_error.cpp : : : : lex_regression_syntax_error ] 291 [ run lex/regression_wide.cpp : : : : lex_regression_wide ] 292 [ run lex/regression_file_iterator1.cpp : : : : lex_regression_file_iterator1 ] 293 [ run lex/regression_file_iterator2.cpp : : : : lex_regression_file_iterator2 ] 294 [ run lex/regression_file_iterator3.cpp : : : : lex_regression_file_iterator3 ] 295 [ run lex/regression_file_iterator4.cpp : : : : lex_regression_file_iterator4 ] 296 [ run lex/regression_static_wide_6253.cpp : : : : regression_static_wide_6253 ] 297 [ run lex/regression_less_8563.cpp : : : : regression_less_8563 ] 298 299 ; 300 301 ########################################################################### 302 test-suite spirit_v2/support : 303 304 [ run support/utree.cpp : : : : support_utree ] 305 [ run support/utree_debug.cpp : : : : support_utree_debug ] 306 307 ; 308 309 ########################################################################### 310 test-suite spirit_v2/support_regressions : 311 312 [ compile support/regression_multi_pass_position_iterator.cpp : : support_regression_multi_pass_position_iterator ] 313 [ compile support/regression_multi_pass_functor.cpp : : support_regression_multi_pass_functor ] 314 [ compile support/regression_multi_pass_parse.cpp : : support_regression_multi_pass_parse ] 315 [ run support/regression_multi_pass_error_handler.cpp : : : : regression_multi_pass_error_handler ] 316 317 ; 318} 319 320# use this alias to build Spirit against Phoenix V3 321alias test_using_phoenix_v3 : $(v3_tests) ; 322 323explicit test_using_phoenix_v3 ; 324