1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
|
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}"
|