This is an automated email from the ASF dual-hosted git repository.
yangxk1 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-graphar.git
The following commit(s) were added to refs/heads/main by this push:
new f466b764 refactor(cmake): CMake configuration files for improved
readability (#904)
f466b764 is described below
commit f466b76448455d2008f221c447111825d4b4c0bc
Author: Jason <[email protected]>
AuthorDate: Thu May 7 20:34:39 2026 +0800
refactor(cmake): CMake configuration files for improved readability (#904)
* refactor(cmake): CMake configuration files for improved readability and
consistency
Signed-off-by: syaojun <[email protected]>
* fix(cmake): correct error message for OpenSSL version check and fix typo
in build options
Signed-off-by: syaojun <[email protected]>
* fix: enable cmake-format check in a separate files
Signed-off-by: syaojun <[email protected]>
---------
Signed-off-by: syaojun <[email protected]>
---
.../workflows/pre-commit.yml | 41 ++-
.pre-commit-config.yaml | 5 +
cmake-format.py | 74 +++++
cpp/CMakeLists.txt | 340 +++++++++++----------
cpp/benchmarks/CMakeLists.txt | 70 +++--
cpp/cmake/apache-arrow.cmake | 268 ++++++++--------
cpp/examples/CMakeLists.txt | 100 +++---
cpp/graphar-config-version.in.cmake | 2 +-
cpp/src/CMakeLists.txt | 195 ++++++------
cpp/test/CMakeLists.txt | 114 +++----
maven-projects/java/CMakeLists.txt | 42 ++-
maven-projects/java/cmake/graphar-cpp.cmake | 81 ++---
python/CMakeLists.txt | 59 ++--
13 files changed, 808 insertions(+), 583 deletions(-)
diff --git a/cpp/graphar-config-version.in.cmake
b/.github/workflows/pre-commit.yml
similarity index 56%
copy from cpp/graphar-config-version.in.cmake
copy to .github/workflows/pre-commit.yml
index 9e6f1cce..fd5a4cad 100644
--- a/cpp/graphar-config-version.in.cmake
+++ b/.github/workflows/pre-commit.yml
@@ -15,14 +15,35 @@
# specific language governing permissions and limitations
# under the License.
-set(PACKAGE_VERSION "@GRAPHAR_VERSION@")
+name: Pre-commit Checks
-# Check whether the requested PACKAGE_FIND_VERSION is compatible
-if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
- set(PACKAGE_VERSION_COMPATIBLE FALSE)
-else()
- set(PACKAGE_VERSION_COMPATIBLE TRUE)
- if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
- set(PACKAGE_VERSION_EXACT TRUE)
- endif()
-endif()
+on:
+ pull_request_target:
+ branches:
+ - main
+ types:
+ - opened
+ - edited
+ - reopened
+ - synchronize
+ - ready_for_review
+
+concurrency:
+ group: ${{ github.repository }}-${{ github.event.number || github.head_ref
|| github.sha }}-${{ github.workflow }}
+ cancel-in-progress: true
+
+permissions:
+ pull-requests: read
+
+jobs:
+ pre-commit:
+ name: Pre-commit Checks
+ runs-on: ubuntu-slim
+
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ submodules: true
+
+ - name: cmake-format check
+ run: pre-commit run cmake-format -a
\ No newline at end of file
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 4e486545..4c269b02 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -47,6 +47,11 @@ repos:
types_or: [c++]
args: [--style=file, --verbose]
exclude: ^cpp/thirdparty/
+
+ - repo: https://github.com/cheshirekow/cmake-format-precommit
+ rev: v0.6.10
+ hooks:
+ - id: cmake-format
- repo: https://github.com/pocc/pre-commit-hooks
rev: v1.3.5
diff --git a/cmake-format.py b/cmake-format.py
new file mode 100644
index 00000000..2c5a409f
--- /dev/null
+++ b/cmake-format.py
@@ -0,0 +1,74 @@
+# 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.
+
+# cmake-format configuration file
+
+# -----------------------------
+# Options affecting formatting.
+# -----------------------------
+with section("format"):
+ # How wide to allow formatted cmake files
+ line_width = 90
+
+ # How many spaces to tab for indent
+ tab_size = 2
+
+ # If a positional argument group contains more than this many arguments,
+ # then force it to a vertical layout.
+ max_pargs_hwrap = 4
+
+ # If the statement spelling length (including space and parenthesis) is
+ # smaller than this amount, then force reject nested layouts.
+ # This value only comes into play when considering whether or not to nest
+ # arguments below their parent. If the number of characters in the parent
+ # is less than this value, we will not nest.
+ min_prefix_chars = 32
+
+ # If true, separate flow control names from their parentheses with a space
+ separate_ctrl_name_with_space = False
+
+ # If true, separate function names from parentheses with a space
+ separate_fn_name_with_space = False
+
+ # If a statement is wrapped to more than one line, than dangle the closing
+ # parenthesis on it's own line
+ dangle_parens = False
+
+ # What style line endings to use in the output.
+ line_ending = "unix"
+
+ # Format command names consistently as 'lower' or 'upper' case
+ command_case = "lower"
+
+ # Format keywords consistently as 'lower' or 'upper' case
+ keyword_case = "unchanged"
+
+# ------------------------------------------------
+# Options affecting comment reflow and formatting.
+# ------------------------------------------------
+with section("markup"):
+ # enable comment markup parsing and reflow
+ enable_markup = False
+
+ # If comment markup is enabled, don't reflow the first comment block in
+ # eachlistfile. Use this to preserve formatting of your
+ # copyright/licensestatements.
+ first_comment_is_literal = True
+
+ # If comment markup is enabled, don't reflow any comment block which
+ # matches this (regex) pattern. Default is `None` (disabled).
+ literal_comment_pattern = None
diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
index f1fa70e9..9936bcbb 100644
--- a/cpp/CMakeLists.txt
+++ b/cpp/CMakeLists.txt
@@ -18,7 +18,7 @@
cmake_minimum_required(VERSION 3.5)
# Avoid mixing plain and keyword signature of target_link_libraries
-if (POLICY CMP0023)
+if(POLICY CMP0023)
cmake_policy(SET CMP0023 NEW)
endif()
@@ -27,15 +27,18 @@ if(POLICY CMP0048)
endif()
# Avoid warning about DOWNLOAD_EXTRACT_TIMESTAMP in CMake 3.24:
-if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
+if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
cmake_policy(SET CMP0135 NEW)
endif()
set(GRAPHAR_MAJOR_VERSION 0)
set(GRAPHAR_MINOR_VERSION 13)
set(GRAPHAR_PATCH_VERSION 0)
-set(GRAPHAR_VERSION
${GRAPHAR_MAJOR_VERSION}.${GRAPHAR_MINOR_VERSION}.${GRAPHAR_PATCH_VERSION})
-project(graphar-cpp LANGUAGES C CXX VERSION ${GRAPHAR_VERSION})
+set(GRAPHAR_VERSION
+ ${GRAPHAR_MAJOR_VERSION}.${GRAPHAR_MINOR_VERSION}.${GRAPHAR_PATCH_VERSION})
+project(graphar-cpp
+ LANGUAGES C CXX
+ VERSION ${GRAPHAR_VERSION})
#
------------------------------------------------------------------------------
# cmake options
@@ -52,81 +55,90 @@ option(BUILD_ARROW_FROM_SOURCE "Build Arrow from source"
OFF)
option(GRAPHAR_ENABLE_SANITIZER "Enable address sanitizer (Debug builds only)"
ON)
option(GRAPHAR_ENABLE_COVERAGE "Enable coverage instrumentation (Debug builds
only)" OFF)
-if (USE_STATIC_ARROW)
- set(GRAPHAR_BUILD_STATIC ON)
+if(USE_STATIC_ARROW)
+ set(GRAPHAR_BUILD_STATIC ON)
endif()
-if (ENABLE_DOCS OR BUILD_DOCS_ONLY)
- set(PROJECT_DOCUMENT_SOURCE ${PROJECT_SOURCE_DIR}/include
${PROJECT_SOURCE_DIR}/README.md)
- string(REPLACE ";" " " PROJECT_DOCUMENT_SOURCE
"${PROJECT_DOCUMENT_SOURCE}")
- file(DOWNLOAD
https://cdn.jsdelivr.net/gh/jothepro/[email protected]/doxygen-awesome.min.css
${CMAKE_BINARY_DIR}/doxygen-awesome.css)
- find_package(Doxygen REQUIRED)
- set(DOXYGEN_IN ${PROJECT_SOURCE_DIR}/Doxyfile)
- set(DOXYGEN_OUT ${CMAKE_BINARY_DIR}/Doxyfile.out)
- configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
- # Copy disclaimer_footer.html to the build directory
- configure_file(${PROJECT_SOURCE_DIR}/disclaimer_footer.html
${CMAKE_BINARY_DIR}/disclaimer_footer.html COPYONLY)
- add_custom_target(docs
- COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
- COMMENT "Generating API documentation with Doxygen"
- VERBATIM)
-
- if (BUILD_DOCS_ONLY)
- return()
- endif()
+if(ENABLE_DOCS OR BUILD_DOCS_ONLY)
+ set(PROJECT_DOCUMENT_SOURCE ${PROJECT_SOURCE_DIR}/include
+ ${PROJECT_SOURCE_DIR}/README.md)
+ string(REPLACE ";" " " PROJECT_DOCUMENT_SOURCE "${PROJECT_DOCUMENT_SOURCE}")
+ file(DOWNLOAD
+
https://cdn.jsdelivr.net/gh/jothepro/[email protected]/doxygen-awesome.min.css
+ ${CMAKE_BINARY_DIR}/doxygen-awesome.css)
+ find_package(Doxygen REQUIRED)
+ set(DOXYGEN_IN ${PROJECT_SOURCE_DIR}/Doxyfile)
+ set(DOXYGEN_OUT ${CMAKE_BINARY_DIR}/Doxyfile.out)
+ configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
+ # Copy disclaimer_footer.html to the build directory
+ configure_file(${PROJECT_SOURCE_DIR}/disclaimer_footer.html
+ ${CMAKE_BINARY_DIR}/disclaimer_footer.html COPYONLY)
+ add_custom_target(docs
+ COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ COMMENT "Generating API documentation with Doxygen"
+ VERBATIM)
+
+ if(BUILD_DOCS_ONLY)
+ return()
+ endif()
endif()
#
------------------------------------------------------------------------------
# setting default cmake type to Release
#
------------------------------------------------------------------------------
set(DEFAULT_BUILD_TYPE "Release")
-if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
+if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to '${DEFAULT_BUILD_TYPE}' as none was
specified.")
- set(CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" CACHE
- STRING "Choose the type of build." FORCE)
- set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
- "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
-endif ()
-
-if(NOT (CMAKE_CXX_COMPILER_LAUNCHER MATCHES "ccache") AND NOT
(CMAKE_C_COMPILER_LAUNCHER MATCHES "ccache"))
- find_program(ccache_EXECUTABLE ccache)
- if(ccache_EXECUTABLE)
- set(CMAKE_C_COMPILER_LAUNCHER ${ccache_EXECUTABLE})
- set(CMAKE_CXX_COMPILER_LAUNCHER ${ccache_EXECUTABLE})
- add_custom_target(graphar-ccache-stats
- COMMAND ${ccache_EXECUTABLE} --show-stats
- )
- else()
- add_custom_target(graphar-ccache-stats
- COMMAND echo "ccache not found."
- )
- endif(ccache_EXECUTABLE)
+ set(CMAKE_BUILD_TYPE
+ "${DEFAULT_BUILD_TYPE}"
+ CACHE STRING "Choose the type of build." FORCE)
+ set_property(CACHE CMAKE_BUILD_TYPE
+ PROPERTY STRINGS
+ "Debug"
+ "Release"
+ "MinSizeRel"
+ "RelWithDebInfo")
+endif()
+
+if(NOT (CMAKE_CXX_COMPILER_LAUNCHER MATCHES "ccache") AND NOT
(CMAKE_C_COMPILER_LAUNCHER
+ MATCHES
"ccache"))
+ find_program(ccache_EXECUTABLE ccache)
+ if(ccache_EXECUTABLE)
+ set(CMAKE_C_COMPILER_LAUNCHER ${ccache_EXECUTABLE})
+ set(CMAKE_CXX_COMPILER_LAUNCHER ${ccache_EXECUTABLE})
+ add_custom_target(graphar-ccache-stats COMMAND ${ccache_EXECUTABLE}
--show-stats)
+ else()
+ add_custom_target(graphar-ccache-stats COMMAND echo "ccache not found.")
+ endif(ccache_EXECUTABLE)
endif()
set(GAR_CXX_STANDARD 17)
if(MSVC)
- # Avoid GCC/Clang-specific flags on MSVC.
- # C++17 is already enforced via CMAKE_CXX_STANDARD/target features.
+ # Avoid GCC/Clang-specific flags on MSVC.
+ # C++17 is already enforced via CMAKE_CXX_STANDARD/target features.
else()
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -Wextra
-Wno-unused-parameter -Wno-unused-function -Wno-empty-body")
+ set(CMAKE_CXX_FLAGS
+ "${CMAKE_CXX_FLAGS} -Wall -Werror -Wextra -Wno-unused-parameter
-Wno-unused-function -Wno-empty-body"
+ )
endif()
-if (APPLE)
- set(CMAKE_MACOSX_RPATH ON)
+if(APPLE)
+ set(CMAKE_MACOSX_RPATH ON)
elseif(UNIX)
- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath,$ORIGIN")
-endif ()
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath,$ORIGIN")
+endif()
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g
-fno-omit-frame-pointer")
-if (GRAPHAR_ENABLE_SANITIZER)
+if(GRAPHAR_ENABLE_SANITIZER)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address")
# Linker flags are required to pull in the ASan runtime.
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG}
-fsanitize=address")
- set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}
-fsanitize=address")
+ set(CMAKE_SHARED_LINKER_FLAGS_DEBUG
+ "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=address")
endif()
-if (GRAPHAR_ENABLE_COVERAGE)
+if(GRAPHAR_ENABLE_COVERAGE)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} --coverage")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} --coverage")
endif()
@@ -135,7 +147,7 @@ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3
-g")
message(STATUS "[graphar] will build in type: ${CMAKE_BUILD_TYPE}")
string(TOUPPER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_UPPER)
-if (CMAKE_BUILD_TYPE_UPPER STREQUAL "DEBUG")
+if(CMAKE_BUILD_TYPE_UPPER STREQUAL "DEBUG")
message(STATUS "[graphar] GRAPHAR_ENABLE_SANITIZER:
${GRAPHAR_ENABLE_SANITIZER}")
message(STATUS "[graphar] GRAPHAR_ENABLE_COVERAGE:
${GRAPHAR_ENABLE_COVERAGE}")
endif()
@@ -149,44 +161,46 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
add_library(${PROJECT_NAME} INTERFACE)
-target_include_directories(
- ${PROJECT_NAME}
- INTERFACE
- $<BUILD_INTERFACE:${${PROJECT_NAME}_SOURCE_DIR}>
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
-)
-
+target_include_directories(${PROJECT_NAME}
+ INTERFACE
$<BUILD_INTERFACE:${${PROJECT_NAME}_SOURCE_DIR}>
+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
#
------------------------------------------------------------------------------
# macro functions
#
------------------------------------------------------------------------------
macro(add_subdirectory_shared directory)
- set(BUILD_SHARED_LIBS_SAVED "${BUILD_SHARED_LIBS}")
- set(BUILD_SHARED_LIBS ON)
- set(CMAKE_BUILD_TYPE_SAVED "${CMAKE_BUILD_TYPE}")
- set(CMAKE_BUILD_TYPE Release)
- add_subdirectory(${directory} ${ARGN})
- set(BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS_SAVED}")
- set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE_SAVED}")
+ set(BUILD_SHARED_LIBS_SAVED "${BUILD_SHARED_LIBS}")
+ set(BUILD_SHARED_LIBS ON)
+ set(CMAKE_BUILD_TYPE_SAVED "${CMAKE_BUILD_TYPE}")
+ set(CMAKE_BUILD_TYPE Release)
+ add_subdirectory(${directory} ${ARGN})
+ set(BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS_SAVED}")
+ set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE_SAVED}")
endmacro()
macro(add_subdirectory_static directory)
- set(BUILD_SHARED_LIBS_SAVED "${BUILD_SHARED_LIBS}")
- set(BUILD_SHARED_LIBS OFF)
- set(CMAKE_BUILD_TYPE_SAVED "${CMAKE_BUILD_TYPE}")
- set(CMAKE_BUILD_TYPE Release)
- add_subdirectory(${directory} ${ARGN})
- set(BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS_SAVED}")
- set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE_SAVED}")
+ set(BUILD_SHARED_LIBS_SAVED "${BUILD_SHARED_LIBS}")
+ set(BUILD_SHARED_LIBS OFF)
+ set(CMAKE_BUILD_TYPE_SAVED "${CMAKE_BUILD_TYPE}")
+ set(CMAKE_BUILD_TYPE Release)
+ add_subdirectory(${directory} ${ARGN})
+ set(BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS_SAVED}")
+ set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE_SAVED}")
endmacro()
macro(find_yaml_cpp)
- set(MESSAGE_QUIET ON)
- set(CMAKE_WARN_DEPRECATED OFF CACHE BOOL "" FORCE)
- set(YAML_CPP_BUILD_TOOLS OFF CACHE BOOL "" FORCE)
- add_subdirectory_static(thirdparty/yaml-cpp EXCLUDE_FROM_ALL)
- unset(MESSAGE_QUIET)
- set(CMAKE_WARN_DEPRECATED ON CACHE BOOL "" FORCE)
+ set(MESSAGE_QUIET ON)
+ set(CMAKE_WARN_DEPRECATED
+ OFF
+ CACHE BOOL "" FORCE)
+ set(YAML_CPP_BUILD_TOOLS
+ OFF
+ CACHE BOOL "" FORCE)
+ add_subdirectory_static(thirdparty/yaml-cpp EXCLUDE_FROM_ALL)
+ unset(MESSAGE_QUIET)
+ set(CMAKE_WARN_DEPRECATED
+ ON
+ CACHE BOOL "" FORCE)
endmacro()
# Implementations of lisp "car" and "cdr" functions
@@ -284,57 +298,61 @@ endfunction()
include_directories(${CMAKE_CURRENT_BINARY_DIR}/src)
include_directories(src)
-if (BUILD_ARROW_FROM_SOURCE)
- # the necessary dependencies for building arrow from source
- find_package(OpenSSL REQUIRED)
- if(OPENSSL_FOUND)
- if(OPENSSL_VERSION LESS "1.1.0")
- message(ERROR "The OpenSSL must be greater than or equal to 1.1.0,
current version is ${OPENSSL_VERSION}")
- endif()
+if(BUILD_ARROW_FROM_SOURCE)
+ # the necessary dependencies for building arrow from source
+ find_package(OpenSSL REQUIRED)
+ if(OPENSSL_FOUND)
+ if(OPENSSL_VERSION LESS "1.1.0")
+ message(FATAL_ERROR "The OpenSSL must be greater than or equal to 1.1.0,
current version is ${OPENSSL_VERSION}"
+ )
endif()
- find_package(CURL REQUIRED)
+ endif()
+ find_package(CURL REQUIRED)
- include(apache-arrow)
+ include(apache-arrow)
- if (ARROW_VERSION_TO_BUILD VERSION_GREATER_EQUAL "23.0.0")
- set(GAR_CXX_STANDARD 20)
- endif()
- build_arrow()
- add_definitions(-DARROW_ORC) # Add macro, otherwise inconsistent in build
phase with not from source.
+ if(ARROW_VERSION_TO_BUILD VERSION_GREATER_EQUAL "23.0.0")
+ set(GAR_CXX_STANDARD 20)
+ endif()
+ build_arrow()
+ add_definitions(-DARROW_ORC
+ )# Add macro, otherwise inconsistent in build phase with not from source.
else()
- # check if arrow is installed
- find_package(Arrow QUIET)
- if (NOT ${Arrow_FOUND})
- message(FATAL_ERROR "apache-arrow is required, please install it and
retry")
- endif()
- find_package(ArrowDataset QUIET)
- if (NOT ${ArrowDataset_FOUND})
- message(FATAL_ERROR "apache-arrow-dataset is required, please install
it and retry")
- endif()
- if (${Arrow_VERSION} VERSION_GREATER_EQUAL "12.0.0")
- # ArrowAcero is available in Arrow 12.0.0 and later
- find_package(ArrowAcero QUIET)
- if (NOT ${ArrowAcero_FOUND})
- message(FATAL_ERROR "apache-arrow-acero is required, please
install it and retry")
- endif()
- endif()
- # Check if ORC is enabled.
- if (NOT ${ARROW_ORC})
- message(WARNING "apache-arrow is built without ORC extension, ORC
related functionalities will be disabled.")
- else()
- add_definitions(-DARROW_ORC) # Add macro, otherwise inconsistent in
build phase on ubuntu.
+ # check if arrow is installed
+ find_package(Arrow QUIET)
+ if(NOT ${Arrow_FOUND})
+ message(FATAL_ERROR "apache-arrow is required, please install it and
retry")
+ endif()
+ find_package(ArrowDataset QUIET)
+ if(NOT ${ArrowDataset_FOUND})
+ message(FATAL_ERROR "apache-arrow-dataset is required, please install it
and retry")
+ endif()
+ if(${Arrow_VERSION} VERSION_GREATER_EQUAL "12.0.0")
+ # ArrowAcero is available in Arrow 12.0.0 and later
+ find_package(ArrowAcero QUIET)
+ if(NOT ${ArrowAcero_FOUND})
+ message(FATAL_ERROR "apache-arrow-acero is required, please install it
and retry")
endif()
+ endif()
+ # Check if ORC is enabled.
+ if(NOT ${ARROW_ORC})
+ message(WARNING "apache-arrow is built without ORC extension, ORC related
functionalities will be disabled."
+ )
+ else()
+ add_definitions(-DARROW_ORC
+ )# Add macro, otherwise inconsistent in build phase on ubuntu.
+ endif()
- find_package(Parquet QUIET)
- if (NOT ${Parquet_FOUND})
- message(FATAL_ERROR "parquet is required, please install it and retry")
- endif()
+ find_package(Parquet QUIET)
+ if(NOT ${Parquet_FOUND})
+ message(FATAL_ERROR "parquet is required, please install it and retry")
+ endif()
- # Update C++ standard based on detected system Arrow version
- if (${Arrow_VERSION} VERSION_GREATER_EQUAL "23.0.0")
- set(GAR_CXX_STANDARD 20)
- message(STATUS "Arrow ${Arrow_VERSION} detected")
- endif()
+ # Update C++ standard based on detected system Arrow version
+ if(${Arrow_VERSION} VERSION_GREATER_EQUAL "23.0.0")
+ set(GAR_CXX_STANDARD 20)
+ message(STATUS "Arrow ${Arrow_VERSION} detected")
+ endif()
endif()
message(STATUS "[graphar] using C++ standard: ${GAR_CXX_STANDARD}")
@@ -347,23 +365,23 @@ add_subdirectory(src)
#
------------------------------------------------------------------------------
# build examples
#
------------------------------------------------------------------------------
-if (BUILD_EXAMPLES)
- add_subdirectory(examples)
+if(BUILD_EXAMPLES)
+ add_subdirectory(examples)
endif()
#
------------------------------------------------------------------------------
# Test targets
#
------------------------------------------------------------------------------
-if (BUILD_TESTS)
- enable_testing()
- add_subdirectory(test)
+if(BUILD_TESTS)
+ enable_testing()
+ add_subdirectory(test)
endif()
#
------------------------------------------------------------------------------
# Benchmark targets
#
------------------------------------------------------------------------------
-if (BUILD_BENCHMARKS)
- add_subdirectory(benchmarks)
+if(BUILD_BENCHMARKS)
+ add_subdirectory(benchmarks)
endif()
#
------------------------------------------------------------------------------
@@ -372,44 +390,49 @@ endif()
install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/graphar
DESTINATION include
FILES_MATCHING
- PATTERN "*.h"
-)
+ PATTERN "*.h")
install(DIRECTORY ${PROJECT_SOURCE_DIR}/thirdparty/result
DESTINATION include
FILES_MATCHING
- PATTERN "*.hpp"
-)
+ PATTERN "*.hpp")
-configure_file(graphar-config.in.cmake
- "${PROJECT_BINARY_DIR}/graphar-config.cmake" @ONLY
-)
+configure_file(graphar-config.in.cmake
"${PROJECT_BINARY_DIR}/graphar-config.cmake" @ONLY)
configure_file(graphar-config-version.in.cmake
- "${PROJECT_BINARY_DIR}/graphar-config-version.cmake" @ONLY
-)
+ "${PROJECT_BINARY_DIR}/graphar-config-version.cmake" @ONLY)
install(FILES "${PROJECT_BINARY_DIR}/graphar-config.cmake"
"${PROJECT_BINARY_DIR}/graphar-config-version.cmake"
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/graphar
-)
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/graphar)
install(EXPORT graphar-targets
FILE graphar-targets.cmake
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/graphar
-)
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/graphar)
#
------------------------------------------------------------------------------
# Format code & cpplint
#
------------------------------------------------------------------------------
-file(GLOB_RECURSE FILES_NEED_FORMAT "src/graphar/*.h" "src/graphar/*.cc"
- "test/*.h" "test/*.cc"
- "examples/*.h" "examples/*.cc"
- "benchmarks/*.h" "benchmarks/*.cc")
-file(GLOB_RECURSE FILES_NEED_LINT "src/graphar/*.h" "src/graphar/*.cc"
- "test/*.h" "test/*.cc"
- "examples/*.h" "examples/*.cc"
- "benchmarks/*.h" "benchmarks/*.cc")
+file(GLOB_RECURSE
+ FILES_NEED_FORMAT
+ "src/graphar/*.h"
+ "src/graphar/*.cc"
+ "test/*.h"
+ "test/*.cc"
+ "examples/*.h"
+ "examples/*.cc"
+ "benchmarks/*.h"
+ "benchmarks/*.cc")
+file(GLOB_RECURSE
+ FILES_NEED_LINT
+ "src/graphar/*.h"
+ "src/graphar/*.cc"
+ "test/*.h"
+ "test/*.cc"
+ "examples/*.h"
+ "examples/*.cc"
+ "benchmarks/*.h"
+ "benchmarks/*.cc")
add_custom_target(graphar-clformat
COMMAND clang-format --style=file -i ${FILES_NEED_FORMAT}
@@ -417,6 +440,7 @@ add_custom_target(graphar-clformat
VERBATIM)
add_custom_target(graphar-cpplint
- COMMAND ${PROJECT_SOURCE_DIR}/misc/cpplint.py
--root=${PROJECT_SOURCE_DIR}/include ${FILES_NEED_LINT}
- COMMENT "Running cpplint check."
- VERBATIM)
+ COMMAND ${PROJECT_SOURCE_DIR}/misc/cpplint.py
+ --root=${PROJECT_SOURCE_DIR}/include
${FILES_NEED_LINT}
+ COMMENT "Running cpplint check."
+ VERBATIM)
diff --git a/cpp/benchmarks/CMakeLists.txt b/cpp/benchmarks/CMakeLists.txt
index 3927318b..75d28f97 100644
--- a/cpp/benchmarks/CMakeLists.txt
+++ b/cpp/benchmarks/CMakeLists.txt
@@ -18,34 +18,54 @@
find_package(benchmark REQUIRED)
macro(add_benchmark target)
- set(options)
- set(oneValueArgs)
- set(multiValueArgs SRCS)
- cmake_parse_arguments(add_test "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN})
- add_executable(${target} ${add_test_SRCS})
- target_compile_features(${target} PRIVATE cxx_std_${GAR_CXX_STANDARD})
- target_include_directories(${target} PRIVATE
${PROJECT_SOURCE_DIR}/thirdparty)
+ set(options)
+ set(oneValueArgs)
+ set(multiValueArgs SRCS)
+ cmake_parse_arguments(add_test
+ "${options}"
+ "${oneValueArgs}"
+ "${multiValueArgs}"
+ ${ARGN})
+ add_executable(${target} ${add_test_SRCS})
+ target_compile_features(${target} PRIVATE cxx_std_${GAR_CXX_STANDARD})
+ target_include_directories(${target} PRIVATE
${PROJECT_SOURCE_DIR}/thirdparty)
+ if(APPLE)
+ target_link_libraries(${target}
+ PRIVATE benchmark::benchmark_main
+ graphar
+ Arrow::arrow_shared
+ Parquet::parquet_shared
+ ${CMAKE_DL_LIBS})
+ else()
+ target_link_libraries(${target}
+ PRIVATE benchmark::benchmark_main
+ graphar
+ parquet
+ arrow
+ ${CMAKE_DL_LIBS})
+ endif()
+ if(BUILD_ARROW_FROM_SOURCE)
+ target_include_directories(${target} SYSTEM BEFORE PRIVATE
${GAR_ARROW_INCLUDE_DIR})
if(APPLE)
- target_link_libraries(${target} PRIVATE benchmark::benchmark_main
graphar Arrow::arrow_shared Parquet::parquet_shared ${CMAKE_DL_LIBS})
+ target_link_libraries(${target}
+ PRIVATE -Wl,-force_load
+ ${GAR_ARROW_STATIC_LIB}
+ "${GAR_PARQUET_STATIC_LIB}"
+ "${GAR_ARROW_BUNDLED_DEPS_STATIC_LIB}"
+ protobuf::libprotobuf
+ "-framework CoreFoundation"
+ "-framework Security"
+ "-framework Network")
else()
- target_link_libraries(${target} PRIVATE benchmark::benchmark_main
graphar parquet arrow ${CMAKE_DL_LIBS})
- endif()
- if(BUILD_ARROW_FROM_SOURCE)
- target_include_directories(${target} SYSTEM BEFORE PRIVATE
${GAR_ARROW_INCLUDE_DIR})
- if(APPLE)
- target_link_libraries(${target} PRIVATE -Wl,-force_load
${GAR_ARROW_STATIC_LIB}
- "${GAR_PARQUET_STATIC_LIB}"
- "${GAR_ARROW_BUNDLED_DEPS_STATIC_LIB}"
- protobuf::libprotobuf
- "-framework CoreFoundation"
- "-framework Security"
- "-framework Network")
- else()
- target_link_libraries(${target} PRIVATE -Wl,--exclude-libs,ALL
-Wl,--whole-archive ${GAR_ARROW_STATIC_LIB}
- "${GAR_PARQUET_STATIC_LIB}"
- "${GAR_ARROW_BUNDLED_DEPS_STATIC_LIB}" -Wl,--no-whole-archive)
- endif()
+ target_link_libraries(${target}
+ PRIVATE -Wl,--exclude-libs,ALL
+ -Wl,--whole-archive
+ ${GAR_ARROW_STATIC_LIB}
+ "${GAR_PARQUET_STATIC_LIB}"
+ "${GAR_ARROW_BUNDLED_DEPS_STATIC_LIB}"
+ -Wl,--no-whole-archive)
endif()
+ endif()
endmacro()
add_benchmark(arrow_chunk_reader_benchmark SRCS
arrow_chunk_reader_benchmark.cc)
diff --git a/cpp/cmake/apache-arrow.cmake b/cpp/cmake/apache-arrow.cmake
index 2e75e2cd..9873230a 100644
--- a/cpp/cmake/apache-arrow.cmake
+++ b/cpp/cmake/apache-arrow.cmake
@@ -35,139 +35,161 @@
# This cmake file is referred and derived from
# https://github.com/apache/arrow/blob/master/matlab/CMakeLists.txt
-
# Build the Arrow C++ libraries.
function(build_arrow)
- set(one_value_args)
- set(multi_value_args)
+ set(one_value_args)
+ set(multi_value_args)
+
+ cmake_parse_arguments(ARG
+ "${options}"
+ "${one_value_args}"
+ "${multi_value_args}"
+ ${ARGN})
+ if(ARG_UNPARSED_ARGUMENTS)
+ message(SEND_ERROR "Error: unrecognized arguments:
${ARG_UNPARSED_ARGUMENTS}")
+ endif()
- cmake_parse_arguments(ARG
- "${options}"
- "${one_value_args}"
- "${multi_value_args}"
- ${ARGN})
- if (ARG_UNPARSED_ARGUMENTS)
- message(SEND_ERROR "Error: unrecognized arguments:
${ARG_UNPARSED_ARGUMENTS}")
- endif ()
+ # If Arrow needs to be built, the default location will be within the build
tree.
+ set(GAR_ARROW_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/arrow_ep-prefix")
- # If Arrow needs to be built, the default location will be within the
build tree.
- set(GAR_ARROW_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/arrow_ep-prefix")
+ set(GAR_ARROW_STATIC_LIBRARY_DIR "${GAR_ARROW_PREFIX}/lib")
- set(GAR_ARROW_STATIC_LIBRARY_DIR "${GAR_ARROW_PREFIX}/lib")
+ set(GAR_ARROW_STATIC_LIB_FILENAME
+ "${CMAKE_STATIC_LIBRARY_PREFIX}arrow${CMAKE_STATIC_LIBRARY_SUFFIX}")
+ set(GAR_ARROW_STATIC_LIB
+ "${GAR_ARROW_STATIC_LIBRARY_DIR}/${GAR_ARROW_STATIC_LIB_FILENAME}"
+ CACHE INTERNAL "arrow lib")
+ set(GAR_PARQUET_STATIC_LIB_FILENAME
+ "${CMAKE_STATIC_LIBRARY_PREFIX}parquet${CMAKE_STATIC_LIBRARY_SUFFIX}")
+ set(GAR_PARQUET_STATIC_LIB
+ "${GAR_ARROW_STATIC_LIBRARY_DIR}/${GAR_PARQUET_STATIC_LIB_FILENAME}"
+ CACHE INTERNAL "parquet lib")
+ set(GAR_DATASET_STATIC_LIB_FILENAME
+
"${CMAKE_STATIC_LIBRARY_PREFIX}arrow_dataset${CMAKE_STATIC_LIBRARY_SUFFIX}")
+ set(GAR_DATASET_STATIC_LIB
+ "${GAR_ARROW_STATIC_LIBRARY_DIR}/${GAR_DATASET_STATIC_LIB_FILENAME}"
+ CACHE INTERNAL "arrow dataset lib")
+ set(GAR_ARROW_COMPUTE_STATIC_LIB_FILENAME
+
"${CMAKE_STATIC_LIBRARY_PREFIX}arrow_compute${CMAKE_STATIC_LIBRARY_SUFFIX}")
+ set(GAR_ARROW_COMPUTE_STATIC_LIB
+
"${GAR_ARROW_STATIC_LIBRARY_DIR}/${GAR_ARROW_COMPUTE_STATIC_LIB_FILENAME}"
+ CACHE INTERNAL "arrow compute lib")
+ set(GAR_ARROW_BUNDLED_DEPS_STATIC_LIB_FILENAME
+
"${CMAKE_STATIC_LIBRARY_PREFIX}arrow_bundled_dependencies${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ )
+ set(GAR_ARROW_BUNDLED_DEPS_STATIC_LIB
+
"${GAR_ARROW_STATIC_LIBRARY_DIR}/${GAR_ARROW_BUNDLED_DEPS_STATIC_LIB_FILENAME}"
+ CACHE INTERNAL "bundled deps lib")
- set(GAR_ARROW_STATIC_LIB_FILENAME
-
"${CMAKE_STATIC_LIBRARY_PREFIX}arrow${CMAKE_STATIC_LIBRARY_SUFFIX}")
- set(GAR_ARROW_STATIC_LIB
"${GAR_ARROW_STATIC_LIBRARY_DIR}/${GAR_ARROW_STATIC_LIB_FILENAME}" CACHE
INTERNAL "arrow lib")
- set(GAR_PARQUET_STATIC_LIB_FILENAME
-
"${CMAKE_STATIC_LIBRARY_PREFIX}parquet${CMAKE_STATIC_LIBRARY_SUFFIX}")
- set(GAR_PARQUET_STATIC_LIB
"${GAR_ARROW_STATIC_LIBRARY_DIR}/${GAR_PARQUET_STATIC_LIB_FILENAME}" CACHE
INTERNAL "parquet lib")
- set(GAR_DATASET_STATIC_LIB_FILENAME
-
"${CMAKE_STATIC_LIBRARY_PREFIX}arrow_dataset${CMAKE_STATIC_LIBRARY_SUFFIX}")
- set(GAR_DATASET_STATIC_LIB
"${GAR_ARROW_STATIC_LIBRARY_DIR}/${GAR_DATASET_STATIC_LIB_FILENAME}" CACHE
INTERNAL "arrow dataset lib")
- set(GAR_ARROW_COMPUTE_STATIC_LIB_FILENAME
-
"${CMAKE_STATIC_LIBRARY_PREFIX}arrow_compute${CMAKE_STATIC_LIBRARY_SUFFIX}")
- set(GAR_ARROW_COMPUTE_STATIC_LIB
"${GAR_ARROW_STATIC_LIBRARY_DIR}/${GAR_ARROW_COMPUTE_STATIC_LIB_FILENAME}"
CACHE INTERNAL "arrow compute lib")
- set(GAR_ARROW_BUNDLED_DEPS_STATIC_LIB_FILENAME
-
"${CMAKE_STATIC_LIBRARY_PREFIX}arrow_bundled_dependencies${CMAKE_STATIC_LIBRARY_SUFFIX}")
- set(GAR_ARROW_BUNDLED_DEPS_STATIC_LIB
-
"${GAR_ARROW_STATIC_LIBRARY_DIR}/${GAR_ARROW_BUNDLED_DEPS_STATIC_LIB_FILENAME}"
CACHE INTERNAL "bundled deps lib")
+ set(GAR_ARROW_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/arrow_ep-build")
+ set(GAR_ARROW_CMAKE_ARGS
+ "-DCMAKE_INSTALL_PREFIX=${GAR_ARROW_PREFIX}"
+ "-DARROW_BUILD_STATIC=ON"
+ "-DARROW_BUILD_SHARED=OFF"
+ "-DARROW_DEPENDENCY_SOURCE=BUNDLED"
+ "-DARROW_DEPENDENCY_USE_SHARED=OFF"
+ "-DCMAKE_INSTALL_LIBDIR=lib"
+ "-Dxsimd_SOURCE=BUNDLED"
+ "-DARROW_PARQUET=ON"
+ "-DARROW_WITH_RE2=OFF"
+ "-DARROW_WITH_UTF8PROC=OFF"
+ "-DARROW_FILESYSTEM=ON"
+ "-DARROW_CSV=ON"
+ "-DARROW_JSON=ON"
+ "-DARROW_PYTHON=OFF"
+ "-DARROW_BUILD_BENCHMARKS=OFF"
+ "-DARROW_BUILD_TESTS=OFF"
+ "-DARROW_BUILD_INTEGRATION=OFF"
+ "-DBoost_SOURCE=BUNDLED"
+ "-DARROW_ORC=ON"
+ "-DARROW_COMPUTE=ON"
+ "-DARROW_ACERO=ON"
+ "-DARROW_DATASET=ON"
+ "-DARROW_JEMALLOC=OFF"
+ "-DARROW_WITH_SNAPPY=OFF"
+ "-DARROW_WITH_LZ4=OFF"
+ "-DARROW_WITH_ZSTD=ON"
+ "-DARROW_WITH_ZLIB=OFF"
+ "-DARROW_WITH_BROTLI=OFF"
+ "-DARROW_WITH_BZ2=OFF"
+ "-DARROW_OPENSSL_USE_SHARED=ON"
+ "-DARROW_S3=ON")
- set(GAR_ARROW_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/arrow_ep-build")
- set(GAR_ARROW_CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${GAR_ARROW_PREFIX}"
- "-DARROW_BUILD_STATIC=ON"
- "-DARROW_BUILD_SHARED=OFF"
- "-DARROW_DEPENDENCY_SOURCE=BUNDLED"
- "-DARROW_DEPENDENCY_USE_SHARED=OFF"
- "-DCMAKE_INSTALL_LIBDIR=lib"
- "-Dxsimd_SOURCE=BUNDLED"
- "-DARROW_PARQUET=ON"
- "-DARROW_WITH_RE2=OFF"
- "-DARROW_WITH_UTF8PROC=OFF"
- "-DARROW_WITH_RE2=OFF"
- "-DARROW_FILESYSTEM=ON"
- "-DARROW_CSV=ON"
- "-DARROW_JSON=ON"
- "-DARROW_PYTHON=OFF"
- "-DARROW_BUILD_BENCHMAKRS=OFF"
- "-DARROW_BUILD_TESTS=OFF"
- "-DARROW_BUILD_INTEGRATION=OFF"
- "-DBoost_SOURCE=BUNDLED"
- "-DARROW_ORC=ON"
- "-DARROW_COMPUTE=ON"
- "-DARROW_ACERO=ON"
- "-DARROW_DATASET=ON"
- "-DARROW_JEMALLOC=OFF"
- "-DARROW_WITH_SNAPPY=OFF"
- "-DARROW_WITH_LZ4=OFF"
- "-DARROW_WITH_ZSTD=ON"
- "-DARROW_WITH_ZLIB=OFF"
- "-DARROW_WITH_BROTLI=OFF"
- "-DARROW_WITH_BZ2=OFF"
- "-DARROW_OPENSSL_USE_SHARED=ON"
- "-DARROW_S3=ON")
+ set(GAR_ARROW_INCLUDE_DIR
+ "${GAR_ARROW_PREFIX}/include"
+ CACHE INTERNAL "arrow include directory")
+ set(GAR_ARROW_BUILD_BYPRODUCTS
+ "${GAR_ARROW_STATIC_LIB}" "${GAR_PARQUET_STATIC_LIB}"
"${GAR_DATASET_STATIC_LIB}"
+ "${GAR_ARROW_COMPUTE_STATIC_LIB}")
- set(GAR_ARROW_INCLUDE_DIR "${GAR_ARROW_PREFIX}/include" CACHE INTERNAL
"arrow include directory")
- set(GAR_ARROW_BUILD_BYPRODUCTS "${GAR_ARROW_STATIC_LIB}"
"${GAR_PARQUET_STATIC_LIB}" "${GAR_DATASET_STATIC_LIB}"
"${GAR_ARROW_COMPUTE_STATIC_LIB}")
+ find_package(Threads)
+ find_package(Arrow QUIET)
+ # Set Arrow version: from env var or default to 23.0.0
+ if(DEFINED ENV{GRAPHAR_ARROW_VERSION})
+ set(ARROW_VERSION_TO_BUILD
+ "$ENV{GRAPHAR_ARROW_VERSION}"
+ CACHE INTERNAL "arrow version")
+ else()
+ set(ARROW_VERSION_TO_BUILD
+ "23.0.0"
+ CACHE INTERNAL "arrow version")
+ endif()
- find_package(Threads)
- find_package(Arrow QUIET)
- # Set Arrow version: from env var or default to 23.0.0
- if(DEFINED ENV{GRAPHAR_ARROW_VERSION})
- set(ARROW_VERSION_TO_BUILD "$ENV{GRAPHAR_ARROW_VERSION}" CACHE
INTERNAL "arrow version")
- else()
- set(ARROW_VERSION_TO_BUILD "23.0.0" CACHE INTERNAL "arrow version")
- endif()
-
- if(DEFINED ENV{GAR_ARROW_SOURCE_URL})
- set(GAR_ARROW_SOURCE_URL "$ENV{GAR_ARROW_SOURCE_URL}")
- else()
- set(GAR_ARROW_SOURCE_URL
"https://www.apache.org/dyn/closer.lua?action=download&filename=arrow/arrow-${ARROW_VERSION_TO_BUILD}/apache-arrow-${ARROW_VERSION_TO_BUILD}.tar.gz")
- endif ()
+ if(DEFINED ENV{GAR_ARROW_SOURCE_URL})
+ set(GAR_ARROW_SOURCE_URL "$ENV{GAR_ARROW_SOURCE_URL}")
+ else()
+ set(GAR_ARROW_SOURCE_URL
+
"https://www.apache.org/dyn/closer.lua?action=download&filename=arrow/arrow-${ARROW_VERSION_TO_BUILD}/apache-arrow-${ARROW_VERSION_TO_BUILD}.tar.gz"
+ )
+ endif()
- include(ExternalProject)
- externalproject_add(arrow_ep
- URL "${GAR_ARROW_SOURCE_URL}"
- SOURCE_SUBDIR cpp
- BINARY_DIR "${GAR_ARROW_BINARY_DIR}"
- CMAKE_ARGS "${GAR_ARROW_CMAKE_ARGS}"
- BUILD_BYPRODUCTS "${GAR_ARROW_BUILD_BYPRODUCTS}")
+ include(ExternalProject)
+ externalproject_add(arrow_ep
+ URL "${GAR_ARROW_SOURCE_URL}"
+ SOURCE_SUBDIR cpp
+ BINARY_DIR "${GAR_ARROW_BINARY_DIR}"
+ CMAKE_ARGS "${GAR_ARROW_CMAKE_ARGS}"
+ BUILD_BYPRODUCTS "${GAR_ARROW_BUILD_BYPRODUCTS}")
- set(GAR_ARROW_LIBRARY_TARGET gar_arrow_static)
- set(GAR_PARQUET_LIBRARY_TARGET gar_parquet_static)
- set(GAR_DATASET_LIBRARY_TARGET gar_dataset_static)
- set(GAR_ARROW_BUNDLED_DEPS_TARGET gar_arrow_bundled_dependencies_static)
+ set(GAR_ARROW_LIBRARY_TARGET gar_arrow_static)
+ set(GAR_PARQUET_LIBRARY_TARGET gar_parquet_static)
+ set(GAR_DATASET_LIBRARY_TARGET gar_dataset_static)
+ set(GAR_ARROW_BUNDLED_DEPS_TARGET gar_arrow_bundled_dependencies_static)
- file(MAKE_DIRECTORY "${GAR_ARROW_INCLUDE_DIR}")
- add_library(${GAR_ARROW_LIBRARY_TARGET} STATIC IMPORTED)
- add_library(${GAR_PARQUET_LIBRARY_TARGET} STATIC IMPORTED)
- add_library(${GAR_DATASET_LIBRARY_TARGET} STATIC IMPORTED)
- add_library(${GAR_ARROW_BUNDLED_DEPS_TARGET} STATIC IMPORTED)
- set_target_properties(${GAR_ARROW_LIBRARY_TARGET}
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${GAR_ARROW_INCLUDE_DIR}
- IMPORTED_LOCATION ${GAR_ARROW_STATIC_LIB})
- set_target_properties(${GAR_PARQUET_LIBRARY_TARGET}
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${GAR_ARROW_INCLUDE_DIR}
- IMPORTED_LOCATION ${GAR_PARQUET_STATIC_LIB})
- set_target_properties(${GAR_DATASET_LIBRARY_TARGET}
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${GAR_ARROW_INCLUDE_DIR}
- IMPORTED_LOCATION ${GAR_DATASET_STATIC_LIB})
- set_target_properties(${GAR_ARROW_BUNDLED_DEPS_TARGET}
- PROPERTIES IMPORTED_LOCATION ${GAR_ARROW_BUNDLED_DEPS_STATIC_LIB})
- if (ARROW_VERSION_TO_BUILD GREATER_EQUAL "12.0.0")
- set(GAR_ARROW_ACERO_STATIC_LIB_FILENAME
-
"${CMAKE_STATIC_LIBRARY_PREFIX}arrow_acero${CMAKE_STATIC_LIBRARY_SUFFIX}")
- set(GAR_ARROW_ACERO_STATIC_LIB
"${GAR_ARROW_STATIC_LIBRARY_DIR}/${GAR_ARROW_ACERO_STATIC_LIB_FILENAME}" CACHE
INTERNAL "acero lib")
- set(GAR_ARROW_ACERO_LIBRARY_TARGET gar_acero_static)
- add_library(${GAR_ARROW_ACERO_LIBRARY_TARGET} STATIC IMPORTED)
- set_target_properties(${GAR_ARROW_ACERO_LIBRARY_TARGET}
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${GAR_ARROW_INCLUDE_DIR}
- IMPORTED_LOCATION ${GAR_ARROW_ACERO_STATIC_LIB})
- endif()
- set(GAR_ARROW_COMPUTE_LIBRARY_TARGET gar_arrow_compute_static)
- add_library(${GAR_ARROW_COMPUTE_LIBRARY_TARGET} STATIC IMPORTED)
- set_target_properties(${GAR_ARROW_COMPUTE_LIBRARY_TARGET}
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${GAR_ARROW_INCLUDE_DIR}
- IMPORTED_LOCATION ${GAR_ARROW_COMPUTE_STATIC_LIB})
+ file(MAKE_DIRECTORY "${GAR_ARROW_INCLUDE_DIR}")
+ add_library(${GAR_ARROW_LIBRARY_TARGET} STATIC IMPORTED)
+ add_library(${GAR_PARQUET_LIBRARY_TARGET} STATIC IMPORTED)
+ add_library(${GAR_DATASET_LIBRARY_TARGET} STATIC IMPORTED)
+ add_library(${GAR_ARROW_BUNDLED_DEPS_TARGET} STATIC IMPORTED)
+ set_target_properties(${GAR_ARROW_LIBRARY_TARGET}
+ PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
${GAR_ARROW_INCLUDE_DIR}
+ IMPORTED_LOCATION ${GAR_ARROW_STATIC_LIB})
+ set_target_properties(${GAR_PARQUET_LIBRARY_TARGET}
+ PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
${GAR_ARROW_INCLUDE_DIR}
+ IMPORTED_LOCATION ${GAR_PARQUET_STATIC_LIB})
+ set_target_properties(${GAR_DATASET_LIBRARY_TARGET}
+ PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
${GAR_ARROW_INCLUDE_DIR}
+ IMPORTED_LOCATION ${GAR_DATASET_STATIC_LIB})
+ set_target_properties(${GAR_ARROW_BUNDLED_DEPS_TARGET}
+ PROPERTIES IMPORTED_LOCATION
${GAR_ARROW_BUNDLED_DEPS_STATIC_LIB})
+ if(ARROW_VERSION_TO_BUILD GREATER_EQUAL "12.0.0")
+ set(GAR_ARROW_ACERO_STATIC_LIB_FILENAME
+
"${CMAKE_STATIC_LIBRARY_PREFIX}arrow_acero${CMAKE_STATIC_LIBRARY_SUFFIX}")
+ set(GAR_ARROW_ACERO_STATIC_LIB
+
"${GAR_ARROW_STATIC_LIBRARY_DIR}/${GAR_ARROW_ACERO_STATIC_LIB_FILENAME}"
+ CACHE INTERNAL "acero lib")
+ set(GAR_ARROW_ACERO_LIBRARY_TARGET gar_acero_static)
+ add_library(${GAR_ARROW_ACERO_LIBRARY_TARGET} STATIC IMPORTED)
+ set_target_properties(${GAR_ARROW_ACERO_LIBRARY_TARGET}
+ PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
+ ${GAR_ARROW_INCLUDE_DIR}
+ IMPORTED_LOCATION
${GAR_ARROW_ACERO_STATIC_LIB})
+ endif()
+ set(GAR_ARROW_COMPUTE_LIBRARY_TARGET gar_arrow_compute_static)
+ add_library(${GAR_ARROW_COMPUTE_LIBRARY_TARGET} STATIC IMPORTED)
+ set_target_properties(${GAR_ARROW_COMPUTE_LIBRARY_TARGET}
+ PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
${GAR_ARROW_INCLUDE_DIR}
+ IMPORTED_LOCATION
${GAR_ARROW_COMPUTE_STATIC_LIB})
- add_dependencies(${GAR_ARROW_LIBRARY_TARGET} arrow_ep)
-endfunction()
\ No newline at end of file
+ add_dependencies(${GAR_ARROW_LIBRARY_TARGET} arrow_ep)
+endfunction()
diff --git a/cpp/examples/CMakeLists.txt b/cpp/examples/CMakeLists.txt
index 6a214333..518c507d 100644
--- a/cpp/examples/CMakeLists.txt
+++ b/cpp/examples/CMakeLists.txt
@@ -17,53 +17,61 @@
find_package(Boost REQUIRED COMPONENTS graph)
-file(GLOB EXAMPLE_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/*.cc")
+file(GLOB EXAMPLE_FILES
+ RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
+ "${CMAKE_CURRENT_SOURCE_DIR}/*.cc")
foreach(f ${EXAMPLE_FILES})
- string(REGEX MATCH "^(.*)\\.[^.]*$" dummy ${f})
- set(E_NAME ${CMAKE_MATCH_1})
- message(STATUS "Found example - " ${E_NAME})
- add_executable(${E_NAME} ${E_NAME}.cc)
- target_include_directories(${E_NAME} PRIVATE
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${PROJECT_SOURCE_DIR}/thirdparty
- )
- target_include_directories(${E_NAME} SYSTEM PRIVATE ${Boost_INCLUDE_DIRS})
- target_link_libraries(${E_NAME} PRIVATE graphar ${Boost_LIBRARIES}
${CMAKE_DL_LIBS})
-
- if(BUILD_ARROW_FROM_SOURCE)
- target_include_directories(${E_NAME} SYSTEM BEFORE PRIVATE
${GAR_ARROW_INCLUDE_DIR})
- if(APPLE)
- target_link_libraries(${E_NAME} PRIVATE -Wl,-force_load
${GAR_ARROW_STATIC_LIB}
- "${GAR_PARQUET_STATIC_LIB}"
- "${GAR_ARROW_BUNDLED_DEPS_STATIC_LIB}"
- protobuf::libprotobuf
- "-framework CoreFoundation"
- "-framework Security"
- "-framework Network")
- else()
- target_link_libraries(${E_NAME} PRIVATE -Wl,--exclude-libs,ALL
-Wl,--whole-archive ${GAR_ARROW_STATIC_LIB}
- "${GAR_PARQUET_STATIC_LIB}"
- "${GAR_ARROW_BUNDLED_DEPS_STATIC_LIB}" -Wl,--no-whole-archive)
- endif()
+ string(REGEX MATCH "^(.*)\\.[^.]*$" dummy ${f})
+ set(E_NAME ${CMAKE_MATCH_1})
+ message(STATUS "Found example - " ${E_NAME})
+ add_executable(${E_NAME} ${E_NAME}.cc)
+ target_include_directories(${E_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+
${PROJECT_SOURCE_DIR}/thirdparty)
+ target_include_directories(${E_NAME} SYSTEM PRIVATE ${Boost_INCLUDE_DIRS})
+ target_link_libraries(${E_NAME} PRIVATE graphar ${Boost_LIBRARIES}
${CMAKE_DL_LIBS})
+
+ if(BUILD_ARROW_FROM_SOURCE)
+ target_include_directories(${E_NAME} SYSTEM BEFORE PRIVATE
${GAR_ARROW_INCLUDE_DIR})
+ if(APPLE)
+ target_link_libraries(${E_NAME}
+ PRIVATE -Wl,-force_load
+ ${GAR_ARROW_STATIC_LIB}
+ "${GAR_PARQUET_STATIC_LIB}"
+ "${GAR_ARROW_BUNDLED_DEPS_STATIC_LIB}"
+ protobuf::libprotobuf
+ "-framework CoreFoundation"
+ "-framework Security"
+ "-framework Network")
+ else()
+ target_link_libraries(${E_NAME}
+ PRIVATE -Wl,--exclude-libs,ALL
+ -Wl,--whole-archive
+ ${GAR_ARROW_STATIC_LIB}
+ "${GAR_PARQUET_STATIC_LIB}"
+ "${GAR_ARROW_BUNDLED_DEPS_STATIC_LIB}"
+ -Wl,--no-whole-archive)
+ endif()
+ else()
+ if(APPLE)
+ if(USE_STATIC_ARROW)
+ target_link_libraries(${E_NAME} PRIVATE -Wl,-force_load
Arrow::arrow_static
+ Parquet::parquet_static)
+ else()
+ target_link_libraries(${E_NAME} PRIVATE Arrow::arrow_shared
+ Parquet::parquet_shared)
+ endif()
else()
- if(APPLE)
- if(USE_STATIC_ARROW)
- target_link_libraries(${E_NAME} PRIVATE -Wl,-force_load
- Arrow::arrow_static
- Parquet::parquet_static)
- else()
- target_link_libraries(${E_NAME} PRIVATE Arrow::arrow_shared
- Parquet::parquet_shared)
- endif()
- else()
- if(USE_STATIC_ARROW)
- target_link_libraries(${E_NAME} PRIVATE -Wl,--exclude-libs,ALL
-Wl,--whole-archive
- Arrow::arrow_static
- Parquet::parquet_static -Wl,--no-whole-archive)
- else()
- target_link_libraries(${E_NAME} PRIVATE Arrow::arrow_shared
- Parquet::parquet_shared)
- endif()
- endif()
+ if(USE_STATIC_ARROW)
+ target_link_libraries(${E_NAME}
+ PRIVATE -Wl,--exclude-libs,ALL
+ -Wl,--whole-archive
+ Arrow::arrow_static
+ Parquet::parquet_static
+ -Wl,--no-whole-archive)
+ else()
+ target_link_libraries(${E_NAME} PRIVATE Arrow::arrow_shared
+ Parquet::parquet_shared)
+ endif()
endif()
+ endif()
endforeach()
diff --git a/cpp/graphar-config-version.in.cmake
b/cpp/graphar-config-version.in.cmake
index 9e6f1cce..f2141302 100644
--- a/cpp/graphar-config-version.in.cmake
+++ b/cpp/graphar-config-version.in.cmake
@@ -22,7 +22,7 @@ if("${PACKAGE_VERSION}" VERSION_LESS
"${PACKAGE_FIND_VERSION}")
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
set(PACKAGE_VERSION_COMPATIBLE TRUE)
- if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
+ if("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()
diff --git a/cpp/src/CMakeLists.txt b/cpp/src/CMakeLists.txt
index c4c35120..b82d38a7 100644
--- a/cpp/src/CMakeLists.txt
+++ b/cpp/src/CMakeLists.txt
@@ -15,124 +15,137 @@
# specific language governing permissions and limitations
# under the License.
-file(GLOB_RECURSE THIRDPARTY_SRC_FILES
${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty/mini-yaml/yaml/*.cpp)
+file(GLOB_RECURSE THIRDPARTY_SRC_FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty/mini-yaml/yaml/*.cpp)
add_library(graphar_thirdparty STATIC ${THIRDPARTY_SRC_FILES})
-target_include_directories(graphar_thirdparty PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty)
+target_include_directories(graphar_thirdparty
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty)
target_compile_features(graphar_thirdparty PRIVATE cxx_std_17)
if(NOT MSVC)
- target_compile_options(graphar_thirdparty PRIVATE -fPIC -w)
+ target_compile_options(graphar_thirdparty PRIVATE -fPIC -w)
endif()
file(GLOB_RECURSE CORE_SRC_FILES "graphar/*.cc")
if(GRAPHAR_BUILD_STATIC)
- add_library(graphar STATIC ${CORE_SRC_FILES})
+ add_library(graphar STATIC ${CORE_SRC_FILES})
else()
- add_library(graphar SHARED ${CORE_SRC_FILES})
+ add_library(graphar SHARED ${CORE_SRC_FILES})
endif()
install(TARGETS graphar graphar_thirdparty
EXPORT graphar-targets
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
- INCLUDES DESTINATION include
-)
+ INCLUDES
+ DESTINATION include)
target_compile_features(graphar PRIVATE cxx_std_${GAR_CXX_STANDARD})
target_include_directories(graphar PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty)
if(GRAPHAR_BUILD_STATIC)
- target_link_libraries(graphar PUBLIC graphar_thirdparty ${CMAKE_DL_LIBS})
+ target_link_libraries(graphar PUBLIC graphar_thirdparty ${CMAKE_DL_LIBS})
else()
- target_link_libraries(graphar PRIVATE graphar_thirdparty ${CMAKE_DL_LIBS})
+ target_link_libraries(graphar PRIVATE graphar_thirdparty ${CMAKE_DL_LIBS})
endif()
if(BUILD_ARROW_FROM_SOURCE)
- target_include_directories(graphar SYSTEM BEFORE PRIVATE
${GAR_ARROW_INCLUDE_DIR})
+ target_include_directories(graphar SYSTEM BEFORE PRIVATE
${GAR_ARROW_INCLUDE_DIR})
- set(GAR_BUNDLED_DEPS_STATIC_LIBS)
- list(APPEND GAR_BUNDLED_DEPS_STATIC_LIBS
- gar_arrow_static
- gar_arrow_compute_static
- gar_parquet_static
- gar_dataset_static
- gar_acero_static
- gar_arrow_bundled_dependencies_static)
- graphar_car(_FIRST_LIB ${GAR_BUNDLED_DEPS_STATIC_LIBS})
- graphar_cdr(_OTHER_LIBS ${GAR_BUNDLED_DEPS_STATIC_LIBS})
+ set(GAR_BUNDLED_DEPS_STATIC_LIBS)
+ list(APPEND
+ GAR_BUNDLED_DEPS_STATIC_LIBS
+ gar_arrow_static
+ gar_arrow_compute_static
+ gar_parquet_static
+ gar_dataset_static
+ gar_acero_static
+ gar_arrow_bundled_dependencies_static)
+ graphar_car(_FIRST_LIB ${GAR_BUNDLED_DEPS_STATIC_LIBS})
+ graphar_cdr(_OTHER_LIBS ${GAR_BUNDLED_DEPS_STATIC_LIBS})
- graphar_create_merged_static_lib(graphar_bundled_dependencies
- NAME
- graphar_bundled_dependencies
- ROOT
- ${_FIRST_LIB}
- TO_MERGE
- ${_OTHER_LIBS})
- get_target_property(graphar_bundled_dependencies_path
graphar_bundled_dependencies
- IMPORTED_LOCATION)
- install(FILES ${CMAKE_BINARY_DIR}/${graphar_bundled_dependencies_path}
${INSTALL_IS_OPTIONAL}
- DESTINATION ${CMAKE_INSTALL_LIBDIR})
- string(APPEND ARROW_PC_LIBS_PRIVATE " -lgraphar_bundled_dependencies")
- list(INSERT ARROW_STATIC_INSTALL_INTERFACE_LIBS 0
"graphar_bundled_dependencies")
+ graphar_create_merged_static_lib(
+ graphar_bundled_dependencies
+ NAME
+ graphar_bundled_dependencies
+ ROOT
+ ${_FIRST_LIB}
+ TO_MERGE
+ ${_OTHER_LIBS})
+ get_target_property(graphar_bundled_dependencies_path
graphar_bundled_dependencies
+ IMPORTED_LOCATION)
+ install(FILES ${CMAKE_BINARY_DIR}/${graphar_bundled_dependencies_path}
+ ${INSTALL_IS_OPTIONAL} DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ string(APPEND ARROW_PC_LIBS_PRIVATE " -lgraphar_bundled_dependencies")
+ list(INSERT ARROW_STATIC_INSTALL_INTERFACE_LIBS 0
"graphar_bundled_dependencies")
- if(APPLE)
- find_package(Protobuf REQUIRED)
- target_link_libraries(graphar PRIVATE -Wl,-force_load
- graphar_bundled_dependencies
- protobuf::libprotobuf
- "-framework CoreFoundation"
- "-framework Security"
- "-framework Network")
- elseif(MSVC)
- target_link_libraries(graphar PRIVATE graphar_bundled_dependencies)
- else()
- target_link_libraries(graphar PRIVATE -Wl,--exclude-libs,ALL
- graphar_bundled_dependencies)
- endif()
+ if(APPLE)
+ find_package(Protobuf REQUIRED)
+ target_link_libraries(graphar
+ PRIVATE -Wl,-force_load
+ graphar_bundled_dependencies
+ protobuf::libprotobuf
+ "-framework CoreFoundation"
+ "-framework Security"
+ "-framework Network")
+ elseif(MSVC)
+ target_link_libraries(graphar PRIVATE graphar_bundled_dependencies)
+ else()
+ target_link_libraries(graphar PRIVATE -Wl,--exclude-libs,ALL
+ graphar_bundled_dependencies)
+ endif()
- if(OPENSSL_FOUND)
- target_link_libraries(graphar PUBLIC OpenSSL::SSL)
+ if(OPENSSL_FOUND)
+ target_link_libraries(graphar PUBLIC OpenSSL::SSL)
+ endif()
+ if(CURL_FOUND)
+ target_link_libraries(graphar PUBLIC ${CURL_LIBRARIES})
+ endif()
+else()
+ if(APPLE)
+ if(USE_STATIC_ARROW)
+ target_link_libraries(graphar
+ PRIVATE -Wl,-force_load
+ Arrow::arrow_static
+ Parquet::parquet_static
+ ArrowDataset::arrow_dataset_static
+ ArrowAcero::arrow_acero_static)
+ else()
+ target_link_libraries(graphar
+ PRIVATE -Wl,-force_load
+ Arrow::arrow_shared
+ Parquet::parquet_shared
+ ArrowDataset::arrow_dataset_shared
+ ArrowAcero::arrow_acero_shared)
endif()
- if(CURL_FOUND)
- target_link_libraries(graphar PUBLIC ${CURL_LIBRARIES})
+ elseif(MSVC)
+ if(USE_STATIC_ARROW)
+ target_link_libraries(graphar
+ PRIVATE Arrow::arrow_static Parquet::parquet_static
+ ArrowDataset::arrow_dataset_static
+ ArrowAcero::arrow_acero_static)
+ else()
+ target_link_libraries(graphar
+ PRIVATE Arrow::arrow_shared Parquet::parquet_shared
+ ArrowDataset::arrow_dataset_shared
+ ArrowAcero::arrow_acero_shared)
endif()
-else()
- if(APPLE)
- if(USE_STATIC_ARROW)
- target_link_libraries(graphar PRIVATE -Wl,-force_load
- Arrow::arrow_static
- Parquet::parquet_static
- ArrowDataset::arrow_dataset_static
- ArrowAcero::arrow_acero_static)
- else()
- target_link_libraries(graphar PRIVATE -Wl,-force_load
Arrow::arrow_shared
- Parquet::parquet_shared
- ArrowDataset::arrow_dataset_shared
- ArrowAcero::arrow_acero_shared)
- endif()
- elseif(MSVC)
- if(USE_STATIC_ARROW)
- target_link_libraries(graphar PRIVATE
- Arrow::arrow_static
- Parquet::parquet_static
- ArrowDataset::arrow_dataset_static
- ArrowAcero::arrow_acero_static)
- else()
- target_link_libraries(graphar PRIVATE
- Arrow::arrow_shared
- Parquet::parquet_shared
- ArrowDataset::arrow_dataset_shared
- ArrowAcero::arrow_acero_shared)
- endif()
+ else()
+ if(USE_STATIC_ARROW)
+ target_link_libraries(graphar
+ PRIVATE -Wl,--exclude-libs,ALL
+ -Wl,--whole-archive
+ Arrow::arrow_static
+ Parquet::parquet_static
+ ArrowDataset::arrow_dataset_static
+ ArrowAcero::arrow_acero_static
+ -Wl,--no-whole-archive)
else()
- if(USE_STATIC_ARROW)
- target_link_libraries(graphar PRIVATE -Wl,--exclude-libs,ALL
-Wl,--whole-archive
- Arrow::arrow_static
- Parquet::parquet_static
- ArrowDataset::arrow_dataset_static
- ArrowAcero::arrow_acero_static -Wl,--no-whole-archive)
- else()
- target_link_libraries(graphar PRIVATE -Wl,--exclude-libs,ALL
-Wl,--whole-archive Arrow::arrow_shared
- Parquet::parquet_shared
- ArrowDataset::arrow_dataset_shared
- ArrowAcero::arrow_acero_shared -Wl,--no-whole-archive)
- endif()
+ target_link_libraries(graphar
+ PRIVATE -Wl,--exclude-libs,ALL
+ -Wl,--whole-archive
+ Arrow::arrow_shared
+ Parquet::parquet_shared
+ ArrowDataset::arrow_dataset_shared
+ ArrowAcero::arrow_acero_shared
+ -Wl,--no-whole-archive)
endif()
+ endif()
endif()
diff --git a/cpp/test/CMakeLists.txt b/cpp/test/CMakeLists.txt
index 35f25ce0..827b50b8 100644
--- a/cpp/test/CMakeLists.txt
+++ b/cpp/test/CMakeLists.txt
@@ -18,59 +18,71 @@
find_package(Catch2 3 REQUIRED)
macro(add_graphar_test target)
- set(options)
- set(oneValueArgs)
- set(multiValueArgs SRCS)
- cmake_parse_arguments(add_test "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN})
- add_executable(${target} ${add_test_SRCS})
- target_compile_features(${target} PRIVATE cxx_std_${GAR_CXX_STANDARD})
- target_include_directories(${target} PRIVATE
- ${PROJECT_SOURCE_DIR}/thirdparty
- ${PROJECT_SOURCE_DIR}/include
-
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/thirdparty/Catch2/single_include>
- )
- target_link_libraries(${target} PRIVATE Catch2::Catch2WithMain graphar
${CMAKE_DL_LIBS})
-
- if(BUILD_ARROW_FROM_SOURCE)
- target_include_directories(${target} SYSTEM BEFORE PRIVATE
${GAR_ARROW_INCLUDE_DIR})
- if(APPLE)
- target_link_libraries(${target} PRIVATE -Wl,-force_load
gar_arrow_static
- "${GAR_PARQUET_STATIC_LIB}"
- "${GAR_ARROW_BUNDLED_DEPS_STATIC_LIB}"
- protobuf::libprotobuf
- "-framework CoreFoundation"
- "-framework Security"
- "-framework Network")
- else()
- target_link_libraries(${target} PRIVATE -Wl,--exclude-libs,ALL
-Wl,--whole-archive gar_arrow_static
- "${GAR_PARQUET_STATIC_LIB}"
- "${GAR_ARROW_BUNDLED_DEPS_STATIC_LIB}" -Wl,--no-whole-archive)
- endif()
+ set(options)
+ set(oneValueArgs)
+ set(multiValueArgs SRCS)
+ cmake_parse_arguments(add_test
+ "${options}"
+ "${oneValueArgs}"
+ "${multiValueArgs}"
+ ${ARGN})
+ add_executable(${target} ${add_test_SRCS})
+ target_compile_features(${target} PRIVATE cxx_std_${GAR_CXX_STANDARD})
+ target_include_directories(${target}
+ PRIVATE ${PROJECT_SOURCE_DIR}/thirdparty
+ ${PROJECT_SOURCE_DIR}/include
+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/thirdparty/Catch2/single_include>
+ )
+ target_link_libraries(${target} PRIVATE Catch2::Catch2WithMain graphar
${CMAKE_DL_LIBS})
+
+ if(BUILD_ARROW_FROM_SOURCE)
+ target_include_directories(${target} SYSTEM BEFORE PRIVATE
${GAR_ARROW_INCLUDE_DIR})
+ if(APPLE)
+ target_link_libraries(${target}
+ PRIVATE -Wl,-force_load
+ gar_arrow_static
+ "${GAR_PARQUET_STATIC_LIB}"
+ "${GAR_ARROW_BUNDLED_DEPS_STATIC_LIB}"
+ protobuf::libprotobuf
+ "-framework CoreFoundation"
+ "-framework Security"
+ "-framework Network")
+ else()
+ target_link_libraries(${target}
+ PRIVATE -Wl,--exclude-libs,ALL
+ -Wl,--whole-archive
+ gar_arrow_static
+ "${GAR_PARQUET_STATIC_LIB}"
+ "${GAR_ARROW_BUNDLED_DEPS_STATIC_LIB}"
+ -Wl,--no-whole-archive)
+ endif()
+ else()
+ if(APPLE)
+ if(USE_STATIC_ARROW)
+ target_link_libraries(${target} PRIVATE -Wl,-force_load
Arrow::arrow_static
+ Parquet::parquet_static)
+ else()
+ target_link_libraries(${target} PRIVATE Arrow::arrow_shared
+ Parquet::parquet_shared)
+ endif()
else()
- if(APPLE)
- if(USE_STATIC_ARROW)
- target_link_libraries(${target} PRIVATE -Wl,-force_load
- Arrow::arrow_static
- Parquet::parquet_static)
- else()
- target_link_libraries(${target} PRIVATE Arrow::arrow_shared
- Parquet::parquet_shared)
- endif()
- else()
- if(USE_STATIC_ARROW)
- target_link_libraries(${target} PRIVATE -Wl,--exclude-libs,ALL
-Wl,--whole-archive
- Arrow::arrow_static
- Parquet::parquet_static -Wl,--no-whole-archive)
- else()
- target_link_libraries(${target} PRIVATE Arrow::arrow_shared
- Parquet::parquet_shared)
- endif()
- endif()
+ if(USE_STATIC_ARROW)
+ target_link_libraries(${target}
+ PRIVATE -Wl,--exclude-libs,ALL
+ -Wl,--whole-archive
+ Arrow::arrow_static
+ Parquet::parquet_static
+ -Wl,--no-whole-archive)
+ else()
+ target_link_libraries(${target} PRIVATE Arrow::arrow_shared
+ Parquet::parquet_shared)
+ endif()
endif()
-
- include(CTest)
- include(Catch)
- catch_discover_tests(${target})
+ endif()
+
+ include(CTest)
+ include(Catch)
+ catch_discover_tests(${target})
endmacro()
add_graphar_test(test_info SRCS test_info.cc)
diff --git a/maven-projects/java/CMakeLists.txt
b/maven-projects/java/CMakeLists.txt
index c6e66daf..40a46060 100644
--- a/maven-projects/java/CMakeLists.txt
+++ b/maven-projects/java/CMakeLists.txt
@@ -18,16 +18,23 @@
cmake_minimum_required(VERSION 3.6)
project(gar-java)
-option(BUILD_GAR_CPP "Build GraphAr C++ library with specific version by
default, run mvn with `-DbuildGarCPP=OFF` to turn off" ON)
+option(BUILD_GAR_CPP
+ "Build GraphAr C++ library with specific version by default, run mvn
with `-DbuildGarCPP=OFF` to turn off"
+ ON)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -g -std=c++17 -Wall")
# set auto-generated JNI code and handwriting JNI code as source files
-file(GLOB SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/target/generated-sources/annotations/*.cc"
-
"${CMAKE_CURRENT_SOURCE_DIR}/target/generated-test-sources/test-annotations/*.cc"
- "${CMAKE_CURRENT_SOURCE_DIR}/src/main/cpp/ffi/*.cc")
+file(GLOB
+ SOURCES
+ "${CMAKE_CURRENT_SOURCE_DIR}/target/generated-sources/annotations/*.cc"
+
"${CMAKE_CURRENT_SOURCE_DIR}/target/generated-test-sources/test-annotations/*.cc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/main/cpp/ffi/*.cc")
# remove auto-generated JNI code for specific method cause we have handwriting
JNI code for it
-list(REMOVE_ITEM SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/target/generated-sources/annotations/jni_org_apache_graphar_arrow_ArrowTable_Static_cxx_0x58c7409.cc")
+list(REMOVE_ITEM
+ SOURCES
+
"${CMAKE_CURRENT_SOURCE_DIR}/target/generated-sources/annotations/jni_org_apache_graphar_arrow_ArrowTable_Static_cxx_0x58c7409.cc"
+)
set(LIBNAME "graphar-jni")
@@ -45,14 +52,14 @@ find_package(Arrow REQUIRED)
add_library(${LIBNAME} SHARED ${SOURCES})
# build GraphAr C++ library or link system installed GraphAr C++ library
if(${BUILD_GAR_CPP})
- include(graphar-cpp)
- build_graphar_cpp()
- target_link_libraries(${LIBNAME} ${CMAKE_JNI_LINKER_FLAGS} graphar)
- # include graphar-cpp headers
- target_include_directories(${LIBNAME} SYSTEM BEFORE PRIVATE
${GAR_INCLUDE_DIR})
+ include(graphar-cpp)
+ build_graphar_cpp()
+ target_link_libraries(${LIBNAME} ${CMAKE_JNI_LINKER_FLAGS} graphar)
+ # include graphar-cpp headers
+ target_include_directories(${LIBNAME} SYSTEM BEFORE PRIVATE
${GAR_INCLUDE_DIR})
else()
- find_package(graphar REQUIRED)
- target_link_libraries(${LIBNAME} ${CMAKE_JNI_LINKER_FLAGS} graphar)
+ find_package(graphar REQUIRED)
+ target_link_libraries(${LIBNAME} ${CMAKE_JNI_LINKER_FLAGS} graphar)
endif()
target_link_libraries(${LIBNAME} ${CMAKE_JNI_LINKER_FLAGS} Arrow::arrow_shared)
@@ -61,9 +68,14 @@ set_target_properties(${LIBNAME} PROPERTIES LINKER_LANGUAGE
CXX)
# post generated files to target directory
add_custom_command(TARGET ${LIBNAME}
POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${LIBNAME}>
"${CMAKE_CURRENT_SOURCE_DIR}/target/classes/")
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${LIBNAME}>
+ "${CMAKE_CURRENT_SOURCE_DIR}/target/classes/")
add_custom_command(TARGET ${LIBNAME}
POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E make_directory
${CMAKE_CURRENT_SOURCE_DIR}/target/native/bitcode
- COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_OBJECTS:${LIBNAME}> ${CMAKE_CURRENT_SOURCE_DIR}/target/native/bitcode
COMMAND_EXPAND_LISTS)
\ No newline at end of file
+ COMMAND ${CMAKE_COMMAND} -E make_directory
+ ${CMAKE_CURRENT_SOURCE_DIR}/target/native/bitcode
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ $<TARGET_OBJECTS:${LIBNAME}>
+ ${CMAKE_CURRENT_SOURCE_DIR}/target/native/bitcode
+ COMMAND_EXPAND_LISTS)
diff --git a/maven-projects/java/cmake/graphar-cpp.cmake
b/maven-projects/java/cmake/graphar-cpp.cmake
index 7f305908..cc620b8a 100644
--- a/maven-projects/java/cmake/graphar-cpp.cmake
+++ b/maven-projects/java/cmake/graphar-cpp.cmake
@@ -35,56 +35,59 @@
# This cmake file is referred and derived from
# https://github.com/apache/arrow/blob/master/matlab/CMakeLists.txt
-
# Build the GraphAr C++ libraries.
function(build_graphar_cpp)
- set(one_value_args)
- set(multi_value_args)
+ set(one_value_args)
+ set(multi_value_args)
- cmake_parse_arguments(ARG
- "${options}"
- "${one_value_args}"
- "${multi_value_args}"
- ${ARGN})
- if (ARG_UNPARSED_ARGUMENTS)
- message(SEND_ERROR "Error: unrecognized arguments:
${ARG_UNPARSED_ARGUMENTS}")
- endif ()
+ cmake_parse_arguments(ARG
+ "${options}"
+ "${one_value_args}"
+ "${multi_value_args}"
+ ${ARGN})
+ if(ARG_UNPARSED_ARGUMENTS)
+ message(SEND_ERROR "Error: unrecognized arguments:
${ARG_UNPARSED_ARGUMENTS}")
+ endif()
- # If GraphAr needs to be built, the default location will be within the
build tree.
- set(GAR_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/graphar_ep-prefix")
+ # If GraphAr needs to be built, the default location will be within the
build tree.
+ set(GAR_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/graphar_ep-prefix")
- set(GAR_SHARED_LIBRARY_DIR "${GAR_PREFIX}/lib")
+ set(GAR_SHARED_LIBRARY_DIR "${GAR_PREFIX}/lib")
- set(GAR_SHARED_LIB_FILENAME
-
"${CMAKE_SHARED_LIBRARY_PREFIX}graphar${CMAKE_SHARED_LIBRARY_SUFFIX}")
- set(GAR_SHARED_LIB "${GAR_SHARED_LIBRARY_DIR}/${GAR_SHARED_LIB_FILENAME}"
CACHE INTERNAL "graphar cpp lib")
+ set(GAR_SHARED_LIB_FILENAME
+ "${CMAKE_SHARED_LIBRARY_PREFIX}graphar${CMAKE_SHARED_LIBRARY_SUFFIX}")
+ set(GAR_SHARED_LIB
+ "${GAR_SHARED_LIBRARY_DIR}/${GAR_SHARED_LIB_FILENAME}"
+ CACHE INTERNAL "graphar cpp lib")
- set(GAR_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/graphar_ep-build")
- set(GAR_CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${GAR_PREFIX}")
+ set(GAR_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/graphar_ep-build")
+ set(GAR_CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${GAR_PREFIX}")
- set(GAR_INCLUDE_DIR "${GAR_PREFIX}/include" CACHE INTERNAL "graphar cpp
include directory")
- set(GAR_BUILD_BYPRODUCTS "${GAR_SHARED_LIB}")
+ set(GAR_INCLUDE_DIR
+ "${GAR_PREFIX}/include"
+ CACHE INTERNAL "graphar cpp include directory")
+ set(GAR_BUILD_BYPRODUCTS "${GAR_SHARED_LIB}")
- set(GAR_VERSION_TO_BUILD "v0.12.0")
+ set(GAR_VERSION_TO_BUILD "v0.12.0")
- include(ExternalProject)
- ExternalProject_Add(graphar_ep
- GIT_REPOSITORY https://github.com/apache/incubator-graphar.git
- GIT_TAG ${GAR_VERSION_TO_BUILD}
- GIT_SHALLOW TRUE
- GIT_SUBMODULES ""
- SOURCE_SUBDIR cpp
- BINARY_DIR "${GAR_BINARY_DIR}"
- CMAKE_ARGS "${GAR_CMAKE_ARGS}"
- BUILD_BYPRODUCTS "${GAR_BUILD_BYPRODUCTS}")
+ include(ExternalProject)
+ externalproject_add(graphar_ep
+ GIT_REPOSITORY
https://github.com/apache/incubator-graphar.git
+ GIT_TAG ${GAR_VERSION_TO_BUILD}
+ GIT_SHALLOW TRUE
+ GIT_SUBMODULES ""
+ SOURCE_SUBDIR cpp
+ BINARY_DIR "${GAR_BINARY_DIR}"
+ CMAKE_ARGS "${GAR_CMAKE_ARGS}"
+ BUILD_BYPRODUCTS "${GAR_BUILD_BYPRODUCTS}")
- set(GAR_LIBRARY_TARGET graphar)
+ set(GAR_LIBRARY_TARGET graphar)
- file(MAKE_DIRECTORY "${GAR_INCLUDE_DIR}")
- add_library(${GAR_LIBRARY_TARGET} SHARED IMPORTED)
- set_target_properties(${GAR_LIBRARY_TARGET}
- PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${GAR_INCLUDE_DIR}
- IMPORTED_LOCATION ${GAR_SHARED_LIB})
+ file(MAKE_DIRECTORY "${GAR_INCLUDE_DIR}")
+ add_library(${GAR_LIBRARY_TARGET} SHARED IMPORTED)
+ set_target_properties(${GAR_LIBRARY_TARGET}
+ PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
${GAR_INCLUDE_DIR}
+ IMPORTED_LOCATION ${GAR_SHARED_LIB})
- add_dependencies(${GAR_LIBRARY_TARGET} graphar_ep)
+ add_dependencies(${GAR_LIBRARY_TARGET} graphar_ep)
endfunction()
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index 8c51edb5..acbcf70f 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -21,10 +21,9 @@ cmake_minimum_required(VERSION 3.15)
# Scikit-build-core sets these values for you, or you can just hard-code the
# name and version.
-project(
- ${SKBUILD_PROJECT_NAME}
- VERSION ${SKBUILD_PROJECT_VERSION}
- LANGUAGES CXX)
+project(${SKBUILD_PROJECT_NAME}
+ VERSION ${SKBUILD_PROJECT_VERSION}
+ LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
@@ -36,15 +35,18 @@ if(EXISTS
"${CMAKE_CURRENT_SOURCE_DIR}/_bundled_cpp/CMakeLists.txt")
elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../cpp/CMakeLists.txt")
set(GRAPHAR_CPP_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../cpp")
else()
- message(FATAL_ERROR "GraphAr C++ sources not found. Expected either
'_bundled_cpp/' or '../cpp/'.")
+ message(FATAL_ERROR "GraphAr C++ sources not found. Expected either
'_bundled_cpp/' or '../cpp/'."
+ )
endif()
# Verify that the expected subdirectories exist before adding the C++ sources.
if(NOT EXISTS "${GRAPHAR_CPP_SOURCE_DIR}/src")
- message(FATAL_ERROR "GraphAr C++ sources are missing the 'src' directory
under '${GRAPHAR_CPP_SOURCE_DIR}'.")
+ message(FATAL_ERROR "GraphAr C++ sources are missing the 'src' directory
under '${GRAPHAR_CPP_SOURCE_DIR}'."
+ )
endif()
if(NOT EXISTS "${GRAPHAR_CPP_SOURCE_DIR}/thirdparty")
- message(FATAL_ERROR "GraphAr C++ sources are missing the 'thirdparty'
directory under '${GRAPHAR_CPP_SOURCE_DIR}'.")
+ message(FATAL_ERROR "GraphAr C++ sources are missing the 'thirdparty'
directory under '${GRAPHAR_CPP_SOURCE_DIR}'."
+ )
endif()
add_subdirectory(${GRAPHAR_CPP_SOURCE_DIR} ${CMAKE_BINARY_DIR}/graphar)
@@ -65,7 +67,8 @@ if(APPLE)
# directories to LC_RPATH so deallocate can find and copy them.
set(_graphar_macos_rpaths "")
- foreach(_tgt IN ITEMS Arrow::arrow_shared ArrowDataset::arrow_dataset_shared
ArrowAcero::arrow_acero_shared Parquet::parquet_shared)
+ foreach(_tgt IN ITEMS Arrow::arrow_shared ArrowDataset::arrow_dataset_shared
+ ArrowAcero::arrow_acero_shared Parquet::parquet_shared)
if(TARGET ${_tgt})
get_target_property(_loc ${_tgt} IMPORTED_LOCATION_RELEASE)
if(NOT _loc)
@@ -81,24 +84,31 @@ if(APPLE)
list(REMOVE_DUPLICATES _graphar_macos_rpaths)
endif()
# Check if ORC is enabled.
-if (NOT ${ARROW_ORC})
- message(WARNING "apache-arrow is built without ORC extension, ORC related
functionalities will be disabled.")
+if(NOT ${ARROW_ORC})
+ message(WARNING "apache-arrow is built without ORC extension, ORC related
functionalities will be disabled."
+ )
else()
- add_definitions(-DARROW_ORC) # Add macro, otherwise inconsistent in build
phase on ubuntu.
+ add_definitions(-DARROW_ORC
+ )# Add macro, otherwise inconsistent in build phase on ubuntu.
endif()
# Add a library using FindPython's tooling (pybind11 also provides a helper
like
# this)
-python_add_library(_core MODULE src/bindings/types_binding.cc
- src/bindings/cli_binding.cc
- src/bindings/graph_info_binding.cc
- src/bindings/high_level_binding.cc
- src/bindings/_core_module.cc WITH_SOABI)
-
-target_link_libraries(_core PRIVATE pybind11::headers graphar
Arrow::arrow_shared
- Parquet::parquet_shared
- ArrowDataset::arrow_dataset_shared
- ArrowAcero::arrow_acero_shared
- )
+python_add_library(_core
+ MODULE
+ src/bindings/types_binding.cc
+ src/bindings/cli_binding.cc
+ src/bindings/graph_info_binding.cc
+ src/bindings/high_level_binding.cc
+ src/bindings/_core_module.cc
+ WITH_SOABI)
+
+target_link_libraries(_core
+ PRIVATE pybind11::headers
+ graphar
+ Arrow::arrow_shared
+ Parquet::parquet_shared
+ ArrowDataset::arrow_dataset_shared
+ ArrowAcero::arrow_acero_shared)
target_include_directories(_core PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
target_include_directories(_core PRIVATE ${GRAPHAR_CPP_SOURCE_DIR}/src)
target_include_directories(_core PRIVATE ${GRAPHAR_CPP_SOURCE_DIR}/thirdparty)
@@ -123,7 +133,8 @@ if(APPLE)
if(TARGET graphar)
set_target_properties(graphar PROPERTIES BUILD_WITH_INSTALL_RPATH ON)
if(_graphar_macos_rpaths)
- set_target_properties(graphar PROPERTIES INSTALL_RPATH
"${_graphar_macos_rpaths_joined}")
+ set_target_properties(graphar PROPERTIES INSTALL_RPATH
+
"${_graphar_macos_rpaths_joined}")
endif()
endif()
else()
@@ -133,4 +144,4 @@ endif()
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/cli/ DESTINATION cli)
install(TARGETS graphar DESTINATION graphar)
-install(TARGETS _core DESTINATION graphar)
\ No newline at end of file
+install(TARGETS _core DESTINATION graphar)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]