@@ -717,7 +717,8 @@ if(WINGHEX_ANGEL_LSP)
717717 endif ()
718718
719719 set (SRC_JS "${NODE_SUBDIR} /src/server.ts" )
720- set (DIST_JS "${BUILD_BIN_BUILD_DIR} /dist/angelscript-language-server.js" )
720+ set (DIST_DIR "${BUILD_BIN_BUILD_DIR} /dist" )
721+ set (DIST_JS "${DIST_DIR} /angelscript-language-server.js" )
721722 set (OUT_BIN "${BUILD_BIN_DIR} /${OUT_NAME} " )
722723
723724 find_program (NODE_EXE NAMES node)
@@ -746,8 +747,7 @@ if(WINGHEX_ANGEL_LSP)
746747 endif ()
747748
748749 set (ESBUILD_CMD
749- ${NPX_EXE}
750- esbuild
750+ ${NPX_EXE} esbuild
751751 "${SRC_JS} "
752752 --bundle
753753 --platform=node
@@ -756,61 +756,58 @@ if(WINGHEX_ANGEL_LSP)
756756 --minify)
757757
758758 set (PKG_CMD
759- ${NPX_EXE}
760- pkg
759+ ${NPX_EXE} pkg
761760 "${DIST_JS} "
762761 --targets
763762 ${PKG_TARGET}
764763 --output
765764 "${OUT_BIN} " )
766765
766+ # Build JS bundle (ensure dist directory exists, run npm ci and esbuild)
767767 add_custom_command (
768- OUTPUT ${DIST_JS}
769- WORKING_DIRECTORY ${NODE_SUBDIR}
768+ OUTPUT " ${DIST_JS} "
769+ COMMAND ${CMAKE_COMMAND} -E make_directory " ${DIST_DIR} "
770770 COMMAND ${CMAKE_COMMAND} -E echo "[1] npm ci (local deps)"
771- COMMAND ${NPM_EXE} ci --silent
772- COMMAND ${CMAKE_COMMAND} -E echo "[2] building with esbuild"
773- COMMAND ${NPX_EXE} tsc
774- COMMAND ${ESBUILD_CMD}
771+ COMMAND ${CMAKE_COMMAND} -E chdir "${NODE_SUBDIR} " ${NPM_EXE} ci --silent
772+ COMMAND ${CMAKE_COMMAND} -E echo "[2] building with tsc + esbuild"
773+ COMMAND ${CMAKE_COMMAND} -E chdir "${NODE_SUBDIR} " ${NPX_EXE} tsc
774+ COMMAND ${CMAKE_COMMAND} -E chdir "${NODE_SUBDIR} " ${ESBUILD_CMD}
775+ BYPRODUCTS "${DIST_JS} "
776+ DEPENDS "${NODE_SUBDIR} /src/server.ts" "${NODE_SUBDIR} /package.json"
775777 COMMENT "Building JS bundle with esbuild -> ${DIST_JS} "
776778 VERBATIM )
777779
780+ # Packaging to native binary
778781 if (WIN32 )
779782 add_custom_command (
780- OUTPUT ${OUT_BIN}
781- DEPENDS ${DIST_JS}
782- WORKING_DIRECTORY ${NODE_SUBDIR}
783+ OUTPUT "${OUT_BIN} "
784+ DEPENDS "${DIST_JS} "
783785 COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_BIN_DIR} "
784786 COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_BIN_BUILD_DIR} "
785- COMMAND ${CMAKE_COMMAND} -E echo
786- "[3] packaging with pkg/npm exec/npx"
787- COMMAND ${PKG_CMD}
787+ COMMAND ${CMAKE_COMMAND} -E echo "[3] packaging with pkg/npm exec/npx"
788+ COMMAND ${CMAKE_COMMAND} -E chdir "${NODE_SUBDIR} " ${PKG_CMD}
788789 COMMAND ${CMAKE_COMMAND} -E echo "[4] Packaging with pkg"
789- COMMAND ${CMAKE_COMMAND} -E copy "${NODE_ROOT_SUBDIR} /package.json"
790- "${BUILD_BIN_DIR} "
791- COMMAND ${CMAKE_COMMAND} -E copy "${NODE_SUBDIR} /modIcon_win.js"
792- "${BUILD_BIN_DIR} "
793- COMMAND ${CMAKE_COMMAND} -E copy "${NODE_SUBDIR} /icon.ico"
794- "${BUILD_BIN_DIR} "
790+ COMMAND ${CMAKE_COMMAND} -E copy "${NODE_ROOT_SUBDIR} /package.json" "${BUILD_BIN_DIR} "
791+ COMMAND ${CMAKE_COMMAND} -E copy "${NODE_SUBDIR} /modIcon_win.js" "${BUILD_BIN_DIR} "
792+ COMMAND ${CMAKE_COMMAND} -E copy "${NODE_SUBDIR} /icon.ico" "${BUILD_BIN_DIR} "
795793 COMMAND ${NODE_EXE} "${BUILD_BIN_DIR} /modIcon_win.js"
796- COMMAND ${CMAKE_COMMAND} -E remove "${BUILD_BIN_DIR} /modIcon_win.js"
797- "${BUILD_BIN_DIR} /icon.ico" "${BUILD_BIN_DIR} /package.json"
794+ COMMAND ${CMAKE_COMMAND} -E remove "${BUILD_BIN_DIR} /modIcon_win.js" "${BUILD_BIN_DIR} /icon.ico" "${BUILD_BIN_DIR} /package.json"
798795 COMMAND ${CMAKE_COMMAND} -E echo "[5] Modifying exe icon"
796+ BYPRODUCTS "${OUT_BIN} "
799797 VERBATIM )
800798 else ()
801799 add_custom_command (
802- OUTPUT ${OUT_BIN}
803- DEPENDS ${DIST_JS}
804- WORKING_DIRECTORY ${NODE_SUBDIR}
800+ OUTPUT "${OUT_BIN} "
801+ DEPENDS "${DIST_JS} "
805802 COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_BIN_DIR} "
806803 COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_BIN_BUILD_DIR} "
807- COMMAND ${CMAKE_COMMAND} -E echo
808- "[3] packaging with pkg/npm exec/npx"
809- COMMAND ${PKG_CMD}
804+ COMMAND ${CMAKE_COMMAND} -E echo "[3] packaging with pkg/npm exec/npx"
805+ COMMAND ${CMAKE_COMMAND} -E chdir "${NODE_SUBDIR} " ${PKG_CMD}
810806 COMMAND ${CMAKE_COMMAND} -E echo "[4] Packaging with pkg"
807+ BYPRODUCTS "${OUT_BIN} "
811808 VERBATIM )
812809 endif ()
813810
814- add_custom_target (build_angel_lsp ALL DEPENDS ${OUT_BIN} )
811+ add_custom_target (build_angel_lsp ALL DEPENDS " ${OUT_BIN} " )
815812 add_dependencies (WingHexExplorer2 build_angel_lsp)
816813endif ()
0 commit comments