Skip to content

Commit 875fff9

Browse files
committed
Fix Windows specific issues
1 parent 74a323d commit 875fff9

File tree

3 files changed

+20
-8
lines changed

3 files changed

+20
-8
lines changed

CMakeLists.txt

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,26 @@ endif()
1616

1717
function(add_node_api_cts_addon ADDON_NAME SRC)
1818
add_library(${ADDON_NAME} SHARED ${SRC} ${NODE_API_SRC})
19-
set_target_properties(${ADDON_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
19+
set_target_properties(${ADDON_NAME} PROPERTIES
20+
PREFIX ""
21+
SUFFIX ".node"
22+
# Co-locate the output binary with the source file
23+
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
24+
# (for MSVC)
25+
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}
26+
RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}
27+
)
28+
if(APPLE)
29+
set_target_properties(${ADDON_NAME} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
30+
elseif(MSVC)
31+
set_target_properties(${ADDON_NAME} PROPERTIES LINK_FLAGS "/DELAYLOAD:NODE.EXE")
32+
# Set the HOST_BINARY expected by win_delay_load_hook.cc
33+
target_compile_definitions(${ADDON_NAME} PRIVATE HOST_BINARY="node.exe")
34+
endif()
2035
target_include_directories(${ADDON_NAME} PRIVATE ${NODE_API_HEADERS_DIR}/include)
2136
target_link_libraries(${ADDON_NAME} PRIVATE ${NODE_API_LIB})
2237
target_compile_features(${ADDON_NAME} PRIVATE cxx_std_17)
2338
target_compile_definitions(${ADDON_NAME} PRIVATE ADDON_NAME=${ADDON_NAME})
24-
set_target_properties(${ADDON_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
25-
if(APPLE)
26-
set_target_properties(${ADDON_NAME} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
27-
endif()
2839
endfunction()
2940

3041
file(GLOB_RECURSE cmake_dirs RELATIVE ${CMAKE_SOURCE_DIR} tests/*/CMakeLists.txt)

implementors/node/run-tests.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,11 @@ function runFileInSubprocess(cwd: string, filePath: string): Promise<void> {
4343
const child = spawn(
4444
process.execPath,
4545
[
46+
// Using file scheme prefix when to enable imports on Windows
4647
"--import",
47-
ASSERT_MODULE_PATH,
48+
"file://" + ASSERT_MODULE_PATH,
4849
"--import",
49-
LOAD_ADDON_MODULE_PATH,
50+
"file://" + LOAD_ADDON_MODULE_PATH,
5051
filePath,
5152
],
5253
{ cwd }

implementors/node/win_delay_load_hook.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ static FARPROC WINAPI load_exe_hook(unsigned int event, DelayLoadInfo* info) {
2828
if (event != dliNotePreLoadLibrary)
2929
return NULL;
3030

31-
if (_stricmp(info->szDll, HOST_BINARY) != 0)
31+
if (_stricmp(info->szDll, "node.exe") != 0)
3232
return NULL;
3333

3434
// try for libnode.dll to compat node.js that using 'vcbuild.bat dll'

0 commit comments

Comments
 (0)