osrm-backend/third_party/unordered_dense/test/meson.build

193 lines
5.4 KiB
Meson
Raw Normal View History

test_sources = [
'app/counter.cpp',
'app/doctest.cpp',
'app/nanobench.cpp',
'app/stacktrace.cpp',
'app/ui/periodic.cpp',
'app/ui/progress_bar.cpp',
'app/unordered_dense.cpp',
'bench/swap.cpp',
'bench/show_allocations.cpp',
'bench/quick_overall_map.cpp',
'bench/game_of_life.cpp',
'bench/find_random.cpp',
'bench/copy.cpp',
'fuzz/run.cpp',
'unit/assign_to_move.cpp',
'unit/assignment_combinations.cpp',
'unit/at.cpp',
'unit/bucket.cpp',
'unit/contains.cpp',
'unit/copy_and_assign_maps.cpp',
'unit/copyassignment.cpp',
'unit/count.cpp',
'unit/ctors.cpp',
'unit/custom_container_boost.cpp',
'unit/custom_container.cpp',
'unit/custom_hash.cpp',
'unit/deduction_guides.cpp',
'unit/diamond.cpp',
'unit/empty.cpp',
'unit/equal_range.cpp',
'unit/erase_if.cpp',
'unit/erase_range.cpp',
'unit/erase.cpp',
'unit/explicit.cpp',
'unit/extract.cpp',
'unit/fuzz_api.cpp',
'unit/fuzz_insert_erase.cpp',
'unit/fuzz_replace_map.cpp',
'unit/fuzz_string.cpp',
'unit/hash_char_types.cpp',
'unit/hash_smart_ptr.cpp',
'unit/hash_string_view.cpp',
'unit/hash.cpp',
'unit/include_only.cpp',
'unit/initializer_list.cpp',
'unit/insert_or_assign.cpp',
'unit/insert.cpp',
'unit/iterators_empty.cpp',
'unit/iterators_erase.cpp',
'unit/iterators_insert.cpp',
'unit/load_factor.cpp',
'unit/maps_of_maps.cpp',
'unit/max.cpp',
'unit/move_to_moved.cpp',
'unit/multiple_apis.cpp',
'unit/namespace.cpp',
'unit/not_copyable.cpp',
'unit/not_moveable.cpp',
'unit/pmr_move_with_allocators.cpp',
'unit/pmr.cpp',
'unit/rehash.cpp',
'unit/replace.cpp',
'unit/reserve_and_assign.cpp',
'unit/reserve.cpp',
'unit/segmented_vector.cpp',
'unit/set_or_map_types.cpp',
'unit/set.cpp',
'unit/std_hash.cpp',
'unit/swap.cpp',
'unit/transparent.cpp',
'unit/try_emplace.cpp',
'unit/tuple_hash.cpp',
'unit/unique_ptr.cpp',
'unit/unordered_set.cpp',
'unit/vectorofmaps.cpp',
'unit/windows_include.cpp',
]
# additional compile options
# see https://mesonbuild.com/Reference-tables.html
cpp_args = []
compiler = meson.get_compiler('cpp')
foreach arg : [
# gcc
'-Wno-stringop-overflow', # g++ error in fmtlib
'-Warith-conversion',
'-Wshadow=global',
'-Wno-array-bounds', # gcc 13 gives incorrect warning
# gcc / clang
'-Wconversion',
'-Wextra',
'-Wunreachable-code',
'-Wuninitialized',
'-pedantic-errors',
'-Wold-style-cast',
'-Wno-unused-function',
# '-Weffc++', doesn't work with fmt
# '-march=native',
]
if compiler.has_argument(arg)
cpp_args += [arg]
endif
endforeach
if compiler.get_id() == 'msvc'
add_global_arguments(
'/wd4189', # fmt: 'zero': local variable is initialized but not referenced, fixed in https://github.com/fmtlib/fmt/issues/2891
'/wd4251', # 'fmt::v8::ostream::file_': class 'fmt::v8::file' needs to have dll-interface to be used by clients of class 'fmt::v8::ostream'
language: 'cpp')
endif
# for include-what-you-use
#cpp_args += '-isystem'
#cpp_args += '/usr/lib64/clang/14.0.0/include/'
fmt_method = 'auto'
if get_option('cpp_args').contains('-m32')
# use builtin so we can compile it for 32bit.
# Can't use it as a default or sanitizer doesn't work...
fmt_method = 'builtin'
endif
# use e.g.
# CXX='ccache clang++' BOOST_ROOT=/home/martinus/dev/boost_1_81_0/ meson setup --buildtype release -Dcpp_std=c++17 build
opt_boost = dependency('boost', required: false)
link_args = []
if opt_boost.found()
add_global_arguments('-DANKERL_UNORDERED_DENSE_HAS_BOOST=1', language: 'cpp')
link_args += ['-lrt']
else
add_global_arguments('-DANKERL_UNORDERED_DENSE_HAS_BOOST=0', language: 'cpp')
endif
#opt_absl = dependency('absl_container', required: true, )
#if opt_boost.found()
# add_global_arguments('-DANKERL_UNORDERED_DENSE_HAS_ABSL=1', language: 'cpp')
#else
# add_global_arguments('-DANKERL_UNORDERED_DENSE_HAS_ABSL=0', language: 'cpp')
#endif
cpp_args += [
#'-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION',
#'-fsanitize-undefined-trap-on-error',
#'-fsanitize=undefined,address',
#'-fno-sanitize=thread',
#'-ftrivial-auto-var-init=pattern',
#'-g',
]
link_args += [
#'-fsanitize=undefined,address',
#'-fno-sanitize=thread'
#'-Wl,-shuffle-sections' # for benchmarking with mold linker
]
test_exe = executable(
'udm-test',
test_sources,
include_directories: incdir,
cpp_args: cpp_args,
link_args: link_args,
dependencies: [
dependency('threads'), # add dependency for threads (-lpthread, see https://mesonbuild.com/howtox.html),
# see what's in the [provide] sections for the dependency names
dependency('doctest'),
dependency('fmt', method: fmt_method),
# disable these two if you don't want them
#dependency('boost'),
#dependency('absl_container', default_options: ['warning_level=0', 'werror=false'])
# dependency('absl_hash', method: 'builtin', default_options: ['warning_level=0', 'werror=false'])
],
)
benchmark(
'bench',
test_exe,
args: ['-ns', '-ts=bench'],
verbose: true)
test(
'unit',
test_exe,
verbose: true)