Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 30 additions & 11 deletions src/slic3r/GUI/DeviceWeb/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,22 +44,37 @@ function(prepare_node_env)
set(NODE_EXEC "node")
set(PNPM_EXEC_NAME "pnpm")
else()
set(NODE_URL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz")
set(NODE_ARCHIVE_NAME "node-v${NODE_VERSION}-linux-x64.tar.xz")
set(NODE_BIN_DIR "node-v${NODE_VERSION}-linux-x64/bin")
set(NODE_EXEC "node")
set(NODE_HASH "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a")

set(PNPM_URL "https://github.com/pnpm/pnpm/releases/download/v${PNPM_VERSION}/pnpm-linux-x64")
set(PNPM_EXEC_NAME "pnpm")
set(PNPM_HASH "eb2dc1f109bca046ce734d062c8dd8f34db2b58a115992f9b086456efd7b2305")
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
set(NODE_URL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-arm64.tar.xz")
set(NODE_ARCHIVE_NAME "node-v${NODE_VERSION}-linux-arm64.tar.xz")
set(NODE_BIN_DIR "node-v${NODE_VERSION}-linux-arm64/bin")
set(NODE_EXEC "node")
set(NODE_HASH "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe")

set(PNPM_URL "https://github.com/pnpm/pnpm/releases/download/v${PNPM_VERSION}/pnpm-linux-arm64")
set(PNPM_EXEC_NAME "pnpm")
set(PNPM_HASH "c2f9e9d42d81f9f40a0f895513d014a08d5ecb0abc9e15c426ecfde6f492706b")
else()
set(NODE_URL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz")
set(NODE_ARCHIVE_NAME "node-v${NODE_VERSION}-linux-x64.tar.xz")
set(NODE_BIN_DIR "node-v${NODE_VERSION}-linux-x64/bin")
set(NODE_EXEC "node")
set(NODE_HASH "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a")

set(PNPM_URL "https://github.com/pnpm/pnpm/releases/download/v${PNPM_VERSION}/pnpm-linux-x64")
set(PNPM_EXEC_NAME "pnpm")
set(PNPM_HASH "eb2dc1f109bca046ce734d062c8dd8f34db2b58a115992f9b086456efd7b2305")
endif()
endif()

# 定义最终的可执行文件路径
set(NODE_EXECUTABLE "${NODE_CACHE_DIR}/${NODE_BIN_DIR}/${NODE_EXEC}")
# pnpm 放到 node 同目录,这样执行 pnpm 时 PATH 中天然能找到 node
set(PNPM_EXECUTABLE "${NODE_CACHE_DIR}/${NODE_BIN_DIR}/${PNPM_EXEC_NAME}")

message(STATUS "Checking for node binary at ${NODE_EXECUTABLE}")
message(STATUS "Checking for pnpm binary ${PNPM_EXECUTABLE}")

# ============ Node.js 下载 + 解压 ============
if(NOT EXISTS "${NODE_EXECUTABLE}")
message(STATUS "Downloading Node.js v${NODE_VERSION} from ${NODE_URL}")
Expand Down Expand Up @@ -180,9 +195,13 @@ set(PNPM_STORE_DIR "${CMAKE_CURRENT_BINARY_DIR}/.pnpm-store")
file(MAKE_DIRECTORY "${PNPM_STORE_DIR}")

add_custom_target(device_page_build ALL
COMMAND ${CMAKE_COMMAND} -E env "PATH=${DEVICE_PAGE_PATH}" "PNPM_STORE_DIR=${PNPM_STORE_DIR}" ${PNPM_EXECUTABLE} install
COMMAND ${CMAKE_COMMAND} -E env "PATH=${DEVICE_PAGE_PATH}" "PNPM_STORE_DIR=${PNPM_STORE_DIR}" ${PNPM_EXECUTABLE} run build
COMMAND echo "Running PNPM install"
COMMAND ${CMAKE_COMMAND} -E env "PATH=${DEVICE_PAGE_PATH}" ${PNPM_EXECUTABLE} install --store-dir ${PNPM_STORE_DIR}
COMMAND echo "Running PNPM run build"
COMMAND ${CMAKE_COMMAND} -E env "PATH=${DEVICE_PAGE_PATH}" ${PNPM_EXECUTABLE} run build --store-dir ${PNPM_STORE_DIR}
COMMAND echo "Creating page target directory"
COMMAND ${CMAKE_COMMAND} -E make_directory "${DEVICE_PAGE_TARGET_DIR}"
COMMAND echo "Copying directory to target"
COMMAND ${CMAKE_COMMAND} -E copy_directory "${DEVICE_PAGE_DIST_DIR}" "${DEVICE_PAGE_TARGET_DIR}"
WORKING_DIRECTORY ${DEVICE_PAGE_SRC_DIR}
COMMENT "Installing dependencies and building device_page..."
Expand Down
Loading