load("@rules_cc//cc:cc_test.bzl", "cc_test") _TESTS = { "test_headers/test": [ "classic_actions", "classic_actor", "classic_alternative", "classic_as_parser", "classic_assert", "classic_assign_actor", "classic_assign_key_actor", # Fails to build "classic_ast_fwd", "classic_ast", "classic_attribute", "classic_basic_chset", "classic_chset", "classic_clear_actor", "classic_closure_context", "classic_closure_fwd", "classic_common_fwd", "classic_common", "classic_composite", "classic_config", "classic_confix_fwd", "classic_confix", "classic_core", # Fails to build "classic_debug_node", "classic_debug", "classic_decrement_actor", "classic_difference", "classic_directives", # Fails to build "classic_distinct_fwd", "classic_distinct", "classic_dynamic", "classic_epsilon", "classic_erase_actor", "classic_escape_char_fwd", "classic_escape_char", "classic_exceptions_fwd", "classic_exceptions", "classic_exclusive_or", "classic_file_iterator_fwd", "classic_file_iterator", "classic_fixed_size_queue", "classic_flush_multi_pass", "classic_for", "classic_functor_parser", # Fails to build "classic_fundamental", # Fails to build "classic_grammar_def_fwd", # Fails to build "classic_grammer_def", "classic_if", "classic_increment_actor", "classic_insert_at_actor", "classic_insert_key_actor", "classic_intersection", "classic_iterator", "classic_kleene_star", "classic_lazy", # Fails to build "classic_list", # Fails to build "classic_lists", "classic_loops", "classic_match", # Fails to build "classic_meta", # Fails to build "classic_minimal", "classic_multi_pass_fwd", "classic_multi_pass", "classic_nil", "classic_no_actions", "classic_numerics_fwd", "classic_numerics", "classic_operators", "classic_optional", "classic_parametric", # Fails to build "classic_parse_tree_fwd", "classic_parse_tree_utils", "classic_parse_tree", # Fails to build "classic_parse_context", # Fails to build "classic_parser_id", "classic_parser_names", "classic_parser_traits", "classic_parser", "classic_position_iterator_fwd", "classic_position_iterator", "classic_positive", "classic_primitives", "classic_push_back_actor", "classic_push_front_actor", "classic_range_run", "classic_ref_actor", "classic_ref_const_ref_actor", "classic_ref_const_ref_const_ref_a", "classic_ref_const_ref_value_actor", "classic_ref_value_actor", "classic_refactoring", "classic_regex", "classic_rule_alias", "classic_rule_parser", "classic_rule", "classic_safe_bool", "classic_scanner_fwd", "classic_scanner", # Fails to build "classic_scoped_lock", "classic_select", "classic_sequence", # Fails to build "classic_sequential_and", "classic_sequential_or", "classic_skipper_fwd", # Fails to build "classic_skipper", "classic_spirit", "classic_stored_rule_fwd", "classic_stored_rule", "classic_subrule_fwd", "classic_subrule", "classic_swap_actor", "classic_switch", "classic_symbols_fwd", "classic_symbols", # Fails to build "classic_traverse", # Fails to build "classic_tree_to_xml", "classic_typeof", "classic_utility", "classic_version", "classic_while", "classic", "phoenix1_actor", "phoenix1_binders", "phoenix1_casts", "phoenix1_closures", "phoenix1_composite", # Fails to build "phoneix1_functions", "phoenix1_new", "phoenix1_operators", "phoenix1_primitives", # Fails to build "phoenix1_special_ops", "phoenix1_statements", "phoenix1_tuple_helpers", "phoenix1_tuples", "phoenix1", ], } _LINUX_TESTS = { "test_headers/test": ["classic_static"], } _MAC_TESTS = { "test_headers/test": ["classic_static"], } [[cc_test( name = "{}_{}".format( test.replace("/", "_"), header, ), srcs = ["{}.cpp".format(test)], defines = ["BOOST_SPIRIT_HEADER_NAME=boost/spirit/include/{}.hpp".format(header)] + select({ "@platforms//os:macos": [], "@platforms//os:windows": ["WIN32_LEAN_AND_MEAN=1"], "//conditions:default": [], }), linkstatic = select({ "@platforms//os:macos": False, # Windows needs to link statically to get rid of undefined symbols "@platforms//os:windows": True, # Posix needs to link statically to get rid of undefined symbols "//conditions:default": True, }), deps = [ "@boost.spirit", "@boost.test", "@boost.test//:unit_test_main", ], ) for header in _TESTS[test]] for test in _TESTS] [[cc_test( name = "{}_{}_linux".format( test.replace("/", "_"), header, ), srcs = ["{}.cpp".format(test)], defines = ["BOOST_SPIRIT_HEADER_NAME=boost/spirit/include/{}.hpp".format(header)] + select({ "@platforms//os:macos": [], "@platforms//os:windows": ["WIN32_LEAN_AND_MEAN=1"], "//conditions:default": [], }), # Posix needs to link statically to get rid of undefined symbols linkstatic = True, target_compatible_with = select({ "@platforms//os:macos": ["@platforms//:incompatible"], "@platforms//os:windows": ["@platforms//:incompatible"], "//conditions:default": [], }), deps = [ "@boost.spirit", "@boost.test", "@boost.test//:unit_test_main", ], ) for header in _LINUX_TESTS[test]] for test in _LINUX_TESTS] [[cc_test( name = "{}_{}_mac".format( test.replace("/", "_"), header, ), srcs = ["{}.cpp".format(test)], defines = ["BOOST_SPIRIT_HEADER_NAME=boost/spirit/include/{}.hpp".format(header)] + select({ "@platforms//os:macos": [], "@platforms//os:windows": ["WIN32_LEAN_AND_MEAN=1"], "//conditions:default": [], }), linkstatic = False, target_compatible_with = select({ "@platforms//os:macos": [], "@platforms//os:windows": ["@platforms//:incompatible"], "//conditions:default": ["@platforms//:incompatible"], }), deps = [ "@boost.spirit", "@boost.test", "@boost.test//:unit_test_main", ], ) for header in _MAC_TESTS[test]] for test in _MAC_TESTS]