diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e9d498..70414b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -410,7 +410,6 @@ option(EXTENSION_STATIC_BUILD FALSE) if(WIN32 OR ZOS) - set(EXTENSION_STATIC_BUILD TRUE) add_definitions(-D_SILENCE_ALL_MS_EXT_DEPRECATION_WARNINGS=1) endif() @@ -857,6 +856,7 @@ if (NOT EXTENSION_CONFIG_BUILD AND NOT ${EXTENSION_TESTS_ONLY} AND NOT CLANG_TID message(STATUS "Extensions will be deployed to: ${LOCAL_EXTENSION_REPO_DIR}") endif() endif() +set_target_properties(duckdb_local_extension_repo PROPERTIES EXCLUDE_FROM_ALL 1) function(build_loadable_extension_directory NAME ABI_TYPE OUTPUT_DIRECTORY EXTENSION_VERSION CAPI_VERSION PARAMETERS) set(TARGET_NAME ${NAME}_loadable_extension) @@ -875,6 +875,8 @@ function(build_loadable_extension_directory NAME ABI_TYPE OUTPUT_DIRECTORY EXTEN if(EMSCRIPTEN) add_library(${TARGET_NAME} STATIC ${FILES}) + elseif(WIN32) + add_library(${TARGET_NAME} MODULE ${FILES}) else() add_library(${TARGET_NAME} SHARED ${FILES}) endif() diff --git a/DuckDBConfig.cmake.in b/DuckDBConfig.cmake.in index 7c5ce31..dcf5ada 100644 --- a/DuckDBConfig.cmake.in +++ b/DuckDBConfig.cmake.in @@ -9,6 +9,22 @@ find_dependency(Threads) if(NOT @WITH_INTERNAL_ICU@) find_dependency(ICU COMPONENTS i18n uc data) endif() +if(NOT "@BUILD_SHARED_LIBS@") + set(z_vcpkg_duckdb_extensions_names "@DUCKDB_EXTENSION_NAMES@") + if("excel" IN_LIST z_vcpkg_duckdb_extensions_names) + find_dependency(EXPAT) + find_dependency(ZLIB) + find_dependency(minizip-ng CONFIG) + endif() + if("httpfs" IN_LIST z_vcpkg_duckdb_extensions_names) + find_dependency(CURL) + find_dependency(OpenSSL) + if(MINGW) + find_dependency(ZLIB) + endif() + endif() + unset(z_vcpkg_duckdb_extensions_names) +endif() # Compute paths get_filename_component(DuckDB_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) @@ -18,7 +34,7 @@ if(NOT TARGET duckdb AND NOT DuckDB_BINARY_DIR) include("${DuckDB_CMAKE_DIR}/DuckDBExports.cmake") endif() -if(DuckDB_USE_STATIC_LIBS) +if(NOT "@BUILD_SHARED_LIBS@") set(DuckDB_LIBRARIES duckdb_static) else() set(DuckDB_LIBRARIES duckdb) diff --git a/extension/autocomplete/CMakeLists.txt b/extension/autocomplete/CMakeLists.txt index 544e65a..a8e1e43 100644 --- a/extension/autocomplete/CMakeLists.txt +++ b/extension/autocomplete/CMakeLists.txt @@ -13,6 +13,10 @@ set(PARAMETERS "-warnings") build_loadable_extension(autocomplete ${PARAMETERS} ${AUTOCOMPLETE_EXTENSION_FILES}) +set_target_properties(autocomplete_loadable_extension PROPERTIES EXCLUDE_FROM_ALL 1) +if(BUILD_SHARED_LIBS) + return() +endif() install( TARGETS autocomplete_extension EXPORT "${DUCKDB_EXPORT_SET}" diff --git a/extension/core_functions/CMakeLists.txt b/extension/core_functions/CMakeLists.txt index c97cd77..0827683 100644 --- a/extension/core_functions/CMakeLists.txt +++ b/extension/core_functions/CMakeLists.txt @@ -14,6 +14,10 @@ set(PARAMETERS "-warnings") build_loadable_extension(core_functions ${PARAMETERS} ${CORE_FUNCTION_FILES}) target_link_libraries(core_functions_loadable_extension duckdb_skiplistlib) +set_target_properties(core_functions_loadable_extension PROPERTIES EXCLUDE_FROM_ALL 1) +if(BUILD_SHARED_LIBS) + return() +endif() install( TARGETS core_functions_extension EXPORT "${DUCKDB_EXPORT_SET}" diff --git a/extension/icu/CMakeLists.txt b/extension/icu/CMakeLists.txt index a5bb58a..8edff2b 100644 --- a/extension/icu/CMakeLists.txt +++ b/extension/icu/CMakeLists.txt @@ -42,6 +42,11 @@ build_loadable_extension(icu ${PARAMETERS} ${ICU_EXTENSION_FILES}) if(NOT WITH_INTERNAL_ICU) target_link_libraries(icu_loadable_extension ICU::i18n ICU::uc ICU::data) endif() + +set_target_properties(icu_loadable_extension PROPERTIES EXCLUDE_FROM_ALL 1) +if(BUILD_SHARED_LIBS) + return() +endif() install( TARGETS icu_extension EXPORT "${DUCKDB_EXPORT_SET}" diff --git a/extension/jemalloc/CMakeLists.txt b/extension/jemalloc/CMakeLists.txt index 38be497..75cb8fb 100644 --- a/extension/jemalloc/CMakeLists.txt +++ b/extension/jemalloc/CMakeLists.txt @@ -12,6 +12,9 @@ set(JEMALLOC_EXTENSION_FILES jemalloc_extension.cpp ${JEMALLOC_OBJECT_FILES}) build_static_extension(jemalloc ${JEMALLOC_EXTENSION_FILES}) # we do not do build_loadable_extension here because jemalloc is static-only +if(BUILD_SHARED_LIBS) + return() +endif() install( TARGETS jemalloc_extension EXPORT "${DUCKDB_EXPORT_SET}" diff --git a/extension/json/CMakeLists.txt b/extension/json/CMakeLists.txt index 80b4af4..81055de 100644 --- a/extension/json/CMakeLists.txt +++ b/extension/json/CMakeLists.txt @@ -41,6 +41,10 @@ set(PARAMETERS "-warnings") build_loadable_extension(json ${PARAMETERS} ${JSON_EXTENSION_FILES}) target_link_libraries(json_loadable_extension duckdb_yyjson) +set_target_properties(json_loadable_extension PROPERTIES EXCLUDE_FROM_ALL 1) +if(BUILD_SHARED_LIBS) + return() +endif() install( TARGETS json_extension EXPORT "${DUCKDB_EXPORT_SET}" diff --git a/extension/parquet/CMakeLists.txt b/extension/parquet/CMakeLists.txt index a8335d8..ef2ea3f 100644 --- a/extension/parquet/CMakeLists.txt +++ b/extension/parquet/CMakeLists.txt @@ -82,6 +82,10 @@ set(PARAMETERS "-warnings") build_loadable_extension(parquet ${PARAMETERS} ${PARQUET_EXTENSION_FILES}) target_link_libraries(parquet_loadable_extension duckdb_mbedtls duckdb_zstd) +set_target_properties(parquet_loadable_extension PROPERTIES EXCLUDE_FROM_ALL 1) +if(BUILD_SHARED_LIBS) + return() +endif() install( TARGETS parquet_extension EXPORT "${DUCKDB_EXPORT_SET}" diff --git a/extension/tpcds/CMakeLists.txt b/extension/tpcds/CMakeLists.txt index 6ec4cb8..db51141 100644 --- a/extension/tpcds/CMakeLists.txt +++ b/extension/tpcds/CMakeLists.txt @@ -11,6 +11,10 @@ set(PARAMETERS "-warnings") build_loadable_extension(tpcds ${PARAMETERS} tpcds_extension.cpp ${DSDGEN_OBJECT_FILES}) +set_target_properties(tpcds_loadable_extension PROPERTIES EXCLUDE_FROM_ALL 1) +if(BUILD_SHARED_LIBS) + return() +endif() install( TARGETS tpcds_extension EXPORT "${DUCKDB_EXPORT_SET}" diff --git a/extension/tpch/CMakeLists.txt b/extension/tpch/CMakeLists.txt index 46dcb12..46b9950 100644 --- a/extension/tpch/CMakeLists.txt +++ b/extension/tpch/CMakeLists.txt @@ -11,6 +11,10 @@ set(PARAMETERS "-warnings") build_loadable_extension(tpch ${PARAMETERS} tpch_extension.cpp ${DBGEN_OBJECT_FILES}) +set_target_properties(tpch_loadable_extension PROPERTIES EXCLUDE_FROM_ALL 1) +if(BUILD_SHARED_LIBS) + return() +endif() install( TARGETS tpch_extension EXPORT "${DUCKDB_EXPORT_SET}" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1915e92..83da5f4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -172,8 +172,15 @@ else() endif() +if(BUILD_SHARED_LIBS) + set(INSTALL_TARGET duckdb) + set_target_properties(duckdb_static PROPERTIES EXCLUDE_FROM_ALL 1) +else() + set(INSTALL_TARGET duckdb_static) + set_target_properties(duckdb PROPERTIES EXCLUDE_FROM_ALL 1) +endif() install( - TARGETS duckdb duckdb_static + TARGETS ${INSTALL_TARGET} EXPORT "${DUCKDB_EXPORT_SET}" LIBRARY DESTINATION "${INSTALL_LIB_DIR}" ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"