Skip to content

Commit 6eb0e00

Browse files
committed
makefiles: fix Windows unresolved symbol link errs.
Previously, building the tip of `main` in CI for Windows, Windows CMake (Debug), and Windows CMake (Release) was failing with link-time errors of the form: ``` rustls_ffi.lib(std-391022a4250a8b9a.std.feb3b897-cgu.0.rcgu.o) : error LNK2019: unresolved external symbol __imp_NtWriteFile referenced in function _ZN3std3sys7windows6handle6Handle17synchronous_write17h5e143db420a86fa8E [D:\a\rustls-ffi\rustls-ffi\build\tests\server.vcxproj] ``` The fix is to explicitly include `ntdll.lib` in the native static libs that we link on Windows. Doing this fixes the builds once we also update the `verify-static-libraries.py` script to expect this additional lib. This may be related to an upstream `rust-lang/rust` change[0] but I'm not 100% sure. [0]: rust-lang/rust#108262
1 parent 30cb27b commit 6eb0e00

File tree

3 files changed

+4
-4
lines changed

3 files changed

+4
-4
lines changed

Makefile.Windows

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ $(RUSTLS_LIB): src/lib.rs Cargo.toml
5050
@echo
5151

5252
target/%.exe: common.obj %.obj $(RUSTLS_LIB)
53-
$(call link_EXE, $@, $^ advapi32.lib credui.lib kernel32.lib secur32.lib legacy_stdio_definitions.lib kernel32.lib advapi32.lib userenv.lib kernel32.lib kernel32.lib ws2_32.lib bcrypt.lib msvcrt.lib legacy_stdio_definitions.lib userenv.lib kernel32.lib msvcrt.lib)
53+
$(call link_EXE, $@, $^ advapi32.lib credui.lib kernel32.lib secur32.lib legacy_stdio_definitions.lib kernel32.lib advapi32.lib userenv.lib kernel32.lib kernel32.lib ws2_32.lib bcrypt.lib msvcrt.lib legacy_stdio_definitions.lib userenv.lib kernel32.lib msvcrt.lib ntdll.lib)
5454

5555
clean:
5656
rm -f *.obj target/.rustc_info.json $(RUSTLS_LIB) vc1*.pdb

tests/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ IF(WIN32)
1515
client
1616
debug "${CMAKE_SOURCE_DIR}/target/debug/rustls_ffi.lib"
1717
optimized "${CMAKE_SOURCE_DIR}/target/release/rustls_ffi.lib"
18-
advapi32.lib credui.lib kernel32.lib secur32.lib legacy_stdio_definitions.lib kernel32.lib advapi32.lib userenv.lib kernel32.lib kernel32.lib ws2_32.lib bcrypt.lib msvcrt.lib legacy_stdio_definitions.lib userenv.lib kernel32.lib msvcrt.lib
18+
advapi32.lib credui.lib kernel32.lib secur32.lib legacy_stdio_definitions.lib kernel32.lib advapi32.lib userenv.lib kernel32.lib kernel32.lib ws2_32.lib bcrypt.lib msvcrt.lib legacy_stdio_definitions.lib userenv.lib kernel32.lib msvcrt.lib ntdll.lib
1919
)
2020
set_property(TARGET client PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
2121
ENDIF(WIN32)
@@ -34,7 +34,7 @@ IF(WIN32)
3434
server
3535
debug "${CMAKE_SOURCE_DIR}/target/debug/rustls_ffi.lib"
3636
optimized "${CMAKE_SOURCE_DIR}/target/release/rustls_ffi.lib"
37-
advapi32.lib credui.lib kernel32.lib secur32.lib legacy_stdio_definitions.lib kernel32.lib advapi32.lib userenv.lib kernel32.lib kernel32.lib ws2_32.lib bcrypt.lib msvcrt.lib legacy_stdio_definitions.lib userenv.lib kernel32.lib msvcrt.lib
37+
advapi32.lib credui.lib kernel32.lib secur32.lib legacy_stdio_definitions.lib kernel32.lib advapi32.lib userenv.lib kernel32.lib kernel32.lib ws2_32.lib bcrypt.lib msvcrt.lib legacy_stdio_definitions.lib userenv.lib kernel32.lib msvcrt.lib ntdll.lib
3838
)
3939
set_property(TARGET server PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
4040
ENDIF(WIN32)

tests/verify-static-libraries.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def main():
2222
"advapi32.lib credui.lib kernel32.lib secur32.lib "
2323
"legacy_stdio_definitions.lib "
2424
"kernel32.lib advapi32.lib userenv.lib "
25-
"kernel32.lib kernel32.lib ws2_32.lib bcrypt.lib msvcrt.lib "
25+
"kernel32.lib kernel32.lib ws2_32.lib bcrypt.lib ntdll.lib msvcrt.lib "
2626
"legacy_stdio_definitions.lib"
2727
)
2828
else:

0 commit comments

Comments
 (0)