diff --git a/cpp/src/arrow/meson.build b/cpp/src/arrow/meson.build index 3ebdbebabd141..fde50bcbcd294 100644 --- a/cpp/src/arrow/meson.build +++ b/cpp/src/arrow/meson.build @@ -21,7 +21,7 @@ dl_dep = dependency('dl') # Meson does not natively support object libraries # https://github.com/mesonbuild/meson/issues/13843 -objlib_sources = { +arrow_components = { 'arrow_array': { 'sources': [ 'array/array_base.cc', @@ -195,58 +195,58 @@ objlib_sources = { 'include_dirs': [include_dir], 'dependencies': [], }, + 'arrow_base': { + 'sources': [ + 'builder.cc', + 'buffer.cc', + 'chunked_array.cc', + 'chunk_resolver.cc', + 'compare.cc', + 'config.cc', + 'datum.cc', + 'device.cc', + 'device_allocation_type_set.cc', + 'extension_type.cc', + 'extension/bool8.cc', + 'extension/json.cc', + 'extension/uuid.cc', + 'pretty_print.cc', + 'record_batch.cc', + 'result.cc', + 'scalar.cc', + 'sparse_tensor.cc', + 'status.cc', + 'table.cc', + 'table_builder.cc', + 'tensor.cc', + 'tensor/coo_converter.cc', + 'tensor/csf_converter.cc', + 'tensor/csx_converter.cc', + 'type.cc', + 'type_traits.cc', + 'visitor.cc', + 'c/bridge.cc', + 'c/dlpack.cc', + ], + 'include_dirs': [include_dir], + 'dependencies': [], + }, } -objlibs = [] -foreach key, val : objlib_sources - slib = static_library( - key, - sources: val['sources'], - include_directories: val['include_dirs'], - dependencies: val['dependencies'], - build_by_default: false, - ) - objlibs += slib.extract_all_objects(recursive: true) +arrow_srcs = [] +arrow_includes = [] +arrow_deps = [] +foreach key, val : arrow_components + arrow_srcs += val['sources'] + arrow_includes += val['include_dirs'] + arrow_deps += val['dependencies'] endforeach -arrow_srcs = [ - 'builder.cc', - 'buffer.cc', - 'chunked_array.cc', - 'chunk_resolver.cc', - 'compare.cc', - 'config.cc', - 'datum.cc', - 'device.cc', - 'device_allocation_type_set.cc', - 'extension_type.cc', - 'extension/bool8.cc', - 'extension/json.cc', - 'extension/uuid.cc', - 'pretty_print.cc', - 'record_batch.cc', - 'result.cc', - 'scalar.cc', - 'sparse_tensor.cc', - 'status.cc', - 'table.cc', - 'table_builder.cc', - 'tensor.cc', - 'tensor/coo_converter.cc', - 'tensor/csf_converter.cc', - 'tensor/csx_converter.cc', - 'type.cc', - 'type_traits.cc', - 'visitor.cc', - 'c/bridge.cc', - 'c/dlpack.cc', -] - arrow_lib = library( 'arrow', - sources: [arrow_srcs], - objects: objlibs, - include_directories: [include_dir], + sources: arrow_srcs, + include_directories: arrow_includes, + dependencies: arrow_deps, install: true, # GH-45512: compute/expression.cc generates undefined symbols without IPC sources override_options: {'b_lundef': 'false'},