From 3d9ec58ce37e805a68b40b6cd0669ab0406c2508 Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Tue, 16 Jul 2024 16:01:26 -0400 Subject: [PATCH] Use a Find module for NodeJS --- cmake/FindNodeJS.cmake | 35 ++++++++++++++++++++++++++++++++ dependencies/wasm/CMakeLists.txt | 27 ++++++------------------ 2 files changed, 41 insertions(+), 21 deletions(-) create mode 100644 cmake/FindNodeJS.cmake diff --git a/cmake/FindNodeJS.cmake b/cmake/FindNodeJS.cmake new file mode 100644 index 000000000000..a1168435e1cb --- /dev/null +++ b/cmake/FindNodeJS.cmake @@ -0,0 +1,35 @@ +if (EXISTS "${NODE_JS_EXECUTABLE}") + message(DEPRECATION "NODE_JS_EXECUTABLE has been renamed to NodeJS_EXECUTABLE") + set(NodeJS_EXECUTABLE "${NODE_JS_EXECUTABLE}") + set(NodeJS_EXECUTABLE "${NODE_JS_EXECUTABLE}" CACHE PATH "") +endif () + +find_program( + NodeJS_EXECUTABLE + NAMES node nodejs +) + +set(NodeJS_VERSION "") +if (NodeJS_EXECUTABLE) + execute_process( + COMMAND "${NodeJS_EXECUTABLE}" --version + OUTPUT_VARIABLE NodeJS_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + string(REPLACE "v" "" NodeJS_VERSION "${NodeJS_VERSION}") +endif () + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args( + NodeJS + REQUIRED_VARS NodeJS_EXECUTABLE + VERSION_VAR NodeJS_VERSION + HANDLE_COMPONENTS +) + +if (NodeJS_FOUND AND NOT TARGET NodeJS::node) + add_executable(NodeJS::node IMPORTED) + set_target_properties( + NodeJS::node PROPERTIES IMPORTED_LOCATION "${NodeJS_EXECUTABLE}" + ) +endif () diff --git a/dependencies/wasm/CMakeLists.txt b/dependencies/wasm/CMakeLists.txt index 66a354af5547..8c98bc1148d5 100644 --- a/dependencies/wasm/CMakeLists.txt +++ b/dependencies/wasm/CMakeLists.txt @@ -153,25 +153,10 @@ function(add_wasm_halide_test TARGET) return() endif () - add_halide_test("${TARGET}" - GROUPS ${args_GROUPS} - COMMAND ${NODE_JS_EXECUTABLE} "${Halide_SOURCE_DIR}/tools/launch_wasm_test.js" "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.js" "${Halide_TARGET}") -endfunction() - -function(find_node_js) - find_program(NODE_JS_EXECUTABLE node nodejs REQUIRED) - - execute_process(COMMAND "${NODE_JS_EXECUTABLE}" --version - OUTPUT_VARIABLE NODE_JS_VERSION_RAW - OUTPUT_STRIP_TRAILING_WHITESPACE) - string(REPLACE "v" "" NODE_JS_VERSION "${NODE_JS_VERSION_RAW}") - - if (NODE_JS_VERSION VERSION_LESS "16.13") - message(FATAL_ERROR "Halide requires Node v16.13 or later, but found ${NODE_JS_VERSION_RAW} at ${NODE_JS_EXECUTABLE}. Please set NODE_JS_EXECUTABLE on the CMake command line.") - endif () + find_package(NodeJS 16.13 REQUIRED) + add_halide_test( + "${TARGET}" + GROUPS ${args_GROUPS} + COMMAND "${NodeJS_EXECUTABLE}" "${Halide_SOURCE_DIR}/tools/launch_wasm_test.js" "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.js" "${Halide_TARGET}" + ) endfunction() - -if (Halide_TARGET MATCHES "wasm") - # Check and warn up front if a suitable Node.js isn't found - find_node_js() -endif ()