diff --git a/modules/webgui/CMakeLists.txt b/modules/webgui/CMakeLists.txt index 602fa0d0d2..343be25cc9 100644 --- a/modules/webgui/CMakeLists.txt +++ b/modules/webgui/CMakeLists.txt @@ -25,6 +25,9 @@ include(${PROJECT_SOURCE_DIR}/support/cmake/module_definition.cmake) include(../webbrowser/cmake/webbrowser_helpers.cmake) +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +include(nodejs_support) + set(WEBGUI_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "WEBGUI_MODULE_PATH") set(OPENSPACE_HEADER_FILES @@ -37,13 +40,7 @@ set(OPENSPACE_SOURCE_FILES ) source_group("Source Files" FILES ${OPENSPACE_SOURCE_FILES}) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") - -# Specify the NodeJs distribution version. -set(NODEJS_VERSION "22.15.0") - -include(nodejs_support) -DownloadNodeJs("${NODEJS_VERSION}" "${CMAKE_CURRENT_SOURCE_DIR}/ext/nodejs") +DownloadNodeJs("22.15.0" "${CMAKE_CURRENT_SOURCE_DIR}/ext/nodejs") create_new_module( WebGui diff --git a/modules/webgui/cmake/nodejs_support.cmake b/modules/webgui/cmake/nodejs_support.cmake index 8d73435eb2..0e5a27e057 100644 --- a/modules/webgui/cmake/nodejs_support.cmake +++ b/modules/webgui/cmake/nodejs_support.cmake @@ -31,60 +31,61 @@ function(DownloadNodeJs version download_dir) set(basename "node") set(filename "${basename}.exe") set(path "v${version}/win-x64/${filename}") - endif () - if (APPLE) + elseif (APPLE) set(basename "node-v${version}-darwin-x64") set(filename "${basename}.tar.gz") set(path "v${version}/${filename}") - endif () - if (UNIX AND NOT APPLE) + elseif (UNIX) set(basename "node-v${version}-linux-x64") set(filename "${basename}.tar.xz") set(path "v${version}/${filename}") endif () - # Specify the binary distribution type and download directory. - set(NODEJS_DOWNLOAD_DIR "${download_dir}") + # Create the file if it doesn't exist + file(TOUCH "${download_dir}/version.txt") - # The location where we expect the extracted binary distribution. - set(NODEJS_ROOT "${NODEJS_DOWNLOAD_DIR}" CACHE INTERNAL "NODEJS_ROOT") + # Read the file + file(STRINGS "${download_dir}/version.txt" existing_version) - # Download and/or extract the binary distribution if necessary. - if (NOT IS_DIRECTORY "${NODEJS_ROOT}") - set(NODEJS_DOWNLOAD_SOURCE "v${version}/node-v${version}-${suffix}") - set(NODEJS_DOWNLOAD_PATH "${NODEJS_DOWNLOAD_DIR}/${filename}") - if (NOT EXISTS "${NODEJS_DOWNLOAD_PATH}") - set(NODEJS_DOWNLOAD_URL "https://nodejs.org/dist/${path}") - - # Download the binary distribution. - message(STATUS "Downloading NodeJs: ${NODEJS_DOWNLOAD_PATH}...") - file(DOWNLOAD "${NODEJS_DOWNLOAD_URL}" "${NODEJS_DOWNLOAD_PATH}" SHOW_PROGRESS) - endif () - - message(STATUS "URL: ${NODEJS_DOWNLOAD_URL}") - - # Extract the binary distribution for unix - if (APPLE) - # Apple uses tar.gz - message(STATUS "Extracting NodeJs: ${NODEJS_DOWNLOAD_PATH} in ${NODEJS_DOWNLOAD_DIR}") - execute_process( - COMMAND tar xzf ${NODEJS_DOWNLOAD_PATH} - WORKING_DIRECTORY ${NODEJS_DOWNLOAD_DIR} - ) - endif () - if (UNIX AND NOT APPLE) - # Linux uses tar.xz - message(STATUS "Extracting NodeJs: ${NODEJS_DOWNLOAD_PATH} in ${NODEJS_DOWNLOAD_DIR}") - execute_process( - COMMAND tar xf ${NODEJS_DOWNLOAD_PATH} - WORKING_DIRECTORY ${NODEJS_DOWNLOAD_DIR} - ) - endif () - - if (UNIX) - FILE(COPY ${NODEJS_DOWNLOAD_DIR}/${basename}/bin/node DESTINATION ${NODEJS_DOWNLOAD_DIR}) - FILE(REMOVE_RECURSE ${NODEJS_DOWNLOAD_DIR}/${basename}) - FILE(REMOVE ${NODEJS_DOWNLOAD_PATH}) - endif () + # Download and/or extract the binary distribution if necessary + message("ex: ${existing_version}") + message("ver: ${version}") + if ("${existing_version}" STREQUAL "${version}") + return() endif () + + set(NODEJS_DOWNLOAD_PATH "${download_dir}/${filename}") + set(NODEJS_DOWNLOAD_URL "https://nodejs.org/dist/${path}") + + # Download the binary distribution + message(STATUS "Downloading NodeJs: ${NODEJS_DOWNLOAD_PATH}...") + file(DOWNLOAD "${NODEJS_DOWNLOAD_URL}" "${NODEJS_DOWNLOAD_PATH}" SHOW_PROGRESS) + + message(STATUS "URL: ${NODEJS_DOWNLOAD_URL}") + + # Extract the binary distribution for unix + if (APPLE) + # Apple uses tar.gz + message(STATUS "Extracting NodeJs: ${NODEJS_DOWNLOAD_PATH} in ${download_dir}") + execute_process( + COMMAND tar xzf ${NODEJS_DOWNLOAD_PATH} + WORKING_DIRECTORY ${download_dir} + ) + endif () + if (UNIX AND NOT APPLE) + # Linux uses tar.xz + message(STATUS "Extracting NodeJs: ${NODEJS_DOWNLOAD_PATH} in ${download_dir}") + execute_process( + COMMAND tar xf ${NODEJS_DOWNLOAD_PATH} + WORKING_DIRECTORY ${download_dir} + ) + endif () + + if (UNIX) + FILE(COPY ${download_dir}/${basename}/bin/node DESTINATION ${download_dir}) + FILE(REMOVE_RECURSE ${download_dir}/${basename}) + FILE(REMOVE ${NODEJS_DOWNLOAD_PATH}) + endif () + + file(WRITE "${download_dir}/version.txt" "${version}") endfunction ()