Skip to content

Commit f046847

Browse files
committed
Workaround for build from source in NodeJS 18.
1 parent d287e33 commit f046847

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

cmake/FindNodeJS.cmake

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,17 @@ if(NOT NodeJS_LIBRARY)
512512
set(ICU_URL "https://github.com/unicode-org/icu/releases/download/release-64-2/icu4c-64_2-src.zip")
513513
endif()
514514

515+
# Workaround for configure bug: ERROR: Could not load deps/icu/source/common/unicode/uvernum.h - is ICU installed?
516+
if("${NodeJS_VERSION_MAJOR}" GREATER_EQUAL "18")
517+
set(NodeJS_ICU_DOWNLOAD_FILE "${NodeJS_BASE_PATH}/icu4c-src.zip")
518+
file(DOWNLOAD ${ICU_URL} "${NodeJS_ICU_DOWNLOAD_FILE}")
519+
execute_process(
520+
WORKING_DIRECTORY "${NodeJS_OUTPUT_PATH}/deps"
521+
COMMAND ${CMAKE_COMMAND} -E tar xzf "${NodeJS_ICU_DOWNLOAD_FILE}"
522+
)
523+
set(ICU_URL "${NodeJS_OUTPUT_PATH}/deps/icu")
524+
endif()
525+
515526
# Workaround for OpenSSL bug: https://github.com/metacall/core/issues/223
516527
if(APPLE)
517528
set(ICU_ENV_VAR ${CMAKE_COMMAND} -E env PYTHONHTTPSVERIFY=0)
@@ -538,7 +549,10 @@ if(NOT NodeJS_LIBRARY)
538549
set(BUILD_DEBUG)
539550
endif()
540551

541-
execute_process(COMMAND ${ICU_ENV_VAR} sh -c "./configure ${NodeJS_PREFIX} ${BUILD_ICU_FLAGS} --shared ${BUILD_DEBUG}" WORKING_DIRECTORY "${NodeJS_OUTPUT_PATH}")
552+
execute_process(
553+
WORKING_DIRECTORY "${NodeJS_OUTPUT_PATH}"
554+
COMMAND ${ICU_ENV_VAR} ./configure ${NodeJS_PREFIX} ${BUILD_ICU_FLAGS} --shared ${BUILD_DEBUG}
555+
)
542556

543557
message(STATUS "Build NodeJS shared library")
544558

@@ -550,9 +564,15 @@ if(NOT NodeJS_LIBRARY)
550564
ProcessorCount(N)
551565

552566
if(N GREATER 1)
553-
execute_process(COMMAND sh -c "make -j${N} -C ${NodeJS_OUTPUT_PATH}/out BUILDTYPE=${CMAKE_BUILD_TYPE} V=1" WORKING_DIRECTORY "${NodeJS_OUTPUT_PATH}")
567+
execute_process(
568+
WORKING_DIRECTORY "${NodeJS_OUTPUT_PATH}"
569+
COMMAND make -j${N} -C ${NodeJS_OUTPUT_PATH}/out BUILDTYPE=${CMAKE_BUILD_TYPE} V=1
570+
)
554571
else()
555-
execute_process(COMMAND sh -c "make -C ${NodeJS_OUTPUT_PATH}/out BUILDTYPE=${CMAKE_BUILD_TYPE} V=1" WORKING_DIRECTORY "${NodeJS_OUTPUT_PATH}")
572+
execute_process(
573+
WORKING_DIRECTORY "${NodeJS_OUTPUT_PATH}"
574+
COMMAND make -C ${NodeJS_OUTPUT_PATH}/out BUILDTYPE=${CMAKE_BUILD_TYPE} V=1
575+
)
556576
endif()
557577
endif()
558578
endif()

0 commit comments

Comments
 (0)