Skip to content

Commit e3a6bab

Browse files
authored
Merge pull request #502 from metacall/fix/node-multithread-deadlock
First PoC for solving threading issues in node loader.
2 parents 4768980 + a2ee85a commit e3a6bab

File tree

9 files changed

+1047
-1742
lines changed

9 files changed

+1047
-1742
lines changed

cmake/FindNodeJS.cmake

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -289,10 +289,17 @@ if(NodeJS_INCLUDE_DIR)
289289
# Get node module version
290290
find_file(NodeJS_VERSION_FILE_PATH node_version.h
291291
PATHS ${NodeJS_INCLUDE_DIR}
292-
PATH_SUFFIXES ${NodeJS_INCLUDE_SUFFIXES}
293292
DOC "NodeJS JavaScript Version Header"
294293
)
295294

295+
if(NOT NodeJS_VERSION_FILE_PATH)
296+
find_file(NodeJS_VERSION_FILE_PATH node_version.h
297+
PATHS ${NodeJS_INCLUDE_DIR}
298+
PATH_SUFFIXES ${NodeJS_INCLUDE_SUFFIXES}
299+
DOC "NodeJS JavaScript Version Header"
300+
)
301+
endif()
302+
296303
if(NodeJS_VERSION_FILE_PATH)
297304
file(READ ${NodeJS_VERSION_FILE_PATH} NodeJS_VERSION_FILE)
298305

@@ -367,21 +374,30 @@ if(NodeJS_MODULE_VERSION)
367374
if(NOT NodeJS_BUILD_FROM_SOURCE)
368375
message(STATUS "Searching NodeJS library version ${NodeJS_MODULE_VERSION}")
369376

370-
if(WIN32)
371-
set(NodeJS_LIBRARY_PATH "C:/Program Files/nodejs")
372-
else()
373-
set(NodeJS_LIBRARY_PATH "/usr/local/lib")
374-
endif()
375-
376-
set(NodeJS_SYSTEM_LIBRARY_PATH "/lib/x86_64-linux-gnu" "/usr/lib/x86_64-linux-gnu") # TODO: Add others
377-
378377
# Find library
379378
find_library(NodeJS_LIBRARY
380379
NAMES ${NodeJS_LIBRARY_NAMES}
381-
PATHS ${NodeJS_LIBRARY_PATH} ${NodeJS_SYSTEM_LIBRARY_PATH}
380+
HINTS ${NodeJS_PATHS}
381+
PATH_SUFFIXES lib
382382
DOC "NodeJS JavaScript Runtime Library"
383383
)
384384

385+
if(NOT NodeJS_LIBRARY)
386+
if(WIN32)
387+
set(NodeJS_LIBRARY_PATH "C:/Program Files/nodejs")
388+
else()
389+
set(NodeJS_LIBRARY_PATH "/usr/local/lib" "/usr/lib")
390+
endif()
391+
392+
set(NodeJS_SYSTEM_LIBRARY_PATH "/lib/x86_64-linux-gnu" "/usr/lib/x86_64-linux-gnu") # TODO: Add others
393+
394+
find_library(NodeJS_LIBRARY
395+
NAMES ${NodeJS_LIBRARY_NAMES}
396+
PATHS ${NodeJS_LIBRARY_PATH} ${NodeJS_SYSTEM_LIBRARY_PATH}
397+
DOC "NodeJS JavaScript Runtime Library"
398+
)
399+
endif()
400+
385401
if(NodeJS_LIBRARY)
386402
message(STATUS "NodeJS Library Found")
387403
endif()

source/cli/plugins/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ add_subdirectory(cli_core_plugin)
3636
# NodeJS added util.parseArgs([config]) in versions v18.3.0, v16.17.0
3737
# Check for compatibility, otherwise use fallback command parser in the CLI
3838
if(NOT (NodeJS_VERSION VERSION_GREATER_EQUAL "18.3.0" OR (NodeJS_VERSION_MAJOR LESS 18 AND NodeJS_VERSION VERSION_GREATER_EQUAL "16.17.0")))
39-
message(WARNING "NodeJS version ${NodeJS_VERSION} does not support ${target}, at least v18.3.0 or v16.17.0 are required, using fallback command parser")
39+
message(WARNING "NodeJS version ${NodeJS_VERSION} does not support CLI command line plugins, at least v18.3.0 or v16.17.0 are required, using fallback command parser")
4040
return()
4141
endif()
4242

0 commit comments

Comments
 (0)