This is an automated email from the ASF dual-hosted git repository.
paleolimbot pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-nanoarrow.git
The following commit(s) were added to refs/heads/main by this push:
new 55df0600 fix: allow linking a shared flatccrt (#949)
55df0600 is described below
commit 55df06001d6c13294642fa3b741ac4e316553b3e
Author: Daeho Ro <[email protected]>
AuthorDate: Thu Oct 22 12:08:46 2026 +0900
fix: allow linking a shared flatccrt (#949)
When flatcc is provided via NANOARROW_FLATCC_ROOT_DIR or
NANOARROW_FLATCC_LIB_DIR, prefer a static flatccrt as before but fall
back to a shared one when no static library is available.
Closes #922.
---
CMakeLists.txt | 35 ++++++++++++++++++++++++++---------
1 file changed, 26 insertions(+), 9 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 848b933e..919da6b4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -218,25 +218,42 @@ if(NANOARROW_IPC)
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
elseif(NOT NANOARROW_FLATCC_ROOT_DIR)
- add_library(flatccrt STATIC IMPORTED)
+ # Prefer a static flatccrt but fall back to a shared one
+ find_library(NANOARROW_FLATCC_LIBRARY
+ NAMES
"${CMAKE_STATIC_LIBRARY_PREFIX}flatccrt${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ flatccrt
+ PATHS "${NANOARROW_FLATCC_LIB_DIR}"
+ NO_DEFAULT_PATH REQUIRED)
+ add_library(flatccrt UNKNOWN IMPORTED)
set_target_properties(flatccrt
- PROPERTIES IMPORTED_LOCATION
-
"${NANOARROW_FLATCC_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}flatccrt${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ PROPERTIES IMPORTED_LOCATION
"${NANOARROW_FLATCC_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES
"${NANOARROW_FLATCC_INCLUDE_DIR}")
elseif(NOT NANOARROW_FLATCC_INCLUDE_DIR)
set(NANOARROW_FLATCC_INCLUDE_DIR "${NANOARROW_FLATCC_ROOT_DIR}/include")
- add_library(flatccrt STATIC IMPORTED)
+ # Prefer a static flatccrt but fall back to a shared one
+ find_library(NANOARROW_FLATCC_LIBRARY
+ NAMES
"${CMAKE_STATIC_LIBRARY_PREFIX}flatccrt${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ flatccrt
+ PATHS "${NANOARROW_FLATCC_ROOT_DIR}/lib"
+ NO_DEFAULT_PATH REQUIRED)
+ find_library(NANOARROW_FLATCC_LIBRARY_DEBUG
+ NAMES
"${CMAKE_STATIC_LIBRARY_PREFIX}flatccrt_d${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ flatccrt_d
+ PATHS "${NANOARROW_FLATCC_ROOT_DIR}/debug/lib"
+ NO_DEFAULT_PATH)
+ add_library(flatccrt UNKNOWN IMPORTED)
set_target_properties(flatccrt
- PROPERTIES IMPORTED_LOCATION
-
"${NANOARROW_FLATCC_ROOT_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}flatccrt${CMAKE_STATIC_LIBRARY_SUFFIX}"
- IMPORTED_LOCATION_DEBUG
-
"${NANOARROW_FLATCC_ROOT_DIR}/debug/lib/${CMAKE_STATIC_LIBRARY_PREFIX}flatccrt_d${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ PROPERTIES IMPORTED_LOCATION
"${NANOARROW_FLATCC_LIBRARY}"
IMPORTED_LOCATION_RELEASE
-
"${NANOARROW_FLATCC_ROOT_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}flatccrt${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ "${NANOARROW_FLATCC_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES
"${NANOARROW_FLATCC_INCLUDE_DIR}")
+ if(NANOARROW_FLATCC_LIBRARY_DEBUG)
+ set_target_properties(flatccrt PROPERTIES IMPORTED_LOCATION_DEBUG
+
"${NANOARROW_FLATCC_LIBRARY_DEBUG}")
+ endif()
endif()
if(NANOARROW_IPC_WITH_ZSTD)