Skip to content

Commit 5889954

Browse files
committed
Enable build with gyp only for trampoline in order to support guix without node dependencies.
1 parent 302e977 commit 5889954

File tree

4 files changed

+47
-6
lines changed

4 files changed

+47
-6
lines changed

source/loaders/node_loader/bootstrap/CMakeLists.txt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,12 @@ install(FILES
5959
COMPONENT runtime
6060
)
6161

62-
install(DIRECTORY
63-
${LOADER_LIBRARY_PATH}/node_modules
64-
DESTINATION ${INSTALL_LIB}
65-
COMPONENT runtime
66-
)
62+
if(NOT OPTION_BUILD_GUIX)
63+
# In Guix Bootstrap dependencies (aka Cherow
64+
# at the moment of writting) must be installed manually
65+
install(DIRECTORY
66+
${LOADER_LIBRARY_PATH}/node_modules
67+
DESTINATION ${INSTALL_LIB}
68+
COMPONENT runtime
69+
)
70+
endif()

source/loaders/node_loader/trampoline/.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,10 @@ typings/
5959

6060
# next.js build output
6161
.next
62+
63+
# GYP
64+
out/
65+
binding.gypi
66+
binding.Makefile
67+
Makefile
68+
trampoline.target.mk

source/loaders/node_loader/trampoline/CMakeLists.txt

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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)
6869
else()
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

source/loaders/node_loader/trampoline/binding.gyp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
'targets': [
33
{
44
'target_name': 'trampoline',
5+
'type': 'shared_library',
56
'win_delay_load_hook': 'true',
67
'sources': [ 'source/trampoline.cc' ],
78
'msvs_settings': {
@@ -24,7 +25,7 @@
2425
'MACOSX_DEPLOYMENT_TARGET': '10.7'
2526
},
2627
'include_dirs': [
27-
"include"
28+
'include'
2829
],
2930
'conditions': [
3031
['OS == "win" and MSVS_VERSION == "2015"', {

0 commit comments

Comments
 (0)