Skip to content

Commit dfb3e1b

Browse files
committed
Link MSVC runtime library statically
This change makes all CMake targets to use `-MT`/`-MTd` compilation flags for Windows MSVC builds. This way the MSVC runtime library is linked statically and the workaround for VS2019 added in duckdb/duckdb#17991 is no longer necessary. `extension-ci-tools` PR: duckdb/extension-ci-tools#276 Ref: duckdblabs/duckdb-internal#2036
1 parent 2d2b38f commit dfb3e1b

File tree

3 files changed

+5
-8
lines changed

3 files changed

+5
-8
lines changed

.github/workflows/Java.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,7 @@ jobs:
389389
shell: cmd
390390
run: |
391391
call "c:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
392+
dumpbin.exe /imports build\release\Release\libduckdb_java.so_windows_amd64
392393
dumpbin.exe /exports build\release\Release\libduckdb_java.so_windows_amd64
393394
394395
- name: Java Tests

CMakeLists.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ cmake_minimum_required(VERSION 3.5...3.29)
1111
set(CMAKE_CXX_STANDARD "11" CACHE STRING "C++ standard to enforce")
1212
set(CMAKE_VERBOSE_MAKEFILE OFF)
1313
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
14+
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
1415

1516
if(NOT JNI_FOUND OR NOT Java_FOUND)
1617
message(FATAL_ERROR "No compatible Java/JNI found")
@@ -625,10 +626,7 @@ target_compile_definitions(duckdb_java PRIVATE
625626
-DDUCKDB_EXTENSION_AUTOLOAD_DEFAULT
626627
-DDUCKDB_EXTENSION_AUTOINSTALL_DEFAULT)
627628

628-
if(MSVC)
629-
target_compile_definitions(duckdb_java PRIVATE
630-
-D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR)
631-
else()
629+
if(NOT MSVC)
632630
target_compile_definitions(duckdb_java PRIVATE
633631
-DDUCKDB_EXTENSION_JEMALLOC_LINKED)
634632
endif()

CMakeLists.txt.in

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ cmake_minimum_required(VERSION 3.5...3.29)
1111
set(CMAKE_CXX_STANDARD "11" CACHE STRING "C++ standard to enforce")
1212
set(CMAKE_VERBOSE_MAKEFILE OFF)
1313
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
14+
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
1415

1516
if(NOT JNI_FOUND OR NOT Java_FOUND)
1617
message(FATAL_ERROR "No compatible Java/JNI found")
@@ -151,10 +152,7 @@ target_compile_definitions(duckdb_java PRIVATE
151152
-DDUCKDB_EXTENSION_AUTOLOAD_DEFAULT
152153
-DDUCKDB_EXTENSION_AUTOINSTALL_DEFAULT)
153154

154-
if(MSVC)
155-
target_compile_definitions(duckdb_java PRIVATE
156-
-D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR)
157-
else()
155+
if(NOT MSVC)
158156
target_compile_definitions(duckdb_java PRIVATE
159157
-DDUCKDB_EXTENSION_JEMALLOC_LINKED)
160158
endif()

0 commit comments

Comments
 (0)