From 4c4b9f6fee526e9dc69912e1a95aa21d3dfb7645 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Wed, 29 Oct 2025 09:47:02 -0600 Subject: [PATCH 01/11] git submodule add https://github.com/externpro/externpro .devcontainer --- .devcontainer | 1 + .gitmodules | 3 +++ 2 files changed, 4 insertions(+) create mode 160000 .devcontainer create mode 100644 .gitmodules diff --git a/.devcontainer b/.devcontainer new file mode 160000 index 00000000..9392dab6 --- /dev/null +++ b/.devcontainer @@ -0,0 +1 @@ +Subproject commit 9392dab66088da3b820424480218fc88492927c7 diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..18932abf --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule ".devcontainer"] + path = .devcontainer + url = https://github.com/externpro/externpro From bc3b51c783a17cd46806745cab1bd20803b2e739 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Wed, 29 Oct 2025 10:16:57 -0600 Subject: [PATCH 02/11] docker-compose links --- docker-compose.sh | 1 + docker-compose.yml | 1 + 2 files changed, 2 insertions(+) create mode 120000 docker-compose.sh create mode 120000 docker-compose.yml diff --git a/docker-compose.sh b/docker-compose.sh new file mode 120000 index 00000000..85f182f0 --- /dev/null +++ b/docker-compose.sh @@ -0,0 +1 @@ +.devcontainer/compose.pro.sh \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 120000 index 00000000..46c1f891 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1 @@ +.devcontainer/compose.bld.yml \ No newline at end of file From 57b0a5164c0a422bd4fba49003eab79cd456f43a Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Wed, 29 Oct 2025 10:17:37 -0600 Subject: [PATCH 03/11] add CMakePresets cp .devcontainer/cmake/presets/CMakePresets* . --- CMakePresets.json | 8 ++++++++ CMakePresetsBase.json | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 CMakePresets.json create mode 100644 CMakePresetsBase.json diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 00000000..f82cfdd2 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,8 @@ +{ + "version": 8, + "include": [ + ".devcontainer/cmake/presets/xpLinuxNinja.json", + ".devcontainer/cmake/presets/xpDarwinNinja.json", + ".devcontainer/cmake/presets/xpWindowsVs2022.json" + ] +} diff --git a/CMakePresetsBase.json b/CMakePresetsBase.json new file mode 100644 index 00000000..085cdc3e --- /dev/null +++ b/CMakePresetsBase.json @@ -0,0 +1,16 @@ +{ + "version": 8, + "configurePresets": [ + { + "name": "config-base", + "hidden": true, + "binaryDir": "${sourceDir}/_bld-${presetName}" + } + ], + "buildPresets": [ + { + "name": "build-base", + "hidden": true + } + ] +} From fc35f9e3b4896f2c902b2cbf5130da13393902e7 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Wed, 29 Oct 2025 10:20:28 -0600 Subject: [PATCH 04/11] gitignore: add externpro ignores --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index d76e398f..382b456a 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,7 @@ x64 *.log *.trs .dirstamp +# externpro +.env +_bld*/ +docker-compose.override.yml From c9d1af0feb8529da6377bf12482c35b1453c3cc0 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Wed, 29 Oct 2025 10:30:34 -0600 Subject: [PATCH 05/11] externpro github/workflows @25.05.2 cp .devcontainer/.github/wf-templates/xp*.yml .github/workflows --- .github/workflows/xpbuild.yml | 30 ++++++++++++++++++++++++++++++ .github/workflows/xprelease.yml | 20 ++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 .github/workflows/xpbuild.yml create mode 100644 .github/workflows/xprelease.yml diff --git a/.github/workflows/xpbuild.yml b/.github/workflows/xpbuild.yml new file mode 100644 index 00000000..f0192ca9 --- /dev/null +++ b/.github/workflows/xpbuild.yml @@ -0,0 +1,30 @@ +name: Build +on: + push: + branches: [ "dev" ] + pull_request: + branches: [ "dev" ] + workflow_dispatch: +jobs: + linux: + uses: externpro/externpro/.github/workflows/build-linux.yml@25.05.2 + with: + cmake-workflow-preset: Linux + runon: ubuntu-latest + secrets: inherit + linux-arm64: + uses: externpro/externpro/.github/workflows/build-linux.yml@25.05.2 + with: + cmake-workflow-preset: Linux + runon: ubuntu-24.04-arm + secrets: inherit + macos: + uses: externpro/externpro/.github/workflows/build-macos.yml@25.05.2 + with: + cmake-workflow-preset: Darwin + secrets: inherit + windows: + uses: externpro/externpro/.github/workflows/build-windows.yml@25.05.2 + with: + cmake-workflow-preset: Windows + secrets: inherit diff --git a/.github/workflows/xprelease.yml b/.github/workflows/xprelease.yml new file mode 100644 index 00000000..273199e9 --- /dev/null +++ b/.github/workflows/xprelease.yml @@ -0,0 +1,20 @@ +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.05.2 + with: + workflow_run_url: ${{ github.event.inputs.workflow_run_url }} + artifact_pattern: "*.tar.xz" + permissions: + contents: write + id-token: write + attestations: write + secrets: inherit From 3d9172ae58e577b6fb86c9562036139856f88137 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Wed, 29 Oct 2025 10:43:56 -0600 Subject: [PATCH 06/11] xpbuild: cmake-workflow-preset Release --- .github/workflows/xpbuild.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/xpbuild.yml b/.github/workflows/xpbuild.yml index f0192ca9..b9166a83 100644 --- a/.github/workflows/xpbuild.yml +++ b/.github/workflows/xpbuild.yml @@ -9,22 +9,22 @@ jobs: linux: uses: externpro/externpro/.github/workflows/build-linux.yml@25.05.2 with: - cmake-workflow-preset: Linux + cmake-workflow-preset: LinuxRelease runon: ubuntu-latest secrets: inherit linux-arm64: uses: externpro/externpro/.github/workflows/build-linux.yml@25.05.2 with: - cmake-workflow-preset: Linux + cmake-workflow-preset: LinuxRelease runon: ubuntu-24.04-arm secrets: inherit macos: uses: externpro/externpro/.github/workflows/build-macos.yml@25.05.2 with: - cmake-workflow-preset: Darwin + cmake-workflow-preset: DarwinRelease secrets: inherit windows: uses: externpro/externpro/.github/workflows/build-windows.yml@25.05.2 with: - cmake-workflow-preset: Windows + cmake-workflow-preset: WindowsRelease secrets: inherit From 46fdf442950a079da7cde66b39473b8836f3e65c Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Wed, 29 Oct 2025 15:30:40 -0600 Subject: [PATCH 07/11] externpro dependency provider --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 13e73da9..b7672fb7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,5 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.4...3.31) +set(CMAKE_PROJECT_TOP_LEVEL_INCLUDES .devcontainer/cmake/xproinc.cmake) PROJECT(yasm) if (COMMAND cmake_policy) cmake_policy(SET CMP0003 NEW) From 4c189d021dca2da09c74f3251fa0f28dcadecee4 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Wed, 29 Oct 2025 15:34:02 -0600 Subject: [PATCH 08/11] cmake: OPT_INSTALL and COMPONENT devel don't mix --- CMakeLists.txt | 13 ++++++------- frontends/tasm/CMakeLists.txt | 4 +++- frontends/vsyasm/CMakeLists.txt | 4 +++- libyasm/CMakeLists.txt | 6 ++++-- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b7672fb7..c2dab1fd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,11 +38,6 @@ INCLUDE_DIRECTORIES(AFTER ${CMAKE_BINARY_DIR} ${yasm_SOURCE_DIR}) INCLUDE(ConfigureChecks.cmake) OPTION(XP_INSTALL_YASM_EXE_ONLY "Only install the yasm executable" OFF) -IF(XP_INSTALL_YASM_EXE_ONLY) - SET(OPT_INSTALL EXCLUDE_FROM_ALL) -ELSE() - SET(OPT_INSTALL) -ENDIF() SET(targetsFile ${PROJECT_NAME}-targets) ADD_SUBDIRECTORY(tools) @@ -50,10 +45,14 @@ ADD_SUBDIRECTORY(libyasm) ADD_SUBDIRECTORY(modules) ADD_SUBDIRECTORY(frontends) -INSTALL(EXPORT ${targetsFile} DESTINATION ${CMAKE_INSTALL_BINDIR}/cmake ${OPT_INSTALL}) +if(XP_INSTALL_YASM_EXE_ONLY) +INSTALL(EXPORT ${targetsFile} DESTINATION ${XP_INSTALL_CMAKEDIR} ${nameSpace}) +endif() +if(NOT XP_INSTALL_YASM_EXE_ONLY) INSTALL(FILES libyasm.h ${CMAKE_BINARY_DIR}/libyasm-stdint.h - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ${OPT_INSTALL} + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) +endif() diff --git a/frontends/tasm/CMakeLists.txt b/frontends/tasm/CMakeLists.txt index 3316aa05..e1fa6ec7 100644 --- a/frontends/tasm/CMakeLists.txt +++ b/frontends/tasm/CMakeLists.txt @@ -34,4 +34,6 @@ SET_SOURCE_FILES_PROPERTIES(tasm.c PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/license.c ) -INSTALL(TARGETS ytasm EXPORT ${targetsFile} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ${OPT_INSTALL}) +if(NOT XP_INSTALL_YASM_EXE_ONLY) +INSTALL(TARGETS ytasm EXPORT ${targetsFile} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +endif() diff --git a/frontends/vsyasm/CMakeLists.txt b/frontends/vsyasm/CMakeLists.txt index fd67f77a..447de727 100644 --- a/frontends/vsyasm/CMakeLists.txt +++ b/frontends/vsyasm/CMakeLists.txt @@ -34,4 +34,6 @@ SET_SOURCE_FILES_PROPERTIES(vsyasm.c PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/license.c ) -INSTALL(TARGETS vsyasm EXPORT ${targetsFile} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ${OPT_INSTALL}) +if(NOT XP_INSTALL_YASM_EXE_ONLY) +INSTALL(TARGETS vsyasm EXPORT ${targetsFile} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +endif() diff --git a/libyasm/CMakeLists.txt b/libyasm/CMakeLists.txt index cced2057..12054600 100644 --- a/libyasm/CMakeLists.txt +++ b/libyasm/CMakeLists.txt @@ -42,13 +42,15 @@ ELSE(BUILD_SHARED_LIBS) ) ENDIF(BUILD_SHARED_LIBS) +if(NOT XP_INSTALL_YASM_EXE_ONLY) INSTALL(TARGETS libyasm EXPORT ${targetsFile} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - ${OPT_INSTALL} ) +endif() +if(NOT XP_INSTALL_YASM_EXE_ONLY) INSTALL(FILES arch.h assocdat.h @@ -78,5 +80,5 @@ INSTALL(FILES valparam.h value.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libyasm - ${OPT_INSTALL} ) +endif() From f4b03eaae5e3d003870e764049fef2d34f38ef6f Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Wed, 29 Oct 2025 15:35:12 -0600 Subject: [PATCH 09/11] externpro devel package --- CMakeLists.txt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c2dab1fd..a302002b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,12 +7,13 @@ endif (COMMAND cmake_policy) OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON) -# Where to look first for cmake modules -set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules") +# Where to look for cmake modules +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules") INCLUDE(GNUInstallDirs) INCLUDE(YasmMacros) INCLUDE(VersionGen) +INCLUDE(xpflags) OPTION(ENABLE_NLS "Enable message translations" OFF) @@ -38,7 +39,16 @@ INCLUDE_DIRECTORIES(AFTER ${CMAKE_BINARY_DIR} ${yasm_SOURCE_DIR}) INCLUDE(ConfigureChecks.cmake) OPTION(XP_INSTALL_YASM_EXE_ONLY "Only install the yasm executable" OFF) +if(NOT DEFINED XP_INSTALL_CMAKEDIR) + set(XP_INSTALL_CMAKEDIR ${CMAKE_INSTALL_DATADIR}/cmake) +endif() SET(targetsFile ${PROJECT_NAME}-targets) +set(exe ${PROJECT_NAME}) +if(DEFINED XP_NAMESPACE) + set(nameSpace NAMESPACE ${XP_NAMESPACE}::) + string(PREPEND exe "${XP_NAMESPACE}::") +endif() +xpPackageDevel(TARGETS_FILE ${targetsFile} EXE ${exe}) ADD_SUBDIRECTORY(tools) ADD_SUBDIRECTORY(libyasm) From 2cc9d67014fce95a91bfbcd41e9490fb90b029b5 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Wed, 29 Oct 2025 15:35:56 -0600 Subject: [PATCH 10/11] CMakePresetsBase: cacheVariables --- CMakePresetsBase.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CMakePresetsBase.json b/CMakePresetsBase.json index 085cdc3e..24d566db 100644 --- a/CMakePresetsBase.json +++ b/CMakePresetsBase.json @@ -4,7 +4,13 @@ { "name": "config-base", "hidden": true, - "binaryDir": "${sourceDir}/_bld-${presetName}" + "binaryDir": "${sourceDir}/_bld-${presetName}", + "cacheVariables": { + "BUILD_SHARED_LIBS": "OFF", + "CMAKE_BUILD_TYPE": "Release", + "XP_INSTALL_YASM_EXE_ONLY": "ON", + "XP_NAMESPACE": "xpro" + } } ], "buildPresets": [ From 4f8130b1e4dc44f7fbede24847a0719a30c5ac14 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Wed, 29 Oct 2025 15:37:12 -0600 Subject: [PATCH 11/11] work-around ninja mult-config build error https://github.com/externpro/externpro/issues/218#issuecomment-3463968246 https://github.com/conan-io/conan-center-index/issues/24648#issuecomment-2296399814 --- modules/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index e3f8eb11..f59989c9 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -78,8 +78,6 @@ ELSE(regen_init_plugin_c) MESSAGE(STATUS "Not regenerating static modules file (unchanged)") ENDIF(regen_init_plugin_c) -SET_SOURCE_FILES_PROPERTIES(init_plugin.c GENERATED) - SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}) IF(BUILD_SHARED_LIBS)