You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by li...@apache.org on 2022/06/14 14:31:16 UTC
[arrow-adbc] branch main updated: Fix MacOS build (#15)
This is an automated email from the ASF dual-hosted git repository.
lidavidm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-adbc.git
The following commit(s) were added to refs/heads/main by this push:
new c086d2d Fix MacOS build (#15)
c086d2d is described below
commit c086d2d56ff75ebc225aa6a7e7e7168ea7214dfe
Author: David Li <li...@gmail.com>
AuthorDate: Tue Jun 14 10:31:13 2022 -0400
Fix MacOS build (#15)
* Fix MacOS build/CMake setup
* Specify static link libs too
* Fix static link libs
* Don't require hardcoding driver names
* Fix test setup
---
README.md | 6 +-
adbc_driver_manager/CMakeLists.txt | 6 +-
adbc_driver_manager/adbc_driver_manager.cc | 42 ++++++++-
adbc_driver_manager/adbc_driver_manager_test.cc | 5 +-
cmake_modules/AdbcDefines.cmake | 22 ++---
cmake_modules/BuildUtils.cmake | 55 ++++++------
cmake_modules/DefineOptions.cmake | 111 ++++++++++++------------
cmake_modules/README.md | 3 +
drivers/flight_sql/CMakeLists.txt | 34 +++++---
drivers/sqlite/CMakeLists.txt | 25 +++---
10 files changed, 178 insertions(+), 131 deletions(-)
diff --git a/README.md b/README.md
index a268a0f..89cdf1c 100644
--- a/README.md
+++ b/README.md
@@ -34,6 +34,8 @@ $ cmake ../../adbc_driver_manager
$ make
```
-Some of Arrow's build options are supported:
+Some of Arrow's build options are supported (under a different prefix):
-- `ARROW_BUILD_TESTS`: build the unit tests
+- `ADBC_BUILD_SHARED`, `ADBC_BUILD_STATIC`: build the shared/static libraries
+- `ADBC_BUILD_TESTS`: build the unit tests
+- `ADBC_INSTALL_NAME_RPATH`: set `install_name` to `@rpath` on MacOS
diff --git a/adbc_driver_manager/CMakeLists.txt b/adbc_driver_manager/CMakeLists.txt
index 2a1210c..81887e7 100644
--- a/adbc_driver_manager/CMakeLists.txt
+++ b/adbc_driver_manager/CMakeLists.txt
@@ -24,15 +24,15 @@ include(BuildUtils)
include(DefineOptions)
project(adbc_driver_manager
- VERSION "${ARROW_BASE_VERSION}"
+ VERSION "${ADBC_BASE_VERSION}"
LANGUAGES CXX)
include(CTest)
add_arrow_lib(adbc_driver_manager SOURCES adbc_driver_manager.cc)
include_directories(SYSTEM ${REPOSITORY_ROOT})
-if(ARROW_BUILD_TESTS)
+if(ADBC_BUILD_TESTS)
find_package(Arrow REQUIRED)
- if(ARROW_TEST_LINKAGE STREQUAL "shared")
+ if(ADBC_TEST_LINKAGE STREQUAL "shared")
set(TEST_LINK_LIBS adbc_driver_manager_shared arrow_shared)
else()
set(TEST_LINK_LIBS adbc_driver_manager_static arrow_static)
diff --git a/adbc_driver_manager/adbc_driver_manager.cc b/adbc_driver_manager/adbc_driver_manager.cc
index 2575e2d..7872bdf 100644
--- a/adbc_driver_manager/adbc_driver_manager.cc
+++ b/adbc_driver_manager/adbc_driver_manager.cc
@@ -318,11 +318,47 @@ AdbcStatusCode AdbcLoadDriver(const char* driver_name, const char* entrypoint,
return ADBC_STATUS_INTERNAL; \
}
+ // TODO: handle Windows
+#if defined(__APPLE__)
+ static const std::string kPlatformLibraryPrefix = "lib";
+ static const std::string kPlatformLibrarySuffix = ".dylib";
+#else
+ static const std::string kPlatformLibraryPrefix = "lib";
+ static const std::string kPlatformLibrarySuffix = ".so";
+#endif
+
+ std::string error_message;
+
void* handle = dlopen(driver_name, RTLD_NOW | RTLD_LOCAL);
if (!handle) {
- std::string message = "dlopen() failed: ";
- message += dlerror();
- SetError(error, message);
+ error_message = "dlopen() failed: ";
+ error_message += dlerror();
+
+ // If applicable, append the shared library prefix/extension and
+ // try again (this way you don't have to hardcode driver names by
+ // platform in the application)
+ const std::string driver_str = driver_name;
+
+ std::string full_driver_name;
+ if (driver_str.size() < kPlatformLibraryPrefix.size() ||
+ driver_str.compare(0, kPlatformLibraryPrefix.size(), kPlatformLibraryPrefix) !=
+ 0) {
+ full_driver_name += kPlatformLibraryPrefix;
+ }
+ full_driver_name += driver_name;
+ if (driver_str.size() < kPlatformLibrarySuffix.size() ||
+ driver_str.compare(full_driver_name.size() - kPlatformLibrarySuffix.size(),
+ kPlatformLibrarySuffix.size(), kPlatformLibrarySuffix) != 0) {
+ full_driver_name += kPlatformLibrarySuffix;
+ }
+ handle = dlopen(full_driver_name.c_str(), RTLD_NOW | RTLD_LOCAL);
+ if (!handle) {
+ error_message += "\ndlopen() failed: ";
+ error_message += dlerror();
+ }
+ }
+ if (!handle) {
+ SetError(error, error_message);
return ADBC_STATUS_UNKNOWN;
}
diff --git a/adbc_driver_manager/adbc_driver_manager_test.cc b/adbc_driver_manager/adbc_driver_manager_test.cc
index e2ef8a7..f365101 100644
--- a/adbc_driver_manager/adbc_driver_manager_test.cc
+++ b/adbc_driver_manager/adbc_driver_manager_test.cc
@@ -38,15 +38,14 @@ class DriverManager : public ::testing::Test {
void SetUp() override {
size_t initialized = 0;
ADBC_ASSERT_OK_WITH_ERROR(
- error, AdbcLoadDriver("libadbc_driver_sqlite.so", "AdbcSqliteDriverInit",
+ error, AdbcLoadDriver("adbc_driver_sqlite", "AdbcSqliteDriverInit",
ADBC_VERSION_0_0_1, &driver, &initialized, &error));
ASSERT_EQ(initialized, ADBC_VERSION_0_0_1);
ADBC_ASSERT_OK_WITH_ERROR(error, AdbcDatabaseNew(&database, &error));
ASSERT_NE(database.private_data, nullptr);
ADBC_ASSERT_OK_WITH_ERROR(
- error,
- AdbcDatabaseSetOption(&database, "driver", "libadbc_driver_sqlite.so", &error));
+ error, AdbcDatabaseSetOption(&database, "driver", "adbc_driver_sqlite", &error));
ADBC_ASSERT_OK_WITH_ERROR(
error,
AdbcDatabaseSetOption(&database, "entrypoint", "AdbcSqliteDriverInit", &error));
diff --git a/cmake_modules/AdbcDefines.cmake b/cmake_modules/AdbcDefines.cmake
index 1b4a580..4196e37 100644
--- a/cmake_modules/AdbcDefines.cmake
+++ b/cmake_modules/AdbcDefines.cmake
@@ -20,23 +20,23 @@
enable_language(C)
include(DefineOptions)
-set(ARROW_VERSION "9.0.0-SNAPSHOT")
-set(ARROW_BASE_VERSION "9.0.0")
-set(ARROW_VERSION_MAJOR "9")
-set(ARROW_VERSION_MINOR "0")
-set(ARROW_VERSION_PATCH "0")
+set(ADBC_VERSION "9.0.0-SNAPSHOT")
+set(ADBC_BASE_VERSION "9.0.0")
+set(ADBC_VERSION_MAJOR "9")
+set(ADBC_VERSION_MINOR "0")
+set(ADBC_VERSION_PATCH "0")
-math(EXPR ARROW_SO_VERSION "${ARROW_VERSION_MAJOR} * 100 + ${ARROW_VERSION_MINOR}")
-set(ARROW_FULL_SO_VERSION "${ARROW_SO_VERSION}.${ARROW_VERSION_PATCH}.0")
+math(EXPR ADBC_SO_VERSION "${ADBC_VERSION_MAJOR} * 100 + ${ADBC_VERSION_MINOR}")
+set(ADBC_FULL_SO_VERSION "${ADBC_SO_VERSION}.${ADBC_VERSION_PATCH}.0")
-if(ARROW_DEPENDENCY_SOURCE STREQUAL "CONDA")
+if(ADBC_DEPENDENCY_SOURCE STREQUAL "CONDA")
message(STATUS "Adding \$CONDA_PREFIX to CMAKE_PREFIX_PATH")
list(APPEND CMAKE_PREFIX_PATH "$ENV{CONDA_PREFIX}")
endif()
-if(ARROW_BUILD_TESTS)
- add_custom_target(all-tests)
+add_custom_target(all-tests)
+if(ADBC_BUILD_TESTS)
find_package(GTest)
- set(ARROW_TEST_LINK_LIBS GTest::gtest_main GTest::gtest GTest::gmock)
+ set(ADBC_TEST_LINK_LIBS GTest::gtest_main GTest::gtest GTest::gmock)
set(BUILD_SUPPORT_DIR "${REPOSITORY_ROOT}/ci/build_support")
endif()
diff --git a/cmake_modules/BuildUtils.cmake b/cmake_modules/BuildUtils.cmake
index c153f3a..700d4c1 100644
--- a/cmake_modules/BuildUtils.cmake
+++ b/cmake_modules/BuildUtils.cmake
@@ -18,7 +18,7 @@
# Common path suffixes to be searched by find_library or find_path.
# Windows artifacts may be found under "<root>/Library", so
# search there as well.
-set(ARROW_LIBRARY_PATH_SUFFIXES
+set(ADBC_LIBRARY_PATH_SUFFIXES
"${CMAKE_LIBRARY_ARCHITECTURE}"
"lib/${CMAKE_LIBRARY_ARCHITECTURE}"
"lib64"
@@ -28,7 +28,7 @@ set(ARROW_LIBRARY_PATH_SUFFIXES
"Library"
"Library/lib"
"Library/bin")
-set(ARROW_INCLUDE_PATH_SUFFIXES "include" "Library" "Library/include")
+set(ADBC_INCLUDE_PATH_SUFFIXES "include" "Library" "Library/include")
function(add_thirdparty_lib LIB_NAME LIB_TYPE LIB)
set(options)
@@ -66,7 +66,7 @@ function(add_thirdparty_lib LIB_NAME LIB_TYPE LIB)
endfunction()
function(REUSE_PRECOMPILED_HEADER_LIB TARGET_NAME LIB_NAME)
- if(ARROW_USE_PRECOMPILED_HEADERS)
+ if(ADBC_USE_PRECOMPILED_HEADERS)
target_precompile_headers(${TARGET_NAME} REUSE_FROM ${LIB_NAME})
endif()
endfunction()
@@ -185,16 +185,16 @@ function(ADD_ARROW_LIB LIB_NAME)
set(${ARG_OUTPUTS})
endif()
- # Allow overriding ARROW_BUILD_SHARED and ARROW_BUILD_STATIC
+ # Allow overriding ADBC_BUILD_SHARED and ADBC_BUILD_STATIC
if(DEFINED ARG_BUILD_SHARED)
set(BUILD_SHARED ${ARG_BUILD_SHARED})
else()
- set(BUILD_SHARED ${ARROW_BUILD_SHARED})
+ set(BUILD_SHARED ${ADBC_BUILD_SHARED})
endif()
if(DEFINED ARG_BUILD_STATIC)
set(BUILD_STATIC ${ARG_BUILD_STATIC})
else()
- set(BUILD_STATIC ${ARROW_BUILD_STATIC})
+ set(BUILD_STATIC ${ADBC_BUILD_STATIC})
endif()
if(ARG_OUTPUT_PATH)
set(OUTPUT_PATH ${ARG_OUTPUT_PATH})
@@ -229,7 +229,7 @@ function(ADD_ARROW_LIB LIB_NAME)
if(ARG_PRECOMPILED_HEADER_LIB)
reuse_precompiled_header_lib(${LIB_NAME}_objlib ${ARG_PRECOMPILED_HEADER_LIB})
endif()
- if(ARG_PRECOMPILED_HEADERS AND ARROW_USE_PRECOMPILED_HEADERS)
+ if(ARG_PRECOMPILED_HEADERS AND ADBC_USE_PRECOMPILED_HEADERS)
target_precompile_headers(${LIB_NAME}_objlib PRIVATE ${ARG_PRECOMPILED_HEADERS})
endif()
set(LIB_DEPS $<TARGET_OBJECTS:${LIB_NAME}_objlib>)
@@ -304,8 +304,8 @@ function(ADD_ARROW_LIB LIB_NAME)
PDB_OUTPUT_DIRECTORY "${OUTPUT_PATH}"
LINK_FLAGS "${ARG_SHARED_LINK_FLAGS}"
OUTPUT_NAME ${LIB_NAME}
- VERSION "${ARROW_FULL_SO_VERSION}"
- SOVERSION "${ARROW_SO_VERSION}")
+ VERSION "${ADBC_FULL_SO_VERSION}"
+ SOVERSION "${ADBC_SO_VERSION}")
target_link_libraries(${LIB_NAME}_shared
LINK_PUBLIC
@@ -324,7 +324,7 @@ function(ADD_ARROW_LIB LIB_NAME)
endforeach()
endif()
- if(ARROW_RPATH_ORIGIN)
+ if(ADBC_RPATH_ORIGIN)
if(APPLE)
set(_lib_install_rpath "@loader_path")
else()
@@ -335,7 +335,7 @@ function(ADD_ARROW_LIB LIB_NAME)
endif()
if(APPLE)
- if(ARROW_INSTALL_NAME_RPATH)
+ if(ADBC_INSTALL_NAME_RPATH)
set(_lib_install_name "@rpath")
else()
set(_lib_install_name "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
@@ -383,8 +383,8 @@ function(ADD_ARROW_LIB LIB_NAME)
endif()
if(WIN32)
- target_compile_definitions(${LIB_NAME}_static PUBLIC ARROW_STATIC)
- target_compile_definitions(${LIB_NAME}_static PUBLIC ARROW_FLIGHT_STATIC)
+ target_compile_definitions(${LIB_NAME}_static PUBLIC ADBC_STATIC)
+ target_compile_definitions(${LIB_NAME}_static PUBLIC ADBC_FLIGHT_STATIC)
endif()
set_target_properties(${LIB_NAME}_static
@@ -425,13 +425,13 @@ function(ADD_ARROW_LIB LIB_NAME)
set(TARGETS_CMAKE "${ARG_CMAKE_PACKAGE_NAME}Targets.cmake")
install(EXPORT ${LIB_NAME}_targets
FILE "${TARGETS_CMAKE}"
- DESTINATION "${ARROW_CMAKE_INSTALL_DIR}")
+ DESTINATION "${ADBC_CMAKE_INSTALL_DIR}")
set(CONFIG_CMAKE "${ARG_CMAKE_PACKAGE_NAME}Config.cmake")
set(BUILT_CONFIG_CMAKE "${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_CMAKE}")
configure_package_config_file("${CONFIG_CMAKE}.in" "${BUILT_CONFIG_CMAKE}"
- INSTALL_DESTINATION "${ARROW_CMAKE_INSTALL_DIR}")
- install(FILES "${BUILT_CONFIG_CMAKE}" DESTINATION "${ARROW_CMAKE_INSTALL_DIR}")
+ INSTALL_DESTINATION "${ADBC_CMAKE_INSTALL_DIR}")
+ install(FILES "${BUILT_CONFIG_CMAKE}" DESTINATION "${ADBC_CMAKE_INSTALL_DIR}")
set(CONFIG_VERSION_CMAKE "${ARG_CMAKE_PACKAGE_NAME}ConfigVersion.cmake")
set(BUILT_CONFIG_VERSION_CMAKE "${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_VERSION_CMAKE}")
@@ -439,8 +439,7 @@ function(ADD_ARROW_LIB LIB_NAME)
"${BUILT_CONFIG_VERSION_CMAKE}"
VERSION ${${PROJECT_NAME}_VERSION}
COMPATIBILITY AnyNewerVersion)
- install(FILES "${BUILT_CONFIG_VERSION_CMAKE}"
- DESTINATION "${ARROW_CMAKE_INSTALL_DIR}")
+ install(FILES "${BUILT_CONFIG_VERSION_CMAKE}" DESTINATION "${ADBC_CMAKE_INSTALL_DIR}")
endif()
if(ARG_PKG_CONFIG_NAME)
@@ -525,7 +524,7 @@ function(ADD_BENCHMARK REL_BENCHMARK_NAME)
# Customize link libraries
target_link_libraries(${BENCHMARK_NAME} PRIVATE ${ARG_STATIC_LINK_LIBS})
else()
- target_link_libraries(${BENCHMARK_NAME} PRIVATE ${ARROW_BENCHMARK_LINK_LIBS})
+ target_link_libraries(${BENCHMARK_NAME} PRIVATE ${ADBC_BENCHMARK_LINK_LIBS})
endif()
add_dependencies(benchmark ${BENCHMARK_NAME})
set(NO_COLOR "--color_print=false")
@@ -568,8 +567,8 @@ function(ADD_BENCHMARK REL_BENCHMARK_NAME)
set(ARG_LABELS benchmark)
endif()
- if(ARROW_BUILD_DETAILED_BENCHMARKS)
- target_compile_definitions(${BENCHMARK_NAME} PRIVATE ARROW_BUILD_DETAILED_BENCHMARKS)
+ if(ADBC_BUILD_DETAILED_BENCHMARKS)
+ target_compile_definitions(${BENCHMARK_NAME} PRIVATE ADBC_BUILD_DETAILED_BENCHMARKS)
endif()
add_test(${BENCHMARK_NAME}
@@ -601,7 +600,7 @@ endfunction()
#
# Arguments after the test name will be passed to set_tests_properties().
#
-# \arg ENABLED if passed, add this unit test even if ARROW_BUILD_TESTS is off
+# \arg ENABLED if passed, add this unit test even if ADBC_BUILD_TESTS is off
# \arg PREFIX a string to append to the name of the test executable. For
# example, if you have src/arrow/foo/bar-test.cc, then PREFIX "foo" will create
# test executable foo-bar-test
@@ -671,14 +670,14 @@ function(ADD_TEST_CASE REL_TEST_NAME)
# Customize link libraries
target_link_libraries(${TEST_NAME} PRIVATE ${ARG_STATIC_LINK_LIBS})
else()
- target_link_libraries(${TEST_NAME} PRIVATE ${ARROW_TEST_LINK_LIBS})
+ target_link_libraries(${TEST_NAME} PRIVATE ${ADBC_TEST_LINK_LIBS})
endif()
if(ARG_PRECOMPILED_HEADER_LIB)
reuse_precompiled_header_lib(${TEST_NAME} ${ARG_PRECOMPILED_HEADER_LIB})
endif()
- if(ARG_PRECOMPILED_HEADERS AND ARROW_USE_PRECOMPILED_HEADERS)
+ if(ARG_PRECOMPILED_HEADERS AND ADBC_USE_PRECOMPILED_HEADERS)
target_precompile_headers(${TEST_NAME} PRIVATE ${ARG_PRECOMPILED_HEADERS})
endif()
@@ -694,7 +693,7 @@ function(ADD_TEST_CASE REL_TEST_NAME)
add_dependencies(${TEST_NAME} ${ARG_EXTRA_DEPENDENCIES})
endif()
- if(ARROW_TEST_MEMCHECK AND NOT ARG_NO_VALGRIND)
+ if(ADBC_TEST_MEMCHECK AND NOT ARG_NO_VALGRIND)
add_test(${TEST_NAME}
bash
-c
@@ -801,7 +800,7 @@ function(ADD_ARROW_EXAMPLE REL_EXAMPLE_NAME)
# This example has a corresponding .cc file, set it up as an executable.
set(EXAMPLE_PATH "${EXECUTABLE_OUTPUT_PATH}/${EXAMPLE_NAME}")
add_executable(${EXAMPLE_NAME} "${REL_EXAMPLE_NAME}.cc" ${ARG_EXTRA_SOURCES})
- target_link_libraries(${EXAMPLE_NAME} ${ARROW_EXAMPLE_LINK_LIBS})
+ target_link_libraries(${EXAMPLE_NAME} ${ADBC_EXAMPLE_LINK_LIBS})
add_dependencies(runexample ${EXAMPLE_NAME})
set(NO_COLOR "--color_print=false")
@@ -906,8 +905,8 @@ function(ARROW_ADD_PKG_CONFIG MODULE)
endfunction()
function(ARROW_INSTALL_CMAKE_FIND_MODULE MODULE)
- install(FILES "${ARROW_SOURCE_DIR}/cmake_modules/Find${MODULE}.cmake"
- DESTINATION "${ARROW_CMAKE_INSTALL_DIR}")
+ install(FILES "${ADBC_SOURCE_DIR}/cmake_modules/Find${MODULE}.cmake"
+ DESTINATION "${ADBC_CMAKE_INSTALL_DIR}")
endfunction()
# Implementations of lisp "car" and "cdr" functions
diff --git a/cmake_modules/DefineOptions.cmake b/cmake_modules/DefineOptions.cmake
index 394f76d..cd2c019 100644
--- a/cmake_modules/DefineOptions.cmake
+++ b/cmake_modules/DefineOptions.cmake
@@ -16,8 +16,8 @@
# under the License.
macro(set_option_category name)
- set(ARROW_OPTION_CATEGORY ${name})
- list(APPEND "ARROW_OPTION_CATEGORIES" ${name})
+ set(ADBC_OPTION_CATEGORY ${name})
+ list(APPEND "ADBC_OPTION_CATEGORIES" ${name})
endmacro()
function(check_description_length name description)
@@ -55,7 +55,7 @@ macro(define_option name description default)
option(${name} "${multiline_description}" ${default})
- list(APPEND "ARROW_${ARROW_OPTION_CATEGORY}_OPTION_NAMES" ${name})
+ list(APPEND "ADBC_${ADBC_OPTION_CATEGORY}_OPTION_NAMES" ${name})
set("${name}_OPTION_DESCRIPTION" ${description})
set("${name}_OPTION_DEFAULT" ${default})
set("${name}_OPTION_TYPE" "bool")
@@ -69,7 +69,7 @@ macro(define_option_string name description default)
${default}
CACHE STRING "${multiline_description}")
- list(APPEND "ARROW_${ARROW_OPTION_CATEGORY}_OPTION_NAMES" ${name})
+ list(APPEND "ADBC_${ADBC_OPTION_CATEGORY}_OPTION_NAMES" ${name})
set("${name}_OPTION_DESCRIPTION" ${description})
set("${name}_OPTION_DEFAULT" "\"${default}\"")
set("${name}_OPTION_TYPE" "string")
@@ -86,88 +86,86 @@ if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
#----------------------------------------------------------------------
set_option_category("Compile and link")
- define_option_string(ARROW_CXXFLAGS "Compiler flags to append when compiling Arrow" "")
+ define_option_string(ADBC_CXXFLAGS "Compiler flags to append when compiling Arrow" "")
- define_option(ARROW_BUILD_STATIC "Build static libraries" ON)
+ define_option(ADBC_BUILD_STATIC "Build static libraries" ON)
- define_option(ARROW_BUILD_SHARED "Build shared libraries" ON)
+ define_option(ADBC_BUILD_SHARED "Build shared libraries" ON)
- define_option_string(ARROW_PACKAGE_KIND
+ define_option_string(ADBC_PACKAGE_KIND
"Arbitrary string that identifies the kind of package;\
(for informational purposes)" "")
- define_option_string(ARROW_GIT_ID "The Arrow git commit id (if any)" "")
+ define_option_string(ADBC_GIT_ID "The Arrow git commit id (if any)" "")
- define_option_string(ARROW_GIT_DESCRIPTION "The Arrow git commit description (if any)"
+ define_option_string(ADBC_GIT_DESCRIPTION "The Arrow git commit description (if any)"
"")
- define_option(ARROW_NO_DEPRECATED_API "Exclude deprecated APIs from build" OFF)
+ define_option(ADBC_NO_DEPRECATED_API "Exclude deprecated APIs from build" OFF)
- define_option(ARROW_USE_CCACHE "Use ccache when compiling (if available)" ON)
+ define_option(ADBC_USE_CCACHE "Use ccache when compiling (if available)" ON)
- define_option(ARROW_USE_PRECOMPILED_HEADERS "Use precompiled headers when compiling"
- OFF)
+ define_option(ADBC_USE_PRECOMPILED_HEADERS "Use precompiled headers when compiling" OFF)
# Arm64 architectures and extensions can lead to exploding combinations.
# So set it directly through cmake command line.
#
# If you change this, you need to change the definition in
# python/CMakeLists.txt too.
- define_option_string(ARROW_ARMV8_ARCH
+ define_option_string(ADBC_ARMV8_ARCH
"Arm64 arch and extensions"
"armv8-a" # Default
"armv8-a"
"armv8-a+crc+crypto")
- define_option(ARROW_ALTIVEC "Build with Altivec if compiler has support" ON)
+ define_option(ADBC_ALTIVEC "Build with Altivec if compiler has support" ON)
- define_option(ARROW_RPATH_ORIGIN "Build Arrow libraries with RATH set to \$ORIGIN" OFF)
+ define_option(ADBC_RPATH_ORIGIN "Build Arrow libraries with RATH set to \$ORIGIN" OFF)
- define_option(ARROW_INSTALL_NAME_RPATH
+ define_option(ADBC_INSTALL_NAME_RPATH
"Build Arrow libraries with install_name set to @rpath" ON)
- define_option(ARROW_GGDB_DEBUG "Pass -ggdb flag to debug builds" ON)
+ define_option(ADBC_GGDB_DEBUG "Pass -ggdb flag to debug builds" ON)
#----------------------------------------------------------------------
set_option_category("Test and benchmark")
- define_option(ARROW_BUILD_EXAMPLES "Build the Arrow examples" OFF)
+ define_option(ADBC_BUILD_EXAMPLES "Build the Arrow examples" OFF)
- define_option(ARROW_BUILD_TESTS "Build the Arrow googletest unit tests" OFF)
+ define_option(ADBC_BUILD_TESTS "Build the Arrow googletest unit tests" OFF)
- define_option(ARROW_BUILD_INTEGRATION "Build the Arrow integration test executables"
- OFF)
+ define_option(ADBC_BUILD_INTEGRATION "Build the Arrow integration test executables" OFF)
- define_option(ARROW_BUILD_BENCHMARKS "Build the Arrow micro benchmarks" OFF)
+ define_option(ADBC_BUILD_BENCHMARKS "Build the Arrow micro benchmarks" OFF)
- if(ARROW_BUILD_SHARED)
- set(ARROW_TEST_LINKAGE_DEFAULT "shared")
+ if(ADBC_BUILD_SHARED)
+ set(ADBC_TEST_LINKAGE_DEFAULT "shared")
else()
- set(ARROW_TEST_LINKAGE_DEFAULT "static")
+ set(ADBC_TEST_LINKAGE_DEFAULT "static")
endif()
- define_option_string(ARROW_TEST_LINKAGE
+ define_option_string(ADBC_TEST_LINKAGE
"Linkage of Arrow libraries with unit tests executables."
- "${ARROW_TEST_LINKAGE_DEFAULT}"
+ "${ADBC_TEST_LINKAGE_DEFAULT}"
"shared"
"static")
#----------------------------------------------------------------------
set_option_category("Lint")
- define_option(ARROW_GENERATE_COVERAGE "Build with C++ code coverage enabled" OFF)
+ define_option(ADBC_GENERATE_COVERAGE "Build with C++ code coverage enabled" OFF)
#----------------------------------------------------------------------
set_option_category("Checks")
- define_option(ARROW_TEST_MEMCHECK "Run the test suite using valgrind --tool=memcheck"
+ define_option(ADBC_TEST_MEMCHECK "Run the test suite using valgrind --tool=memcheck"
OFF)
- define_option(ARROW_USE_ASAN "Enable Address Sanitizer checks" OFF)
+ define_option(ADBC_USE_ASAN "Enable Address Sanitizer checks" OFF)
- define_option(ARROW_USE_TSAN "Enable Thread Sanitizer checks" OFF)
+ define_option(ADBC_USE_TSAN "Enable Thread Sanitizer checks" OFF)
- define_option(ARROW_USE_UBSAN "Enable Undefined Behavior sanitizer checks" OFF)
+ define_option(ADBC_USE_UBSAN "Enable Undefined Behavior sanitizer checks" OFF)
#----------------------------------------------------------------------
set_option_category("Thirdparty toolchain")
@@ -185,22 +183,22 @@ if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
# $NAME_ROOT arguments to CMake, or set environment variables for the same
# with CMake 3.11 and higher. If your system packages are in a non-default
# location, or if you are using a non-standard toolchain, you can also pass
- # ARROW_PACKAGE_PREFIX to set the *_ROOT variables to look in that
+ # ADBC_PACKAGE_PREFIX to set the *_ROOT variables to look in that
# directory
# * CONDA: Same as SYSTEM but set all *_ROOT variables to
# ENV{CONDA_PREFIX}. If this is run within an active conda environment,
# then ENV{CONDA_PREFIX} will be used for dependencies unless
- # ARROW_DEPENDENCY_SOURCE is set explicitly to one of the other options
+ # ADBC_DEPENDENCY_SOURCE is set explicitly to one of the other options
# * VCPKG: Searches for dependencies installed by vcpkg.
# * BREW: Use SYSTEM but search for select packages with brew.
if(NOT "$ENV{CONDA_PREFIX}" STREQUAL "")
- set(ARROW_DEPENDENCY_SOURCE_DEFAULT "CONDA")
+ set(ADBC_DEPENDENCY_SOURCE_DEFAULT "CONDA")
else()
- set(ARROW_DEPENDENCY_SOURCE_DEFAULT "AUTO")
+ set(ADBC_DEPENDENCY_SOURCE_DEFAULT "AUTO")
endif()
- define_option_string(ARROW_DEPENDENCY_SOURCE
+ define_option_string(ADBC_DEPENDENCY_SOURCE
"Method to use for acquiring arrow's build dependencies"
- "${ARROW_DEPENDENCY_SOURCE_DEFAULT}"
+ "${ADBC_DEPENDENCY_SOURCE_DEFAULT}"
"AUTO"
"BUNDLED"
"SYSTEM"
@@ -216,19 +214,18 @@ if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
"Pass verbose linking options when linking libraries and executables"
OFF)
- define_option(ARROW_USE_STATIC_CRT "Build Arrow with statically linked CRT" OFF)
+ define_option(ADBC_USE_STATIC_CRT "Build Arrow with statically linked CRT" OFF)
endif()
#----------------------------------------------------------------------
set_option_category("Advanced developer")
- option(ARROW_BUILD_CONFIG_SUMMARY_JSON "Summarize build configuration in a JSON file"
- ON)
+ option(ADBC_BUILD_CONFIG_SUMMARY_JSON "Summarize build configuration in a JSON file" ON)
endif()
macro(validate_config)
- foreach(category ${ARROW_OPTION_CATEGORIES})
- set(option_names ${ARROW_${category}_OPTION_NAMES})
+ foreach(category ${ADBC_OPTION_CATEGORIES})
+ set(option_names ${ADBC_${category}_OPTION_NAMES})
foreach(name ${option_names})
set(possible_values ${${name}_OPTION_POSSIBLE_VALUES})
@@ -246,7 +243,7 @@ endmacro()
macro(config_summary_message)
message(STATUS "---------------------------------------------------------------------")
- message(STATUS "Arrow version: ${ARROW_VERSION}")
+ message(STATUS "Arrow version: ${ADBC_VERSION}")
message(STATUS)
message(STATUS "Build configuration summary:")
@@ -259,13 +256,13 @@ macro(config_summary_message)
)
endif()
- foreach(category ${ARROW_OPTION_CATEGORIES})
+ foreach(category ${ADBC_OPTION_CATEGORIES})
message(STATUS)
message(STATUS "${category} options:")
message(STATUS)
- set(option_names ${ARROW_${category}_OPTION_NAMES})
+ set(option_names ${ADBC_${category}_OPTION_NAMES})
foreach(name ${option_names})
set(value "${${name}}")
@@ -296,8 +293,8 @@ macro(config_summary_json)
message(STATUS " Outputting build configuration summary to ${summary}")
file(WRITE ${summary} "{\n")
- foreach(category ${ARROW_OPTION_CATEGORIES})
- foreach(name ${ARROW_${category}_OPTION_NAMES})
+ foreach(category ${ADBC_OPTION_CATEGORIES})
+ foreach(name ${ADBC_${category}_OPTION_NAMES})
file(APPEND ${summary} "\"${name}\": \"${${name}}\",\n")
endforeach()
endforeach()
@@ -310,16 +307,16 @@ macro(config_summary_json)
"\"${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json\",\n")
endif()
file(APPEND ${summary} "\"install_prefix\": \"${CMAKE_INSTALL_PREFIX}\",\n")
- file(APPEND ${summary} "\"arrow_version\": \"${ARROW_VERSION}\"\n")
+ file(APPEND ${summary} "\"arrow_version\": \"${ADBC_VERSION}\"\n")
file(APPEND ${summary} "}\n")
endmacro()
macro(config_summary_cmake_setters path)
file(WRITE ${path} "# Options used to build arrow:")
- foreach(category ${ARROW_OPTION_CATEGORIES})
+ foreach(category ${ADBC_OPTION_CATEGORIES})
file(APPEND ${path} "\n\n## ${category} options:")
- foreach(name ${ARROW_${category}_OPTION_NAMES})
+ foreach(name ${ADBC_${category}_OPTION_NAMES})
set(description ${${name}_OPTION_DESCRIPTION})
foreach(description_line ${description})
file(APPEND ${path} "\n### ${description_line}")
@@ -333,16 +330,16 @@ endmacro()
#----------------------------------------------------------------------
# Compute default values for omitted variables
-if(NOT ARROW_GIT_ID)
+if(NOT ADBC_GIT_ID)
execute_process(COMMAND "git" "log" "-n1" "--format=%H"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- OUTPUT_VARIABLE ARROW_GIT_ID
+ OUTPUT_VARIABLE ADBC_GIT_ID
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
-if(NOT ARROW_GIT_DESCRIPTION)
+if(NOT ADBC_GIT_DESCRIPTION)
execute_process(COMMAND "git" "describe" "--tags" "--dirty"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
ERROR_QUIET
- OUTPUT_VARIABLE ARROW_GIT_DESCRIPTION
+ OUTPUT_VARIABLE ADBC_GIT_DESCRIPTION
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
diff --git a/cmake_modules/README.md b/cmake_modules/README.md
index 9e726c4..45d7726 100644
--- a/cmake_modules/README.md
+++ b/cmake_modules/README.md
@@ -3,4 +3,7 @@
Common CMake utilities taken from Apache Arrow. These should be kept
in sync with Arrow upstream without modification. Exceptions:
+- All flags were renamed to avoid colliding with Arrow flags (since
+ ArrowOptions.cmake will also define these options when
+ `find_package(Arrow)`).
- DefineOptions.cmake has different flags.
diff --git a/drivers/flight_sql/CMakeLists.txt b/drivers/flight_sql/CMakeLists.txt
index 9cc03ba..0841a9e 100644
--- a/drivers/flight_sql/CMakeLists.txt
+++ b/drivers/flight_sql/CMakeLists.txt
@@ -22,7 +22,7 @@ include(AdbcDefines)
include(BuildUtils)
project(adbc_driver_flight_sql
- VERSION "${ARROW_BASE_VERSION}"
+ VERSION "${ADBC_BASE_VERSION}"
LANGUAGES CXX)
find_package(Arrow REQUIRED)
@@ -37,22 +37,28 @@ add_arrow_lib(adbc_driver_flight_sql
SHARED_LINK_LIBS
arrow_flight_sql_shared
arrow_flight_shared
- arrow_shared)
+ arrow_shared
+ STATIC_LINK_LIBS
+ arrow_flight_sql_static
+ arrow_flight_static
+ arrow_static)
include_directories(SYSTEM ${REPOSITORY_ROOT})
-if(ARROW_TEST_LINKAGE STREQUAL "shared")
- set(TEST_LINK_LIBS adbc_driver_flight_sql_shared)
-else()
- set(TEST_LINK_LIBS adbc_driver_flight_sql_static)
-endif()
+if(ADBC_BUILD_TESTS)
+ if(ADBC_TEST_LINKAGE STREQUAL "shared")
+ set(TEST_LINK_LIBS adbc_driver_flight_sql_shared)
+ else()
+ set(TEST_LINK_LIBS adbc_driver_flight_sql_static)
+ endif()
-add_test_case(driver_flight_sql_test
- PREFIX
- adbc
- SOURCES
- flight_sql_test.cc
- EXTRA_LINK_LIBS
- ${TEST_LINK_LIBS})
+ add_test_case(driver_flight_sql_test
+ PREFIX
+ adbc
+ SOURCES
+ flight_sql_test.cc
+ EXTRA_LINK_LIBS
+ ${TEST_LINK_LIBS})
+endif()
validate_config()
config_summary_message()
diff --git a/drivers/sqlite/CMakeLists.txt b/drivers/sqlite/CMakeLists.txt
index f7335e7..11b1b72 100644
--- a/drivers/sqlite/CMakeLists.txt
+++ b/drivers/sqlite/CMakeLists.txt
@@ -22,7 +22,7 @@ include(AdbcDefines)
include(BuildUtils)
project(adbc_driver_sqlite
- VERSION "${ARROW_BASE_VERSION}"
+ VERSION "${ADBC_BASE_VERSION}"
LANGUAGES CXX)
include(CTest)
@@ -34,23 +34,28 @@ add_arrow_lib(adbc_driver_sqlite
sqlite.cc
SHARED_LINK_LIBS
SQLite::SQLite3
- arrow_shared)
+ arrow_shared
+ STATIC_LINK_LIBS
+ SQLite::SQLite3
+ arrow_static)
include_directories(SYSTEM ${REPOSITORY_ROOT})
include_directories(SYSTEM ${SQLite3_INCLUDE_DIRS})
-if(ARROW_TEST_LINKAGE STREQUAL "shared")
+if(ADBC_TEST_LINKAGE STREQUAL "shared")
set(TEST_LINK_LIBS adbc_driver_sqlite_shared)
else()
set(TEST_LINK_LIBS adbc_driver_sqlite_static)
endif()
-add_test_case(driver_sqlite_test
- PREFIX
- adbc
- SOURCES
- sqlite_test.cc
- EXTRA_LINK_LIBS
- ${TEST_LINK_LIBS})
+if(ADBC_BUILD_TESTS)
+ add_test_case(driver_sqlite_test
+ PREFIX
+ adbc
+ SOURCES
+ sqlite_test.cc
+ EXTRA_LINK_LIBS
+ ${TEST_LINK_LIBS})
+endif()
validate_config()
config_summary_message()