From 65f009cbd3696103e91fe21fdba3d480a23f607f Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Fri, 18 Jul 2025 13:13:49 -0600 Subject: [PATCH 01/20] externpro/externpro 25.04 https://github.com/externpro/externpro/releases/tag/25.04 --- .devcontainer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer b/.devcontainer index d8cad11..de12dc2 160000 --- a/.devcontainer +++ b/.devcontainer @@ -1 +1 @@ -Subproject commit d8cad11d6008e7ff7487a1a7f1ae9c4cf1f712f4 +Subproject commit de12dc208298d0090a6e9efadf9eafd6018a549c From 90f8660f7cd331ffe8a85175427c26be37c6c9ef Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Fri, 18 Jul 2025 13:17:58 -0600 Subject: [PATCH 02/20] update docker-compose symbolic links --- docker-compose.sh | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.sh b/docker-compose.sh index 57f36db..85f182f 120000 --- a/docker-compose.sh +++ b/docker-compose.sh @@ -1 +1 @@ -.devcontainer/compose.bld.sh \ No newline at end of file +.devcontainer/compose.pro.sh \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 7e6cc2e..46c1f89 120000 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1 +1 @@ -.devcontainer/compose.pro.yml \ No newline at end of file +.devcontainer/compose.bld.yml \ No newline at end of file From 12eb11c42477aa6ec976202ceee563203765183a Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Fri, 18 Jul 2025 13:18:48 -0600 Subject: [PATCH 03/20] cmake 3.31 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c1c84c4..c69cb13 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.28) +cmake_minimum_required(VERSION 3.31) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/.devcontainer/cmake) project(externpro) set(XP_DOWNLOAD_URL "https://github.com/smanders/externpro/releases/download") From 6748b8bd1dd7ed9e06c56ebb63ea35788c3d9f2f Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Fri, 18 Jul 2025 13:21:52 -0600 Subject: [PATCH 04/20] CMakePresets: xpWindowsVs2022 --- CMakePresets.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakePresets.json b/CMakePresets.json index c8d0c39..5ec993b 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -2,6 +2,6 @@ "version": 8, "include": [ ".devcontainer/cmake/presets/xpLinuxMakefilesRelease.json", - ".devcontainer/cmake/presets/xpWindowsVs2019Package.json" + ".devcontainer/cmake/presets/xpWindowsVs2022.json" ] } From 9fbb5a42957128c790143d81df1c3f0668f30403 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Fri, 18 Jul 2025 13:23:31 -0600 Subject: [PATCH 05/20] add .github/workflows: build and release --- .github/workflows/build.yml | 21 +++++++++++++++++++++ .github/workflows/release.yml | 16 ++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..29d29a5 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,21 @@ +name: Build +on: + push: + branches: [ "dev" ] + pull_request: + branches: [ "dev" ] + workflow_dispatch: +jobs: + linux: + uses: externpro/externpro/.github/workflows/build-linux.yml@25.04 + with: + runon: ubuntu-latest + secrets: inherit + linux-arm64: + uses: externpro/externpro/.github/workflows/build-linux.yml@25.04 + with: + runon: ubuntu-24.04-arm + secrets: inherit + windows: + uses: externpro/externpro/.github/workflows/build-windows.yml@25.04 + secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..6fa033b --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,16 @@ +name: Release +on: + workflow_dispatch: + inputs: + workflow_run_url: + description: 'URL of the workflow run containing artifacts to upload (e.g., https://github.com/owner/repo/actions/runs/123456789)' + required: true + type: string +jobs: + # Upload build artifacts as release assets + release-from-build: + uses: externpro/externpro/.github/workflows/release-from-build.yml@25.04 + with: + workflow_run_url: ${{ github.event.inputs.workflow_run_url }} + artifact_pattern: "*.tar.xz" + secrets: inherit From 31ccdf21110e6096386fd1b9224fd638ad9199cb Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Mon, 21 Jul 2025 13:36:39 -0600 Subject: [PATCH 06/20] externpro 25.04.2-11-ga9d1486 --- .devcontainer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer b/.devcontainer index de12dc2..a9d1486 160000 --- a/.devcontainer +++ b/.devcontainer @@ -1 +1 @@ -Subproject commit de12dc208298d0090a6e9efadf9eafd6018a549c +Subproject commit a9d14866e909e51dc57daa0c6c782a36de7536d3 From 93b0f7e0adeab6a676a10113a33abc4924fa6a9d Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Mon, 21 Jul 2025 14:01:02 -0600 Subject: [PATCH 07/20] remove nodejs and node-addon-api issue https://github.com/smanders/externpro/issues/407 --- patches/node-addon-api.patch | 38 -------- patches/nodejs.patch | 15 --- projects/README.md | 2 - projects/node-addon-api.cmake | 51 ---------- projects/nodejs.cmake | 177 ---------------------------------- 5 files changed, 283 deletions(-) delete mode 100644 patches/node-addon-api.patch delete mode 100644 patches/nodejs.patch delete mode 100644 projects/node-addon-api.cmake delete mode 100644 projects/nodejs.cmake diff --git a/patches/node-addon-api.patch b/patches/node-addon-api.patch deleted file mode 100644 index 7d196ff..0000000 --- a/patches/node-addon-api.patch +++ /dev/null @@ -1,38 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -new file mode 100644 -index 0000000..8b96b1d ---- /dev/null -+++ b/CMakeLists.txt -@@ -0,0 +1,32 @@ -+cmake_minimum_required(VERSION 3.24) -+project(node-addon-api) -+include(GNUInstallDirs) -+include(flags OPTIONAL) -+if(COMMAND xpFindPkg) -+ xpFindPkg(PKGS node) -+endif() -+set(lib_name ${PROJECT_NAME}) -+######################################## -+set(libsrcs -+ napi-inl.deprecated.h -+ napi-inl.h -+ napi.h -+ ) -+######################################## -+add_library(${lib_name} INTERFACE ${libsrcs}) -+target_include_directories(${lib_name} INTERFACE $) -+target_compile_definitions(${lib_name} INTERFACE NODE_ADDON_API_DISABLE_DEPRECATED NAPI_CPP_EXCEPTIONS) -+if(TARGET xpro::node) -+ target_link_libraries(${lib_name} INTERFACE xpro::node) -+endif() -+######################################## -+set(targetsFile ${PROJECT_NAME}-targets) -+install(TARGETS ${lib_name} EXPORT ${targetsFile}) -+install(FILES ${libsrcs} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}) -+if(DEFINED XP_NAMESPACE) -+ set(nameSpace NAMESPACE ${XP_NAMESPACE}::) -+endif() -+if(NOT DEFINED XP_INSTALL_CMAKEDIR) -+ set(XP_INSTALL_CMAKEDIR ${CMAKE_INSTALL_DATADIR}/cmake) -+endif() -+install(EXPORT ${targetsFile} DESTINATION ${XP_INSTALL_CMAKEDIR} ${nameSpace}) diff --git a/patches/nodejs.patch b/patches/nodejs.patch deleted file mode 100644 index b41e208..0000000 --- a/patches/nodejs.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/tools/msvs/find_nasm.cmd b/tools/msvs/find_nasm.cmd -index 09e7c7554a..c149452601 100644 ---- a/tools/msvs/find_nasm.cmd -+++ b/tools/msvs/find_nasm.cmd -@@ -21,4 +21,10 @@ if EXIST "%LOCALAPPDATA%\bin\NASM\nasm.exe" ( - EXIT /B 0 - ) - -+IF EXIST "%~dp0..\..\..\nasm\nasm.exe" ( -+ ECHO externpro %~dp0..\..\..\nasm -+ SET "Path=%Path%;%~dp0..\..\..\nasm" -+ EXIT /B 0 -+) -+ - EXIT /B 1 diff --git a/projects/README.md b/projects/README.md index 04f2319..c60d969 100644 --- a/projects/README.md +++ b/projects/README.md @@ -31,8 +31,6 @@ |[LLVM](http://llvm.org/ 'LLVM website')|[open](https://releases.llvm.org/11.0.0/LICENSE.TXT 'Apache License v2.0 with LLVM Exceptions')|The LLVM Compiler Infrastructure|11.0.0|[repo](https://github.com/llvm/llvm-project 'llvm repo on github')|none| |[Lua](http://www.lua.org/ 'Lua website')|[open](http://www.lua.org/license.html 'MIT license')|a powerful, fast, lightweight, embeddable scripting language|5.2.3|[repo](https://github.com/LuaDist/lua 'lua repo on github')|[diff](https://github.com/externpro/lua/compare/LuaDist:5.2.3...xp5.2.3 'patch/diff')| |[nasm](https://www.nasm.us/ 'nasm website')|[BSD](https://www.nasm.us/ 'Simplified (2-clause) BSD license')|The Netwide Assembler - an 80x86 and x86-64 assembler|2.14.02|none|none| -|[node-addon-api](https://github.com/nodejs/node-addon-api 'node-addon-api on github')|[open](https://github.com/nodejs/node-addon-api/blob/3.0.2/LICENSE.md 'The MIT License - http://opensource.org/licenses/mit-license.php')|Module for using N-API from C++|3.0.2|[repo](https://github.com/nodejs/node-addon-api 'node-addon-api repo on github')|[diff](https://github.com/externpro/node-addon-api/compare/nodejs:3.0.2...xp3.0.2 'patch/diff')| -|[Node.js](http://nodejs.org 'Node.js website')|[open](https://raw.githubusercontent.com/nodejs/node/v14.17.6/LICENSE 'MIT license')|platform to build scalable network applications|14.17.6|[repo](https://github.com/nodejs/node 'node repo on github')|[diff](https://github.com/externpro/node/compare/nodejs:v14.17.6...xp14.17.6 'patch/diff')| |[OpenH264](http://www.openh264.org/ 'OpenH264 website')|[open](http://www.openh264.org/faq.html 'Two-Clause BSD license')|a codec library which supports H.264 encoding and decoding|1.4.0|[repo](https://github.com/cisco/openh264 'openh264 repo on github')|[diff](https://github.com/externpro/openh264/compare/cisco:v1.4.0...xp1.4.0 'patch/diff')| |[OpenSSL](http://www.openssl.org/ 'OpenSSL website')|[open](http://www.openssl.org/source/license.html 'OpenSSL, SSLeay License: BSD-style')|Cryptography and SSL/TLS Toolkit|1.1.1l|[repo](https://github.com/openssl/openssl 'openssl repo on github')|[diff](https://github.com/externpro/openssl/compare/openssl:OpenSSL_1_1_1l...xp_1_1_1l 'patch/diff')| |[protobuf](https://developers.google.com/protocol-buffers/ 'Protocol Buffers website')|[open](https://github.com/protocolbuffers/protobuf/blob/v3.14.0/LICENSE '3-clause BSD license')|language-neutral, platform-neutral extensible mechanism for serializing structured data|3.14.0|[repo](https://github.com/protocolbuffers/protobuf 'protobuf repo on github')|[diff](https://github.com/externpro/protobuf/compare/protocolbuffers:v3.14.0...xp3.14.0 'patch/diff')| diff --git a/projects/node-addon-api.cmake b/projects/node-addon-api.cmake deleted file mode 100644 index 9104ae5..0000000 --- a/projects/node-addon-api.cmake +++ /dev/null @@ -1,51 +0,0 @@ -# node-addon-api -# xpbuild:cmake-scratch -xpProOption(node-addon-api) -set(VER 3.0.2) -set(REPO https://github.com/nodejs/node-addon-api) -set(FORK https://github.com/externpro/node-addon-api) -set(PRO_NODE-ADDON-API - NAME node-addon-api - WEB "node-addon-api" ${REPO} "node-addon-api on github" - LICENSE "open" ${REPO}/blob/${VER}/LICENSE.md "The MIT License - http://opensource.org/licenses/mit-license.php" - DESC "Module for using N-API from C++" - REPO "repo" ${REPO} "node-addon-api repo on github" - GRAPH BUILD_DEPS nodejs - VER ${VER} - GIT_ORIGIN ${FORK} - GIT_UPSTREAM ${REPO} - GIT_TRACKING_BRANCH main - GIT_TAG xp${VER} # what to 'git checkout' - GIT_REF ${VER} # create patch from this tag to 'git checkout' - DLURL ${REPO}/archive/${VER}.tar.gz - DLMD5 020c40cbb9af791f7934fa66f87c904c - DLNAME node-addon-api-${VER}.tar.gz - PATCH ${PATCH_DIR}/node-addon-api.patch - DIFF ${FORK}/compare/nodejs: - ) -######################################## -function(build_node_addon_api) - if(NOT (XP_DEFAULT OR XP_PRO_NODE-ADDON-API)) - return() - endif() - xpBuildDeps(depTgts ${PRO_NODE-ADDON-API}) - xpGetArgValue(${PRO_NODE-ADDON-API} ARG NAME VALUE NAME) - xpGetArgValue(${PRO_NODE-ADDON-API} ARG VER VALUE VER) - set(XP_CONFIGURE - -DCMAKE_INSTALL_INCLUDEDIR=include/${NAME}_${VER} - -DXP_INSTALL_CMAKEDIR=share/cmake/tgt-${NAME} - -DXP_MODULE_PATH=${CMAKE_DIR} - -DXP_NAMESPACE:STRING=xpro - ) - set(FIND_DEPS "xpFindPkg(PKGS node)\n") - set(TARGETS_FILE tgt-${NAME}/${NAME}-targets.cmake) - string(TOUPPER ${NAME} PRJ) - set(USE_VARS "set(${PRJ}_LIBRARIES xpro::${NAME})\n") - set(USE_VARS "${USE_VARS}list(APPEND reqVars ${PRJ}_LIBRARIES)\n") - configure_file(${MODULES_DIR}/usexp.cmake.in - ${STAGE_DIR}/share/cmake/usexp-${NAME}-config.cmake - @ONLY NEWLINE_STYLE LF - ) - set(BUILD_CONFIGS Release) # this project is only copying headers - xpCmakeBuild(${NAME} "${depTgts}" "${XP_CONFIGURE}") -endfunction() diff --git a/projects/nodejs.cmake b/projects/nodejs.cmake deleted file mode 100644 index c5520ad..0000000 --- a/projects/nodejs.cmake +++ /dev/null @@ -1,177 +0,0 @@ -# nodejs -# xpbuild:gyp -set(VER 14.17.6) -xpProOption(nodejs) -set(REPO https://github.com/nodejs/node) -set(FORK https://github.com/externpro/node) -set(PRO_NODEJS - NAME nodejs - WEB "Node.js" http://nodejs.org "Node.js website" - LICENSE "open" https://raw.githubusercontent.com/nodejs/node/v${VER}/LICENSE "MIT license" - DESC "platform to build scalable network applications" - REPO "repo" ${REPO} "node repo on github" - GRAPH GRAPH_NODE nodejs BUILD_DEPS nasm - VER ${VER} - GIT_ORIGIN ${FORK} - GIT_UPSTREAM ${REPO} - GIT_TRACKING_BRANCH main - GIT_TAG xp${VER} # what to 'git checkout' - GIT_REF v${VER} # create patch from this tag to 'git checkout' - PATCH ${PATCH_DIR}/nodejs.patch - DIFF ${FORK}/compare/nodejs: - DLURL http://nodejs.org/dist/v${VER}/node-v${VER}.tar.gz - DLMD5 d1f71584169c9d293e5264e1966c703e - DEPS_FUNC build_nodejs - ) -#################### -function(build_nodejs) - if(NOT (XP_DEFAULT OR XP_PRO_NODEJS)) - return() - endif() - find_package(Python) - if(NOT Python_FOUND) - message(FATAL_ERROR "Unable to build nodejs, required Python not found") - return() - endif() - if(WIN32) - if(NOT (XP_DEFAULT OR XP_PRO_NASM)) - message(STATUS "nodejs.cmake: requires nasm") - set(XP_PRO_NASM ON CACHE BOOL "include nasm" FORCE) - xpPatchProject(${PRO_NASM}) - endif() - endif() - set(NAME node) - xpGetArgValue(${PRO_NODEJS} ARG VER VALUE VER) - set(FIND_DEPS "set(nodeVer ${VER}) # for xpnode.cmake\n") - set(TARGETS_FILE xpnode.cmake) - string(TOUPPER ${NAME} PRJ) - set(USE_VARS "set(${PRJ}_LIBRARIES xpro::${NAME})\n") - set(USE_VARS "${USE_VARS}set(${PRJ}_EXE \${XP_ROOTDIR}/bin/${NAME}\${CMAKE_EXECUTABLE_SUFFIX})\n") - set(USE_VARS "${USE_VARS}list(APPEND reqVars ${PRJ}_LIBRARIES ${PRJ}_EXE)\n") - configure_file(${MODULES_DIR}/usexp.cmake.in - ${STAGE_DIR}/share/cmake/usexp-${NAME}-config.cmake - @ONLY NEWLINE_STYLE LF - ) - configure_file(${MODULES_DIR}/xpnode.cmake ${STAGE_DIR}/share/cmake/ COPYONLY) - if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") - if(${BUILD_PLATFORM} STREQUAL "64") - set(destcpu arm64) - elseif(${BUILD_PLATFORM} STREQUAL "32") - set(destcpu arm) - endif() - elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") - set(destcpu arm64) - else() - if(${BUILD_PLATFORM} STREQUAL "64") - set(destcpu x64) - elseif(${BUILD_PLATFORM} STREQUAL "32") - set(destcpu ia32) - else() - message(FATAL_ERROR "nodejs.cmake: cpu") - endif() - endif() - if(MSVC) - set(XP_CONFIGURE_BASE vcbuild) - set(XP_CONFIGURE_Release ${XP_CONFIGURE_BASE} release ${destcpu}) - set(XP_CONFIGURE_Debug ${XP_CONFIGURE_BASE} debug ${destcpu}) - elseif(UNIX) - if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - set(destos linux) - elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") - set(destos mac) - else() - message(FATAL_ERROR "nodejs.cmake: os") - endif() - list(APPEND XP_CONFIGURE_BASE /configure - --prefix= - --without-etw --without-dtrace - # TODO: explore --tag=TAG custom build tag - # TODO: explore --fully-static - --dest-cpu=${destcpu} --dest-os=${destos} - ) - set(XP_CONFIGURE_Release ${XP_CONFIGURE_BASE}) - set(XP_CONFIGURE_Debug ${XP_CONFIGURE_BASE} --debug --gdb) - else() - message(FATAL_ERROR "nodejs.cmake: unsupported OS platform") - endif() - set(nodejs_DEPS nodejs) - # TODO: support Debug by renaming files going into STAGE_DIR? - set(BUILD_CONFIGS Release) - foreach(cfg ${BUILD_CONFIGS}) - set(XP_CONFIGURE_CMD ${XP_CONFIGURE_${cfg}}) - addproject_nodejs(nodejs ${cfg}) - endforeach() # cfg - # copy headers to STAGE_DIR - ExternalProject_Get_Property(nodejs SOURCE_DIR) - set(nodejsHdrs ${SOURCE_DIR}/src/*.h) - set(uvDir ${SOURCE_DIR}/deps/uv/include) - set(v8Hdrs ${SOURCE_DIR}/deps/v8/include/*.h) - set(cppgcHdrs ${SOURCE_DIR}/deps/v8/include/cppgc/*.h) - set(XP_TARGET nodejs_stage) - if(NOT TARGET ${XP_TARGET}) - ExternalProject_Add(${XP_TARGET} DEPENDS ${nodejs_DEPS} - DOWNLOAD_DIR ${NULL_DIR} BINARY_DIR ${NULL_DIR} - SOURCE_DIR ${NULL_DIR} INSTALL_DIR ${STAGE_DIR}/include/node_${VER}/node - DOWNLOAD_COMMAND ${CMAKE_COMMAND} -E copy_directory ${uvDir} - CONFIGURE_COMMAND ${CMAKE_COMMAND} -Dsrc:STRING=${nodejsHdrs} - -Ddst:STRING= -P ${MODULES_DIR}/cmscopyfiles.cmake - BUILD_COMMAND ${CMAKE_COMMAND} -Dsrc:STRING=${v8Hdrs} - -Ddst:STRING= -P ${MODULES_DIR}/cmscopyfiles.cmake - INSTALL_COMMAND ${CMAKE_COMMAND} -Dsrc:STRING=${cppgcHdrs} - -Ddst:STRING=/cppgc -P ${MODULES_DIR}/cmscopyfiles.cmake - ) - set_property(TARGET ${XP_TARGET} PROPERTY FOLDER ${bld_folder}) - endif() -endfunction() -#################### -macro(addproject_nodejs basename cfg) - set(XP_TARGET ${basename}_${cfg}) - ExternalProject_Get_Property(${basename} SOURCE_DIR) - set(nodejsSrcDir ${SOURCE_DIR}) - if(NOT TARGET ${XP_TARGET}) - if(XP_BUILD_VERBOSE) - message(STATUS "target ${XP_TARGET}") - xpVerboseListing("[CONFIGURE]" "${XP_CONFIGURE_CMD}") - else() - message(STATUS "target ${XP_TARGET}") - endif() - if(MSVC) - # TRICKY: vcbuild doesn't seem to return a good exit status or something... - # MSVC thinks it always needs to build this (after what appears to be a - # successful build) -- and there can't be any external project steps - # after the step with vcbuild or they won't execute - ExternalProject_Add(${XP_TARGET}vcbuild DEPENDS ${nodejs_DEPS} - DOWNLOAD_COMMAND "" DOWNLOAD_DIR ${NULL_DIR} - SOURCE_DIR ${nodejsSrcDir} INSTALL_DIR ${NULL_DIR} - CONFIGURE_COMMAND ${XP_CONFIGURE_CMD} - BUILD_IN_SOURCE 1 # == - ) - set_property(TARGET ${XP_TARGET}vcbuild PROPERTY FOLDER ${bld_folder}) - list(APPEND nodejs_DEPS ${XP_TARGET}vcbuild) # serialize the build - set(binNode /${cfg}/node.exe) - set(libNode /${cfg}/node.lib) - set(XP_CONFIGURE_CMD ${CMAKE_COMMAND} -E echo "Configure MSVC...") - set(XP_BUILD_CMD ${CMAKE_COMMAND} -E make_directory ${STAGE_DIR}/lib) - set(XP_INSTALL_CMD ${CMAKE_COMMAND} -E copy ${libNode} ${STAGE_DIR}/lib) - elseif(UNIX) - set(binNode /out/${cfg}/node) - set(XP_BUILD_CMD) # use default - set(XP_INSTALL_CMD) # use default - endif() - ExternalProject_Add(${XP_TARGET} DEPENDS ${nodejs_DEPS} - DOWNLOAD_COMMAND "" DOWNLOAD_DIR ${NULL_DIR} - SOURCE_DIR ${nodejsSrcDir} INSTALL_DIR ${NULL_DIR} - CONFIGURE_COMMAND ${XP_CONFIGURE_CMD} - BUILD_COMMAND ${XP_BUILD_CMD} - BUILD_IN_SOURCE 1 # == - INSTALL_COMMAND ${XP_INSTALL_CMD} - ) - ExternalProject_Add_Step(${XP_TARGET} copy_bin - COMMAND ${CMAKE_COMMAND} -E make_directory ${STAGE_DIR}/bin - COMMAND ${CMAKE_COMMAND} -E copy ${binNode} ${STAGE_DIR}/bin - DEPENDEES install - ) - set_property(TARGET ${XP_TARGET} PROPERTY FOLDER ${bld_folder}) - endif() - list(APPEND nodejs_DEPS ${XP_TARGET}) # serialize the build -endmacro() From cb488ba2d2ead72f9a32234cff597f8f0310003a Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Mon, 21 Jul 2025 14:02:06 -0600 Subject: [PATCH 08/20] README update dependency graph --- projects/README.md | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/projects/README.md b/projects/README.md index c60d969..4a70937 100644 --- a/projects/README.md +++ b/projects/README.md @@ -73,10 +73,10 @@ ## dependency graph -![deps.dot graph](https://g.gravizo.com/source/depgraph_c0d2d8c18f109be8c73c926f53b33875?https%3A%2F%2Fraw.githubusercontent.com%2Fsmanders%2Fexternpro%2Fdev%2Fprojects%2FREADME.md) +![deps.dot graph](https://g.gravizo.com/source/depgraph_7cd73afe20728100d29c1541951cabaa?https%3A%2F%2Fraw.githubusercontent.com%2Fsmanders%2Fexternpro%2Fdev%2Fprojects%2FREADME.md)
-depgraph_c0d2d8c18f109be8c73c926f53b33875 +depgraph_7cd73afe20728100d29c1541951cabaa digraph GG { node [fontsize=12]; activemqcpp [shape=diamond]; @@ -87,7 +87,6 @@ digraph GG { azmq -> libzmq; azmq -> boost; boost [shape=diamond]; - boost -> zlib; boost -> bzip2; bzip2 [shape=diamond]; cares [label="c-ares" shape=diamond]; @@ -114,7 +113,6 @@ digraph GG { libgit2 [shape=diamond]; libgit2 -> libssh2; libssh2 [shape=diamond]; - libssh2 -> zlib; libssh2 -> openssl; libstrophe [shape=diamond]; libstrophe -> expat; @@ -123,18 +121,12 @@ digraph GG { libzmq -> sodium; llvm [shape=box]; nasm [shape=box]; - node_addon_api [label="node-addon-api" shape=diamond]; - node_addon_api -> nodejs; - nodejs [shape=diamond]; - nodejs -> nasm; openh264 [shape=diamond]; openh264 -> yasm; openssl [shape=diamond]; openssl -> opensslasm; openssl -> nasm; opensslasm [shape=diamond]; - protobuf [shape=diamond]; - protobuf -> zlib; sodium [shape=diamond]; wx [shape=diamond]; wxinclude [shape=box]; @@ -142,9 +134,8 @@ digraph GG { wxx [shape=diamond]; wxx -> wx; yasm [shape=box]; - zlib [shape=diamond]; zmqpp [shape=diamond]; zmqpp -> libzmq; } -depgraph_c0d2d8c18f109be8c73c926f53b33875 +depgraph_7cd73afe20728100d29c1541951cabaa
From f6478c3dc489c86553ade5bcdc2937b374b463be Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Mon, 21 Jul 2025 14:22:51 -0600 Subject: [PATCH 09/20] boost: update DLURL --- projects/boost.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/boost.cmake b/projects/boost.cmake index 0c6af57..b579b82 100644 --- a/projects/boost.cmake +++ b/projects/boost.cmake @@ -15,7 +15,7 @@ set(PRO_BOOST VER ${VER} GIT_ORIGIN ${REPO} GIT_TAG boost-${VER} # what to 'git checkout' - DLURL https://boostorg.jfrog.io/artifactory/main/release/${VER}/source/boost_${VER_}.tar.bz2 + DLURL https://archives.boost.io/release/${VER}/source/boost_${VER_}.tar.bz2 DLMD5 33334dd7f862e8ac9fe1cc7c6584fb6d DEPS_FUNC build_boost SUBPRO boostbeast boostdll boostgil boostgraph boostinstall boostinterprocess boostprogram_options boostprogram_optionshpp boostregex boostunits From 805dec8ad332c5f94555749891a90c95d45640e9 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 22 Jul 2025 13:01:29 -0600 Subject: [PATCH 10/20] externpro 25.04.2-19-g5ce6b45 --- .devcontainer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer b/.devcontainer index a9d1486..5ce6b45 160000 --- a/.devcontainer +++ b/.devcontainer @@ -1 +1 @@ -Subproject commit a9d14866e909e51dc57daa0c6c782a36de7536d3 +Subproject commit 5ce6b4573eba33f9803d6f30ffc807a7d5e5dfe7 From 896864c07b3821f99bc5fc7c546c944583984ee5 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 22 Jul 2025 13:07:47 -0600 Subject: [PATCH 11/20] externpro/.github/workflows @legacy --- .github/workflows/build.yml | 6 +++--- .github/workflows/release.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 29d29a5..768b7b4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,15 +7,15 @@ on: workflow_dispatch: jobs: linux: - uses: externpro/externpro/.github/workflows/build-linux.yml@25.04 + uses: externpro/externpro/.github/workflows/build-linux.yml@legacy with: runon: ubuntu-latest secrets: inherit linux-arm64: - uses: externpro/externpro/.github/workflows/build-linux.yml@25.04 + uses: externpro/externpro/.github/workflows/build-linux.yml@legacy with: runon: ubuntu-24.04-arm secrets: inherit windows: - uses: externpro/externpro/.github/workflows/build-windows.yml@25.04 + uses: externpro/externpro/.github/workflows/build-windows.yml@legacy secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6fa033b..c0704cd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,7 +9,7 @@ on: jobs: # Upload build artifacts as release assets release-from-build: - uses: externpro/externpro/.github/workflows/release-from-build.yml@25.04 + uses: externpro/externpro/.github/workflows/release-from-build.yml@legacy with: workflow_run_url: ${{ github.event.inputs.workflow_run_url }} artifact_pattern: "*.tar.xz" From 9c78b0b3319348ec625cdd8f5f0f6e45fbb3bf0a Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 22 Jul 2025 13:30:36 -0600 Subject: [PATCH 12/20] nasm from pros.cmake issue https://github.com/smanders/externpro/issues/407 --- projects/README.md | 9 +++------ projects/nasm.cmake | 14 -------------- projects/openssl.cmake | 17 ++++++----------- 3 files changed, 9 insertions(+), 31 deletions(-) delete mode 100644 projects/nasm.cmake diff --git a/projects/README.md b/projects/README.md index 4a70937..a5f45c5 100644 --- a/projects/README.md +++ b/projects/README.md @@ -30,7 +30,6 @@ |[libzmq](https://zeromq.org/ 'ZeroMQ website')|[open](http://wiki.zeromq.org/area:licensing 'GNU LGPL plus static linking exception')|high-performance asynchronous messaging library|4.3.4|[repo](https://github.com/zeromq/libzmq 'zeromq/libzmq repo on github')|[diff](https://github.com/externpro/libzmq/compare/zeromq:v4.3.4...xp4.3.4 'patch/diff')| |[LLVM](http://llvm.org/ 'LLVM website')|[open](https://releases.llvm.org/11.0.0/LICENSE.TXT 'Apache License v2.0 with LLVM Exceptions')|The LLVM Compiler Infrastructure|11.0.0|[repo](https://github.com/llvm/llvm-project 'llvm repo on github')|none| |[Lua](http://www.lua.org/ 'Lua website')|[open](http://www.lua.org/license.html 'MIT license')|a powerful, fast, lightweight, embeddable scripting language|5.2.3|[repo](https://github.com/LuaDist/lua 'lua repo on github')|[diff](https://github.com/externpro/lua/compare/LuaDist:5.2.3...xp5.2.3 'patch/diff')| -|[nasm](https://www.nasm.us/ 'nasm website')|[BSD](https://www.nasm.us/ 'Simplified (2-clause) BSD license')|The Netwide Assembler - an 80x86 and x86-64 assembler|2.14.02|none|none| |[OpenH264](http://www.openh264.org/ 'OpenH264 website')|[open](http://www.openh264.org/faq.html 'Two-Clause BSD license')|a codec library which supports H.264 encoding and decoding|1.4.0|[repo](https://github.com/cisco/openh264 'openh264 repo on github')|[diff](https://github.com/externpro/openh264/compare/cisco:v1.4.0...xp1.4.0 'patch/diff')| |[OpenSSL](http://www.openssl.org/ 'OpenSSL website')|[open](http://www.openssl.org/source/license.html 'OpenSSL, SSLeay License: BSD-style')|Cryptography and SSL/TLS Toolkit|1.1.1l|[repo](https://github.com/openssl/openssl 'openssl repo on github')|[diff](https://github.com/externpro/openssl/compare/openssl:OpenSSL_1_1_1l...xp_1_1_1l 'patch/diff')| |[protobuf](https://developers.google.com/protocol-buffers/ 'Protocol Buffers website')|[open](https://github.com/protocolbuffers/protobuf/blob/v3.14.0/LICENSE '3-clause BSD license')|language-neutral, platform-neutral extensible mechanism for serializing structured data|3.14.0|[repo](https://github.com/protocolbuffers/protobuf 'protobuf repo on github')|[diff](https://github.com/externpro/protobuf/compare/protocolbuffers:v3.14.0...xp3.14.0 'patch/diff')| @@ -73,10 +72,10 @@ ## dependency graph -![deps.dot graph](https://g.gravizo.com/source/depgraph_7cd73afe20728100d29c1541951cabaa?https%3A%2F%2Fraw.githubusercontent.com%2Fsmanders%2Fexternpro%2Fdev%2Fprojects%2FREADME.md) +![deps.dot graph](https://g.gravizo.com/source/depgraph_2b9c3efa0f7bf9aa5d4919eaaf1ad243?https%3A%2F%2Fraw.githubusercontent.com%2Fsmanders%2Fexternpro%2Fdev%2Fprojects%2FREADME.md)
-depgraph_7cd73afe20728100d29c1541951cabaa +depgraph_2b9c3efa0f7bf9aa5d4919eaaf1ad243 digraph GG { node [fontsize=12]; activemqcpp [shape=diamond]; @@ -120,12 +119,10 @@ digraph GG { libzmq [shape=diamond]; libzmq -> sodium; llvm [shape=box]; - nasm [shape=box]; openh264 [shape=diamond]; openh264 -> yasm; openssl [shape=diamond]; openssl -> opensslasm; - openssl -> nasm; opensslasm [shape=diamond]; sodium [shape=diamond]; wx [shape=diamond]; @@ -137,5 +134,5 @@ digraph GG { zmqpp [shape=diamond]; zmqpp -> libzmq; } -depgraph_7cd73afe20728100d29c1541951cabaa +depgraph_2b9c3efa0f7bf9aa5d4919eaaf1ad243
diff --git a/projects/nasm.cmake b/projects/nasm.cmake deleted file mode 100644 index 6cfae6c..0000000 --- a/projects/nasm.cmake +++ /dev/null @@ -1,14 +0,0 @@ -# nasm -xpProOption(nasm) -set(VER 2.14.02) -set(URL https://www.nasm.us/) -set(PRO_NASM - NAME nasm - WEB "nasm" ${URL} "nasm website" - LICENSE "BSD" ${URL} "Simplified (2-clause) BSD license" - DESC "The Netwide Assembler - an 80x86 and x86-64 assembler" - GRAPH GRAPH_SHAPE box - VER ${VER} - DLURL ${URL}/pub/nasm/releasebuilds/${VER}/win64/nasm-${VER}-win64.zip - DLMD5 bce3b7e205bab546ead85db761df89db - ) diff --git a/projects/openssl.cmake b/projects/openssl.cmake index 59d5791..27bec13 100644 --- a/projects/openssl.cmake +++ b/projects/openssl.cmake @@ -12,7 +12,7 @@ set(PRO_OPENSSL LICENSE "open" http://www.openssl.org/source/license.html "OpenSSL, SSLeay License: BSD-style" DESC "Cryptography and SSL/TLS Toolkit" REPO "repo" ${REPO} "openssl repo on github" - GRAPH BUILD_DEPS opensslasm nasm + GRAPH BUILD_DEPS opensslasm VER ${VER} GIT_ORIGIN ${FORK} GIT_UPSTREAM ${REPO} @@ -32,14 +32,9 @@ function(build_openssl) return() endif() if(WIN32) - if(NOT (XP_DEFAULT OR XP_PRO_NASM)) - message(STATUS "openssl.cmake: requires nasm") - set(XP_PRO_NASM ON CACHE BOOL "include nasm" FORCE) - xpPatchProject(${PRO_NASM}) - endif() - ExternalProject_Get_Property(nasm SOURCE_DIR) - set(NASM_EXE "-DCMAKE_ASM_NASM_COMPILER=${SOURCE_DIR}/nasm.exe") - set(depTgts nasm) + xpFindPkg(PKGS nasm) + xpGetPkgVar(nasm EXE) # sets NASM_EXE + set(NASM_PATH "-DCMAKE_ASM_NASM_COMPILER=${NASM_EXE}") endif() xpGetArgValue(${PRO_OPENSSL} ARG NAME VALUE NAME) xpGetArgValue(${PRO_OPENSSL} ARG VER VALUE VER) @@ -48,7 +43,7 @@ function(build_openssl) -DCMAKE_INSTALL_LIBDIR=lib -DXP_INSTALL_CMAKEDIR=share/cmake/tgt-${NAME} -DXP_NAMESPACE:STRING=xpro - ${NASM_EXE} + ${NASM_PATH} ) set(FIND_DEPS "set(THREAD_PREFER_PTHREAD_FLAG ON)\n") set(FIND_DEPS "${FIND_DEPS}find_package(Threads REQUIRED)") @@ -61,7 +56,7 @@ function(build_openssl) ${STAGE_DIR}/share/cmake/usexp-${NAME}-config.cmake @ONLY NEWLINE_STYLE LF ) - xpCmakeBuild(${NAME} "${depTgts}" "${XP_CONFIGURE}" ${NAME}Targets) + xpCmakeBuild(${NAME} "" "${XP_CONFIGURE}" ${NAME}Targets) if(ARGN) set(${ARGN} "${${NAME}Targets}" PARENT_SCOPE) endif() From a372032e99ac86cec1ad8ee892e36480ea652cee Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 22 Jul 2025 13:34:51 -0600 Subject: [PATCH 13/20] only build openssl Release, for now --- CMakePresetsBase.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CMakePresetsBase.json b/CMakePresetsBase.json index c602c99..efd6796 100644 --- a/CMakePresetsBase.json +++ b/CMakePresetsBase.json @@ -6,7 +6,10 @@ "hidden": true, "binaryDir": "${sourceDir}/_bld-${presetName}", "cacheVariables": { - "XP_STEP": "build" + "XP_STEP": "build", + "XP_DEFAULT": "OFF", + "XP_PRO_OPENSSL": "ON", + "XP_BUILD_DEBUG": "OFF" } } ] From d5c004c537493ad823503bad92e35825d5572ea7 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 22 Jul 2025 18:30:21 -0600 Subject: [PATCH 14/20] build: cmake-workflow-preset [Linux|Windows]Release --- .github/workflows/build.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 768b7b4..2d93666 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,13 +9,17 @@ jobs: linux: uses: externpro/externpro/.github/workflows/build-linux.yml@legacy with: + cmake-workflow-preset: LinuxRelease runon: ubuntu-latest secrets: inherit linux-arm64: uses: externpro/externpro/.github/workflows/build-linux.yml@legacy with: + cmake-workflow-preset: LinuxRelease runon: ubuntu-24.04-arm secrets: inherit windows: uses: externpro/externpro/.github/workflows/build-windows.yml@legacy + with: + cmake-workflow-preset: WindowsRelease secrets: inherit From 7e630d086b2f5f8100886f197897e4e790b517df Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 22 Jul 2025 18:35:12 -0600 Subject: [PATCH 15/20] build: xpLinuxMakefilesRelease only has cmake-workflow-preset Linux (the default) --- .github/workflows/build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2d93666..aa0b8f0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,13 +9,11 @@ jobs: linux: uses: externpro/externpro/.github/workflows/build-linux.yml@legacy with: - cmake-workflow-preset: LinuxRelease runon: ubuntu-latest secrets: inherit linux-arm64: uses: externpro/externpro/.github/workflows/build-linux.yml@legacy with: - cmake-workflow-preset: LinuxRelease runon: ubuntu-24.04-arm secrets: inherit windows: From b9b995d146cb9c0fb6ac8d35e00f9af872fe63d7 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 22 Jul 2025 18:46:27 -0600 Subject: [PATCH 16/20] openssl: depends on opensslasm issue https://github.com/smanders/externpro/issues/407 --- projects/openssl.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/openssl.cmake b/projects/openssl.cmake index 27bec13..303981e 100644 --- a/projects/openssl.cmake +++ b/projects/openssl.cmake @@ -32,6 +32,7 @@ function(build_openssl) return() endif() if(WIN32) + xpBuildDeps(depTgts ${PRO_OPENSSL}) xpFindPkg(PKGS nasm) xpGetPkgVar(nasm EXE) # sets NASM_EXE set(NASM_PATH "-DCMAKE_ASM_NASM_COMPILER=${NASM_EXE}") @@ -56,7 +57,7 @@ function(build_openssl) ${STAGE_DIR}/share/cmake/usexp-${NAME}-config.cmake @ONLY NEWLINE_STYLE LF ) - xpCmakeBuild(${NAME} "" "${XP_CONFIGURE}" ${NAME}Targets) + xpCmakeBuild(${NAME} "${depTgts}" "${XP_CONFIGURE}" ${NAME}Targets) if(ARGN) set(${ARGN} "${${NAME}Targets}" PARENT_SCOPE) endif() From 4ebeadece4c51a28a49ca8a0e814618ac87ffe47 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 22 Jul 2025 23:05:14 -0600 Subject: [PATCH 17/20] externpro/.github/workflows @25.04 --- .github/workflows/build.yml | 6 +++--- .github/workflows/release.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index aa0b8f0..8a55c10 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,17 +7,17 @@ on: workflow_dispatch: jobs: linux: - uses: externpro/externpro/.github/workflows/build-linux.yml@legacy + uses: externpro/externpro/.github/workflows/build-linux.yml@25.04 with: runon: ubuntu-latest secrets: inherit linux-arm64: - uses: externpro/externpro/.github/workflows/build-linux.yml@legacy + uses: externpro/externpro/.github/workflows/build-linux.yml@25.04 with: runon: ubuntu-24.04-arm secrets: inherit windows: - uses: externpro/externpro/.github/workflows/build-windows.yml@legacy + uses: externpro/externpro/.github/workflows/build-windows.yml@25.04 with: cmake-workflow-preset: WindowsRelease secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c0704cd..6fa033b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,7 +9,7 @@ on: jobs: # Upload build artifacts as release assets release-from-build: - uses: externpro/externpro/.github/workflows/release-from-build.yml@legacy + uses: externpro/externpro/.github/workflows/release-from-build.yml@25.04 with: workflow_run_url: ${{ github.event.inputs.workflow_run_url }} artifact_pattern: "*.tar.xz" From b57693b640e06719fc3aa2d21935ab695f900681 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 22 Jul 2025 23:05:37 -0600 Subject: [PATCH 18/20] externpro 25.04.2-22-g7ab2975 --- .devcontainer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer b/.devcontainer index 5ce6b45..7ab2975 160000 --- a/.devcontainer +++ b/.devcontainer @@ -1 +1 @@ -Subproject commit 5ce6b4573eba33f9803d6f30ffc807a7d5e5dfe7 +Subproject commit 7ab29752ce582e82032dcc4c816100431d8faac1 From 135c6ce77f703710c356f296efbb67d9fc5a34fe Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 22 Jul 2025 23:08:50 -0600 Subject: [PATCH 19/20] only build rapidjson, for now --- CMakePresetsBase.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakePresetsBase.json b/CMakePresetsBase.json index efd6796..a5b975e 100644 --- a/CMakePresetsBase.json +++ b/CMakePresetsBase.json @@ -8,7 +8,7 @@ "cacheVariables": { "XP_STEP": "build", "XP_DEFAULT": "OFF", - "XP_PRO_OPENSSL": "ON", + "XP_PRO_RAPIDJSON": "ON", "XP_BUILD_DEBUG": "OFF" } } From 24cba4d85f3921108df093c6434726f4cd0fed8a Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Wed, 23 Jul 2025 10:09:03 -0600 Subject: [PATCH 20/20] only build bzip2, for now --- CMakePresetsBase.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakePresetsBase.json b/CMakePresetsBase.json index a5b975e..bd649b5 100644 --- a/CMakePresetsBase.json +++ b/CMakePresetsBase.json @@ -8,7 +8,7 @@ "cacheVariables": { "XP_STEP": "build", "XP_DEFAULT": "OFF", - "XP_PRO_RAPIDJSON": "ON", + "XP_PRO_BZIP2": "ON", "XP_BUILD_DEBUG": "OFF" } }