diff --git a/src/binding/c/CMakeLists.txt b/src/binding/c/CMakeLists.txt index ef99a6d47..7dd658537 100644 --- a/src/binding/c/CMakeLists.txt +++ b/src/binding/c/CMakeLists.txt @@ -221,6 +221,82 @@ target_compile_options(zvec_c_api PRIVATE $<$:-Wall -Wextra -Wpedantic> ) +if(APPLE) + add_library(zvec_c_api_static_objects OBJECT + ${ZVEC_C_API_SOURCES} + ${ZVEC_C_API_HEADERS} + ) + + set_target_properties(zvec_c_api_static_objects PROPERTIES + POSITION_INDEPENDENT_CODE ON + CXX_VISIBILITY_PRESET hidden + VISIBILITY_INLINES_HIDDEN ON + ) + + target_include_directories(zvec_c_api_static_objects + PUBLIC + $ + $ + $ + PRIVATE + ${PROJECT_SOURCE_DIR}/src + ) + + target_compile_options(zvec_c_api_static_objects PRIVATE + $<$:-Wall -Wextra -Wpedantic> + $<$:-Wall -Wextra -Wpedantic> + ) + + set(ZVEC_C_API_STATIC_ARCHIVE ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/libzvec_c_api.a) + add_custom_command( + OUTPUT ${ZVEC_C_API_STATIC_ARCHIVE} + COMMAND /usr/bin/libtool -static -o ${ZVEC_C_API_STATIC_ARCHIVE} + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + DEPENDS + zvec_c_api_static_objects + zvec_db + zvec_core + zvec_ailego + zvec_turbo + Arrow::parquet_static + glog + gflags_nothreads_static + roaring + rocksdb + lz4 + antlr4_static + libprotobuf + FastPFOR + Arrow::arrow_dataset + Arrow::arrow_acero + Arrow::arrow_compute + Arrow::arrow_static + Arrow::arrow_depends + COMMENT "Creating fat static C API archive libzvec_c_api.a" + VERBATIM + ) + + add_custom_target(zvec_c_api_static ALL DEPENDS ${ZVEC_C_API_STATIC_ARCHIVE}) +endif() + # Strip symbols in release builds to reduce library size if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") if(UNIX AND NOT APPLE) @@ -250,6 +326,12 @@ install(TARGETS zvec_c_api INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) +if(APPLE) + install(FILES ${ZVEC_C_API_STATIC_ARCHIVE} + DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) +endif() + # Install headers install(FILES ${PROJECT_SOURCE_DIR}/src/include/zvec/c_api.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/zvec diff --git a/thirdparty/lz4/CMakeLists.txt b/thirdparty/lz4/CMakeLists.txt index d7d4bab87..6e029fbf0 100644 --- a/thirdparty/lz4/CMakeLists.txt +++ b/thirdparty/lz4/CMakeLists.txt @@ -84,7 +84,15 @@ elseif(IOS) "CFLAGS=${_lz4_cflags}" ) else() - list(APPEND _lz4_env "CFLAGS=-fPIC") + list(APPEND _lz4_env + "CC=${CMAKE_C_COMPILER}" + "AR=${CMAKE_AR}" + "RANLIB=${CMAKE_RANLIB}" + "CFLAGS=-fPIC" + ) + if(APPLE AND CMAKE_OSX_SYSROOT) + list(APPEND _lz4_env "SDKROOT=${CMAKE_OSX_SYSROOT}") + endif() endif() if(MSVC)