-
Notifications
You must be signed in to change notification settings - Fork 3.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GH-45800: [C++] Implement util configuration in Meson #45824
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -35,6 +35,7 @@ install_headers( | |
'util.h', | ||
'visibility.h', | ||
], | ||
subdir: 'arrow/testing', | ||
) | ||
|
||
if needs_tests | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -92,3 +92,242 @@ configure_file( | |
configuration: internal_conf_data, | ||
format: 'cmake@', | ||
) | ||
|
||
install_headers( | ||
[ | ||
'algorithm.h', | ||
'aligned_storage.h', | ||
'align_util.h', | ||
'async_generator_fwd.h', | ||
'async_generator.h', | ||
'async_util.h', | ||
'base64.h', | ||
'basic_decimal.h', | ||
'benchmark_util.h', | ||
'binary_view_util.h', | ||
'bit_block_counter.h', | ||
'bitmap_builders.h', | ||
'bitmap_generate.h', | ||
'bitmap.h', | ||
'bitmap_ops.h', | ||
'bitmap_reader.h', | ||
'bitmap_visit.h', | ||
'bitmap_writer.h', | ||
'bit_run_reader.h', | ||
'bitset_stack.h', | ||
'bit_util.h', | ||
'bpacking64_default.h', | ||
'bpacking_avx2.h', | ||
'bpacking_avx512.h', | ||
'bpacking_default.h', | ||
'bpacking.h', | ||
'bpacking_neon.h', | ||
'byte_size.h', | ||
'cancel.h', | ||
'checked_cast.h', | ||
'compare.h', | ||
'compression.h', | ||
'concurrent_map.h', | ||
'converter.h', | ||
'counting_semaphore.h', | ||
'cpu_info.h', | ||
'crc32.h', | ||
'debug.h', | ||
'decimal.h', | ||
'delimiting.h', | ||
'dict_util.h', | ||
'dispatch.h', | ||
'double_conversion.h', | ||
'endian.h', | ||
'float16.h', | ||
'formatting.h', | ||
'functional.h', | ||
'future.h', | ||
'hashing.h', | ||
'hash_util.h', | ||
'int_util.h', | ||
'int_util_overflow.h', | ||
'io_util.h', | ||
'iterator.h', | ||
'key_value_metadata.h', | ||
'launder.h', | ||
'list_util.h', | ||
'logger.h', | ||
'logging.h', | ||
'macros.h', | ||
'map.h', | ||
'math_constants.h', | ||
'memory.h', | ||
'mutex.h', | ||
'parallel.h', | ||
'pcg_random.h', | ||
'prefetch.h', | ||
'print.h', | ||
'queue.h', | ||
'range.h', | ||
'ree_util.h', | ||
'regex.h', | ||
'rows_to_batches.h', | ||
'simd.h', | ||
'small_vector.h', | ||
'sort.h', | ||
'spaced.h', | ||
'span.h', | ||
'stopwatch.h', | ||
'string_builder.h', | ||
'string.h', | ||
'task_group.h', | ||
'tdigest.h', | ||
'test_common.h', | ||
'thread_pool.h', | ||
'time.h', | ||
'tracing.h', | ||
'trie.h', | ||
'type_fwd.h', | ||
'type_traits.h', | ||
'ubsan.h', | ||
'union_util.h', | ||
'unreachable.h', | ||
'uri.h', | ||
'utf8.h', | ||
'value_parsing.h', | ||
'vector.h', | ||
'visibility.h', | ||
'windows_compatibility.h', | ||
'windows_fixup.h', | ||
], | ||
subdir: 'arrow/util', | ||
) | ||
|
||
utility_test_srcs = [ | ||
'align_util_test.cc', | ||
'atfork_test.cc', | ||
'byte_size_test.cc', | ||
'byte_stream_split_test.cc', | ||
'cache_test.cc', | ||
'checked_cast_test.cc', | ||
'compression_test.cc', | ||
'decimal_test.cc', | ||
'float16_test.cc', | ||
'fixed_width_test.cc', | ||
'formatting_util_test.cc', | ||
'key_value_metadata_test.cc', | ||
'hashing_test.cc', | ||
'int_util_test.cc', | ||
'io_util_test.cc', | ||
'iterator_test.cc', | ||
'list_util_test.cc', | ||
'logger_test.cc', | ||
'logging_test.cc', | ||
'math_test.cc', | ||
'queue_test.cc', | ||
'range_test.cc', | ||
'ree_util_test.cc', | ||
'reflection_test.cc', | ||
'rows_to_batches_test.cc', | ||
'small_vector_test.cc', | ||
'span_test.cc', | ||
'stl_util_test.cc', | ||
'string_test.cc', | ||
'tdigest_test.cc', | ||
'test_common.cc', | ||
'time_test.cc', | ||
'tracing_test.cc', | ||
'trie_test.cc', | ||
'uri_test.cc', | ||
'utf8_util_test.cc', | ||
'value_parsing_test.cc', | ||
] | ||
|
||
if host_machine.system() == 'windows' | ||
# This manifest enables long file paths on Windows 10+ | ||
# See https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#enable-long-paths-in-windows-10-version-1607-and-later | ||
if cpp_compiler.get_id() == 'msvc' | ||
utility_test_sources += ['io_util_test.manifest'] | ||
else | ||
utility_test_sources += ['io_util_test.rc'] | ||
endif | ||
endif | ||
|
||
exc = executable( | ||
'arrow-utility-test', | ||
sources: utility_test_srcs, | ||
dependencies: [arrow_dep, filesystem_dep, gtest_dep, gmock_dep], | ||
link_with: [arrow_test_lib], | ||
implicit_include_directories: false, | ||
) | ||
test('arrow-utility-test', exc) | ||
|
||
util_tests = { | ||
'arrow-async-utility-test': { | ||
'sources': [ | ||
'async_generator_test.cc', | ||
'async_util_test.cc', | ||
'test_common.cc', | ||
], | ||
}, | ||
'arrow-bit-utility-test': { | ||
'sources': [ | ||
'bit_block_counter_test.cc', | ||
'bit_util_test.cc', | ||
'rle_encoding_test.cc', | ||
], | ||
}, | ||
'arrow-threading-utility-test': { | ||
'sources': [ | ||
'cancel_test.cc', | ||
'counting_semaphore_test.cc', | ||
'future_test.cc', | ||
'task_group_test.cc', | ||
'test_common.cc', | ||
'thread_pool_test.cc', | ||
], | ||
}, | ||
'arrow-crc32-test': { | ||
'sources': ['crc32_test.cc'], | ||
'dependencies': [filesystem_dep], | ||
}, | ||
} | ||
|
||
if needs_tests | ||
foreach key, val : util_tests | ||
exc = executable( | ||
key, | ||
sources: val['sources'], | ||
dependencies: [arrow_test_dep, val.get('dependencies', [])], | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do we need There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ah, Then can we remove There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ah nice catch - yea we can do that for now |
||
implicit_include_directories: false, | ||
) | ||
test(key, exc) | ||
endforeach | ||
endif | ||
|
||
util_benchmarks = [ | ||
'bit_block_counter', | ||
'bit_util', | ||
'bitmap_reader', | ||
'cache', | ||
'compression', | ||
'decimal', | ||
'hashing', | ||
'int_util', | ||
'machine', | ||
'queue', | ||
'range', | ||
'small_vector', | ||
'tdigest', | ||
'thread_pool', | ||
'trie', | ||
] | ||
|
||
foreach util_benchmark : util_benchmarks | ||
benchmark_name = '@0@-benchmark'.format(util_benchmark.replace('_', '-')) | ||
exc = executable( | ||
benchmark_name, | ||
sources: '@0@_benchmark.cc'.format(util_benchmark), | ||
dependencies: [arrow_test_dep, benchmark_dep], | ||
implicit_include_directories: false, | ||
) | ||
benchmark(benchmark_name, exc) | ||
endforeach | ||
|
||
# TODO: XSimd benchmark. See GH-45823 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we need this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We do. I think there are ways to improve the terminology, but technically the
arrow_test_dep
becomes a disabler only ifneeds_testing
is false. It is possible forneeds_tests
to be false whileneeds_testing
is true. Without this extra condition these tests would build when-Dtests=false
and-Dtesting=true
I do wonder if it wouldn't be better to have an
arrow_test_dep
and separately anarrow_testing_dep
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we need this here, we need it for
test('arrow-utility-test', exc)
too?It seems that we don't need both
arrow_test_dep
andarrow_testing_dep
. Can we use this instead?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice catch on the arrow-utility-test - I can do that.
With respect to the
if needs_tests
, it depends how much we want to adhere to what CMake has in place. In fact, we used to use that same condition, but I had to change it fromif needs_tests
toif needs_testing
in the benchmarks PR.https://github.com/apache/arrow/pull/45793/files
Unless I am misreading the CMake configuration (which is certainly possible) it seems like it is possible to disable tests but turn the benchmarks on. In such a case, you would still need the current
arrow_test_dep
dependency to build benchmarks; the change you are proposing would add a dependency between the test suite and benchmark suiteThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we use separated dependency for benchmarks something like the following?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes we can. Nice idea!