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

Reply via email to