@@ -42,6 +42,7 @@ if(MSVC)
4242 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
4343 COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
4444 COMMAND npm config set msvs_version ${NODE_LOADER_TRAMPOLINE_MSVS_VERSION}
45+ # TODO: Implement build with gyp
4546 )
4647 else ()
4748 add_custom_target (${target} ALL
@@ -68,9 +69,37 @@ if(MSVC)
6869else ()
6970
7071 if (OPTION_BUILD_GUIX)
72+ # Get the includes
73+ execute_process (
74+ COMMAND node -p "require('node-addon-api').include"
75+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
76+ OUTPUT_VARIABLE NODE_ADDON_API_INCLUDE_DIR
77+ )
78+
79+ string (REPLACE "\n " "" NODE_ADDON_API_INCLUDE_DIR ${NODE_ADDON_API_INCLUDE_DIR} )
80+ string (REPLACE "\" " "" NODE_ADDON_API_INCLUDE_DIR ${NODE_ADDON_API_INCLUDE_DIR} )
81+
82+ # Generate additional gyp file for the addon
83+ set (NODE_ADDON_INCLUDES
84+ "{
85+ 'target_defaults': {
86+ 'include_dirs': [
87+ '@NODE_ADDON_API_INCLUDE_DIR@/external-napi'
88+ ]
89+ }
90+ }"
91+ )
92+
93+ string (REPLACE "@NODE_ADDON_API_INCLUDE_DIR@" "${NODE_ADDON_API_INCLUDE_DIR} " NODE_ADDON_INCLUDES ${NODE_ADDON_INCLUDES} )
94+
95+ file (WRITE binding.gypi "${NODE_ADDON_INCLUDES} " )
96+
7197 add_custom_target (${target} ALL
7298 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
7399 COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
100+ COMMAND gyp binding.gyp -f make --depth . -Ibinding.gypi # TODO: ${NODE_LOADER_TRAMPOLINE_BUILD_TYPE}
101+ COMMAND make -f binding.Makefile
102+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR} /out/Default/lib.target /libtrampoline.so ${LOADER_LIBRARY_PATH} /trampoline.node
74103 )
75104 else ()
76105 add_custom_target (${target} ALL
0 commit comments