11cmake_minimum_required (VERSION 3.15...3.31)
22project (node-api-cts)
33
4+ set (NODE_API_HEADERS_DIR ${PROJECT_SOURCE_DIR} /node_modules/node-api-headers)
5+
6+ if (NOT EXISTS ${NODE_API_HEADERS_DIR} )
7+ message (FATAL_ERROR "Expected ${NODE_API_HEADERS_DIR} to exist" )
8+ endif ()
9+
10+ if (MSVC )
11+ set (NODE_API_LIB ${PROJECT_BINARY_DIR} /node.lib)
12+ set (NODE_API_DEF ${NODE_API_HEADERS_DIR} /def/node_api.def)
13+ execute_process (COMMAND ${CMAKE_AR} /def:${NODE_API_DEF} /out:${NODE_API_LIB} ${CMAKE_STATIC_LINKER_FLAGS} )
14+ set (NODE_API_SRC ${PROJECT_SOURCE_DIR} /implementors/node/win_delay_load_hook.cc)
15+ endif ()
16+
417function (add_node_api_cts_addon ADDON_NAME SRC)
5- add_library (${ADDON_NAME} SHARED ${SRC} ${CMAKE_JS_SRC } )
18+ add_library (${ADDON_NAME} SHARED ${SRC} ${NODE_API_SRC } )
619 set_target_properties (${ADDON_NAME} PROPERTIES PREFIX "" SUFFIX ".node" )
7- target_include_directories (${ADDON_NAME} PRIVATE ${CMAKE_JS_INC} )
8- target_link_libraries (${ADDON_NAME} PRIVATE ${CMAKE_JS_LIB } )
20+ target_include_directories (${ADDON_NAME} PRIVATE ${NODE_API_HEADERS_DIR} / include )
21+ target_link_libraries (${ADDON_NAME} PRIVATE ${NODE_API_LIB } )
922 target_compile_features (${ADDON_NAME} PRIVATE cxx_std_17)
1023 target_compile_definitions (${ADDON_NAME} PRIVATE ADDON_NAME=${ADDON_NAME} )
1124 set_target_properties (${ADDON_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} " )
25+ # TODO: Set these conditionally?
26+ set_target_properties (${ADDON_NAME} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup" )
1227endfunction ()
1328
1429file (GLOB_RECURSE cmake_dirs RELATIVE ${CMAKE_SOURCE_DIR} tests/*/CMakeLists.txt)
@@ -17,8 +32,3 @@ foreach(cmake_file ${cmake_dirs})
1732 get_filename_component (subdir ${cmake_file} DIRECTORY )
1833 add_subdirectory (${subdir} )
1934endforeach ()
20-
21- if (MSVC AND CMAKE_JS_NODELIB_DEF AND CMAKE_JS_NODELIB_TARGET)
22- # Generate node.lib
23- execute_process (COMMAND ${CMAKE_AR} /def:${CMAKE_JS_NODELIB_DEF} /out:${CMAKE_JS_NODELIB_TARGET} ${CMAKE_STATIC_LINKER_FLAGS} )
24- endif ()
0 commit comments