This is an automated email from the ASF dual-hosted git repository.
kou pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/main by this push:
new 3b645c39b1 GH-45831: [C++] Add CSV directory to Meson configuration
(#45832)
3b645c39b1 is described below
commit 3b645c39b18d84c232ca423d3c2a2619189d810a
Author: William Ayd <[email protected]>
AuthorDate: Mon Mar 17 21:05:28 2025 -0400
GH-45831: [C++] Add CSV directory to Meson configuration (#45832)
### Rationale for this change
This continues improving the Arrow C++ Meson build system
### What changes are included in this PR?
This adds the csv directory to the Meson configuration
### Are these changes tested?
Yes
### Are there any user-facing changes?
No
* GitHub Issue: #45831
Authored-by: Will Ayd <[email protected]>
Signed-off-by: Sutou Kouhei <[email protected]>
---
cpp/meson.build | 1 +
cpp/meson.options | 7 +++++
cpp/src/arrow/csv/meson.build | 71 +++++++++++++++++++++++++++++++++++++++++++
cpp/src/arrow/meson.build | 23 ++++++++++++++
4 files changed, 102 insertions(+)
diff --git a/cpp/meson.build b/cpp/meson.build
index a82ce39857..0fd75cc35f 100644
--- a/cpp/meson.build
+++ b/cpp/meson.build
@@ -57,6 +57,7 @@ if git_description == ''
endif
needs_benchmarks = get_option('benchmarks')
+needs_csv = get_option('csv')
needs_filesystem = false
needs_integration = false
needs_tests = get_option('tests')
diff --git a/cpp/meson.options b/cpp/meson.options
index 87b20bbbe2..01bce102a7 100644
--- a/cpp/meson.options
+++ b/cpp/meson.options
@@ -22,6 +22,13 @@ option(
value: false,
)
+option(
+ 'csv',
+ type: 'boolean',
+ description: 'Build the Arrow CSV Parser Module',
+ value: false,
+)
+
option(
'ipc',
type: 'boolean',
diff --git a/cpp/src/arrow/csv/meson.build b/cpp/src/arrow/csv/meson.build
new file mode 100644
index 0000000000..f2f4b3e4f0
--- /dev/null
+++ b/cpp/src/arrow/csv/meson.build
@@ -0,0 +1,71 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+csv_test_sources = [
+ 'chunker_test.cc',
+ 'column_builder_test.cc',
+ 'column_decoder_test.cc',
+ 'converter_test.cc',
+ 'parser_test.cc',
+ 'reader_test.cc',
+ 'writer_test.cc',
+]
+
+exc = executable(
+ 'arrow-csv-test',
+ sources: csv_test_sources,
+ dependencies: [arrow_test_dep],
+)
+test('arrow-csv-test', exc)
+
+csv_benchmarks = ['converter_benchmark', 'parser_benchmark',
'writer_benchmark']
+
+foreach csv_benchmark : csv_benchmarks
+ benchmark_name = 'arrow-csv-@0@'.format(csv_benchmark.replace('_', '-'))
+ exc = executable(
+ benchmark_name,
+ sources: '@[email protected]'.format(csv_benchmark),
+ dependencies: [arrow_test_dep, benchmark_dep],
+ )
+ benchmark(benchmark_name, exc)
+endforeach
+
+install_headers(
+ [
+ 'api.h',
+ 'chunker.h',
+ 'column_builder.h',
+ 'column_decoder.h',
+ 'converter.h',
+ 'invalid_row.h',
+ 'options.h',
+ 'parser.h',
+ 'reader.h',
+ 'test_common.h',
+ 'type_fwd.h',
+ 'writer.h',
+ ],
+ subdir: 'arrow/csv',
+)
+
+
+pkg.generate(
+ filebase: 'arrow-csv',
+ name: 'Apache Arrow CSV',
+ description: 'CSV reader module for Apache Arrow',
+ requires: 'arrow',
+)
diff --git a/cpp/src/arrow/meson.build b/cpp/src/arrow/meson.build
index b44a6a9fe3..b2c59f1dd7 100644
--- a/cpp/src/arrow/meson.build
+++ b/cpp/src/arrow/meson.build
@@ -238,6 +238,25 @@ if needs_integration or needs_tests
}
endif
+if needs_csv
+ arrow_components += {
+ 'arrow_csv': {
+ 'sources': [
+ 'csv/converter.cc',
+ 'csv/chunker.cc',
+ 'csv/column_builder.cc',
+ 'csv/column_decoder.cc',
+ 'csv/options.cc',
+ 'csv/parser.cc',
+ 'csv/reader.cc',
+ 'csv/writer.cc',
+ ],
+ },
+ }
+
+ arrow_testing_srcs += ['csv/test_common.cc']
+endif
+
if needs_json
rapidjson_dep = dependency('rapidjson', include_type: 'system')
else
@@ -513,3 +532,7 @@ subdir('testing')
subdir('c')
subdir('util')
+
+if needs_csv
+ subdir('csv')
+endif