--- /dev/null
+# -*- indent-tabs-mode: nil -*-
+#
+# 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.
+
+sources = files(
+ 'array-builder.cpp',
+ 'basic-array.cpp',
+ 'basic-data-type.cpp',
+ 'buffer.cpp',
+ 'chunked-array.cpp',
+ 'codec.cpp',
+ 'composite-array.cpp',
+ 'composite-data-type.cpp',
+ 'datum.cpp',
+ 'decimal.cpp',
+ 'error.cpp',
+ 'expression.cpp',
+ 'field.cpp',
+ 'record-batch.cpp',
+ 'scalar.cpp',
+ 'schema.cpp',
+ 'table.cpp',
+ 'table-builder.cpp',
+ 'tensor.cpp',
+ 'type.cpp',
+)
+
+sources += files(
+ 'file.cpp',
+ 'file-mode.cpp',
+ 'input-stream.cpp',
+ 'output-stream.cpp',
+ 'readable.cpp',
+ 'writable.cpp',
+ 'writable-file.cpp',
+)
+
+sources += files(
+ 'ipc-options.cpp',
+ 'metadata-version.cpp',
+ 'reader.cpp',
+ 'writer.cpp',
+)
+
+sources += files(
+ 'compute.cpp',
+)
+
+sources += files(
+ 'file-system.cpp',
+ 'local-file-system.cpp',
+)
+
+if have_arrow_orc
+ sources += files(
+ 'orc-file-reader.cpp',
+ )
+endif
+
+c_headers = files(
+ 'array.h',
+ 'array-builder.h',
+ 'arrow-glib.h',
+ 'basic-array.h',
+ 'basic-data-type.h',
+ 'buffer.h',
+ 'chunked-array.h',
+ 'codec.h',
+ 'composite-array.h',
+ 'composite-data-type.h',
+ 'data-type.h',
+ 'datum.h',
+ 'decimal.h',
+ 'error.h',
+ 'expression.h',
+ 'field.h',
+ 'gobject-type.h',
+ 'record-batch.h',
+ 'scalar.h',
+ 'schema.h',
+ 'table.h',
+ 'table-builder.h',
+ 'tensor.h',
+ 'type.h',
+)
+
+
+c_headers += files(
+ 'file.h',
+ 'file-mode.h',
+ 'input-stream.h',
+ 'output-stream.h',
+ 'readable.h',
+ 'writable.h',
+ 'writable-file.h',
+)
+
+c_headers += files(
+ 'ipc-options.h',
+ 'metadata-version.h',
+ 'reader.h',
+ 'writer.h',
+)
+
+c_headers += files(
+ 'compute.h',
+)
+
+c_headers += files(
+ 'file-system.h',
+ 'local-file-system.h',
+)
+
+if have_arrow_orc
+ c_headers += files(
+ 'orc-file-reader.h',
+ )
+endif
+
+
+cpp_headers = files(
+ 'array.hpp',
+ 'array-builder.hpp',
+ 'arrow-glib.hpp',
+ 'basic-array.hpp',
+ 'basic-data-type.hpp',
+ 'buffer.hpp',
+ 'chunked-array.hpp',
+ 'codec.hpp',
+ 'data-type.hpp',
+ 'datum.hpp',
+ 'decimal.hpp',
+ 'error.hpp',
+ 'expression.hpp',
+ 'field.hpp',
+ 'record-batch.hpp',
+ 'scalar.hpp',
+ 'schema.hpp',
+ 'table.hpp',
+ 'table-builder.hpp',
+ 'tensor.hpp',
+ 'type.hpp',
+)
+
+cpp_headers += files(
+ 'file.hpp',
+ 'file-mode.hpp',
+ 'input-stream.hpp',
+ 'output-stream.hpp',
+ 'readable.hpp',
+ 'writable.hpp',
+ 'writable-file.hpp',
+)
+
+cpp_headers += files(
+ 'ipc-options.hpp',
+ 'metadata-version.hpp',
+ 'reader.hpp',
+ 'writer.hpp',
+)
+
+cpp_headers += files(
+ 'compute.hpp',
+)
+
+cpp_headers += files(
+ 'file-system.hpp',
+ 'local-file-system.hpp',
+)
+
+if have_arrow_orc
+ cpp_headers += files(
+ 'orc-file-reader.hpp',
+ )
+endif
+
+cpp_internal_headers = files(
+ 'internal-hash-table.hpp',
+ 'internal-index.hpp',
+)
+
+version_h_conf = configuration_data()
+version_h_conf.set('GARROW_VERSION_MAJOR', version_major)
+version_h_conf.set('GARROW_VERSION_MINOR', version_minor)
+version_h_conf.set('GARROW_VERSION_MICRO', version_micro)
+version_h_conf.set('GARROW_VERSION_TAG', version_tag)
+version_h = configure_file(input: 'version.h.in',
+ output: 'version.h',
+ configuration: version_h_conf)
+c_headers += version_h
+
+enums = gnome.mkenums('enums',
+ sources: c_headers,
+ identifier_prefix: 'GArrow',
+ symbol_prefix: 'garrow',
+ c_template: 'enums.c.template',
+ h_template: 'enums.h.template',
+ install_dir: join_paths(include_dir, meson.project_name()),
+ install_header: true)
+enums_source = enums[0]
+enums_header = enums[1]
+
+
+headers = c_headers + cpp_headers
+install_headers(headers, subdir: meson.project_name())
+
+
+gobject = dependency('gobject-2.0')
+gobject_libdir = gobject.get_variable(pkgconfig: 'libdir')
+# This is for Homebrew. "pkg-config --cflags gio-2.0" includes the
+# "-I$(xcrun --show-sdk-path)/usr/include" flag by zlib.pc. The
+# include path includes the standard C headers such as stdlib.h. It
+# confuses clang++ (/usr/bin/c++).
+gio = cxx.find_library('gio-2.0', dirs: [gobject_libdir], required: false)
+if not gio.found()
+ gio = dependency('gio-2.0')
+endif
+dependencies = [
+ arrow,
+ gobject,
+ gio,
+]
+libarrow_glib = library('arrow-glib',
+ sources: sources + enums,
+ install: true,
+ dependencies: dependencies,
+ include_directories: base_include_directories,
+ soversion: so_version,
+ version: library_version)
+arrow_glib = declare_dependency(link_with: libarrow_glib,
+ include_directories: base_include_directories,
+ dependencies: dependencies,
+ sources: enums_header)
+
+pkgconfig.generate(libarrow_glib,
+ filebase: meson.project_name(),
+ name: 'Apache Arrow GLib',
+ description: 'C API for Apache Arrow based on GLib',
+ version: version,
+ requires: ['gobject-2.0', 'arrow'])
+if have_arrow_orc
+ pkgconfig.generate(filebase: 'arrow-orc-glib',
+ name: 'Apache Arrow GLib ORC',
+ description: 'ORC modules for Apache Arrow GLib',
+ version: version,
+ requires: ['arrow-glib'])
+endif
+
+if have_gi
+ arrow_glib_gir = gnome.generate_gir(libarrow_glib,
+ sources: sources + c_headers + enums,
+ namespace: 'Arrow',
+ nsversion: api_version,
+ identifier_prefix: 'GArrow',
+ symbol_prefix: 'garrow',
+ export_packages: 'arrow-glib',
+ includes: [
+ 'GObject-2.0',
+ 'Gio-2.0',
+ ],
+ install: true,
+ extra_args: [
+ '--warn-all',
+ ])
+endif