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 198f39a9f build(c/driver/sqlite): detect sqlite3_load_extension via 
compile check (#4471)
198f39a9f is described below

commit 198f39a9f0ec3e6965c8f50c0bbf85141e2cc4ab
Author: Fredrik Fornwall <[email protected]>
AuthorDate: Thu Jul 9 05:03:13 2026 +0200

    build(c/driver/sqlite): detect sqlite3_load_extension via compile check 
(#4471)
    
    Closes #4470.
    
    ---------
    
    Signed-off-by: Fredrik Fornwall <[email protected]>
---
 c/driver/sqlite/CMakeLists.txt | 27 +++++++++++++++++++--------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/c/driver/sqlite/CMakeLists.txt b/c/driver/sqlite/CMakeLists.txt
index c67b30201..fcaf74488 100644
--- a/c/driver/sqlite/CMakeLists.txt
+++ b/c/driver/sqlite/CMakeLists.txt
@@ -27,17 +27,28 @@ else()
   # vcpkg
   find_package(unofficial-sqlite3 CONFIG REQUIRED)
   set(SQLite3_LINK_LIBRARIES unofficial::sqlite3::sqlite3)
-  set(SQLite3_INCLUDE_DIRS)
+  get_target_property(SQLite3_INCLUDE_DIRS unofficial::sqlite3::sqlite3
+                      INTERFACE_INCLUDE_DIRECTORIES)
+  if(NOT SQLite3_INCLUDE_DIRS)
+    set(SQLite3_INCLUDE_DIRS)
+  endif()
 endif()
 
-# Check for sqlite3_load_extension() in sqlite3.h
-if(EXISTS "${SQLite3_INCLUDE_DIRS}/sqlite3.h")
-  file(READ "${SQLite3_INCLUDE_DIRS}/sqlite3.h" ADBC_SQLITE_H_CONTENT)
-  string(FIND "${ADBC_SQLITE_H_CONTENT}" "sqlite3_load_extension"
-              ADBC_SQLITE_WITH_LOAD_EXTENSION)
-endif()
+# Check whether sqlite3_load_extension() is declared in sqlite3.h. Compile a
+# static library instead of an executable so no linking happens: imported
+# targets in CMAKE_REQUIRED_LIBRARIES don't propagate into try_compile on
+# older CMake, and only the declaration matters (builds with
+# SQLITE_OMIT_LOAD_EXTENSION, like Apple's system SQLite, omit it).
+include(CheckSymbolExists)
+set(ADBC_SQLITE_SAVED_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE})
+set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+set(CMAKE_REQUIRED_INCLUDES ${SQLite3_INCLUDE_DIRS})
+check_symbol_exists(sqlite3_load_extension "sqlite3.h" 
ADBC_SQLITE_WITH_LOAD_EXTENSION)
+unset(CMAKE_REQUIRED_INCLUDES)
+set(CMAKE_TRY_COMPILE_TARGET_TYPE ${ADBC_SQLITE_SAVED_TRY_COMPILE_TARGET_TYPE})
+unset(ADBC_SQLITE_SAVED_TRY_COMPILE_TARGET_TYPE)
 
-if(ADBC_SQLITE_WITH_LOAD_EXTENSION EQUAL -1)
+if(NOT ADBC_SQLITE_WITH_LOAD_EXTENSION)
   set(ADBC_SQLITE_COMPILE_DEFINES "-DADBC_SQLITE_WITH_NO_LOAD_EXTENSION")
 endif()
 

Reply via email to