diff --git a/.github/release-tag.json b/.github/release-tag.json new file mode 100644 index 0000000..544e7bc --- /dev/null +++ b/.github/release-tag.json @@ -0,0 +1,4 @@ +{ + "message": "xpro version 1.0.0 tag", + "tag": "xpv1.0.0" +} diff --git a/.github/workflows/xpbuild.yml b/.github/workflows/xpbuild.yml new file mode 100644 index 0000000..b3a6f37 --- /dev/null +++ b/.github/workflows/xpbuild.yml @@ -0,0 +1,28 @@ +name: xpBuild +permissions: + contents: read + pull-requests: write +on: + push: + tags: ["xpv*"] + pull_request: + branches: ["xpro"] + workflow_dispatch: +jobs: + linux: + permissions: + contents: read + pull-requests: write + packages: write + uses: externpro/externpro/.github/workflows/build-linux.yml@25.07.18 + secrets: + automation_token: ${{ secrets.GHCR_TOKEN }} + with: {} + macos: + uses: externpro/externpro/.github/workflows/build-macos.yml@25.07.18 + secrets: inherit + with: {} + windows: + uses: externpro/externpro/.github/workflows/build-windows.yml@25.07.18 + secrets: inherit + with: {} diff --git a/.github/workflows/xprelease.yml b/.github/workflows/xprelease.yml new file mode 100644 index 0000000..8672671 --- /dev/null +++ b/.github/workflows/xprelease.yml @@ -0,0 +1,44 @@ +name: xpRelease +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 + workflow_run: + workflows: ["xpBuild"] + types: [completed] +jobs: + dispatch-at-tag: + if: >- + github.event_name == 'workflow_run' && + github.event.workflow_run.conclusion == 'success' && + startsWith(github.event.workflow_run.head_branch, 'xpv') + runs-on: ubuntu-latest + permissions: + actions: write + steps: + - + name: Dispatch xpRelease at tag + shell: bash + env: + GH_TOKEN: ${{ github.token }} + RUN_URL: ${{ github.event.workflow_run.html_url }} + TAG_REF: ${{ github.event.workflow_run.head_branch }} + run: | + set -euo pipefail + gh api -X POST "repos/${{ github.repository }}/actions/workflows/xprelease.yml/dispatches" \ + -f ref="$TAG_REF" \ + -f inputs[workflow_run_url]="$RUN_URL" + # Upload build artifacts as release assets + release-from-build: + if: github.event_name == 'workflow_dispatch' + uses: externpro/externpro/.github/workflows/release-from-build.yml@25.07.18 + with: + workflow_run_url: ${{ github.event.inputs.workflow_run_url }} + permissions: + contents: write + id-token: write + attestations: write + secrets: inherit diff --git a/.github/workflows/xptag.yml b/.github/workflows/xptag.yml new file mode 100644 index 0000000..d843502 --- /dev/null +++ b/.github/workflows/xptag.yml @@ -0,0 +1,16 @@ +name: xpTag +permissions: + contents: write + issues: write +on: + pull_request: + types: [closed] +jobs: + tag: + if: ${{ github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'xpro' && contains(github.event.pull_request.labels.*.name, 'release:tag') }} + uses: externpro/externpro/.github/workflows/tag-release.yml@25.07.18 + with: + merge_sha: ${{ github.event.pull_request.merge_commit_sha }} + pr_number: ${{ github.event.pull_request.number }} + secrets: + automation_token: ${{ secrets.XPRO_TOKEN }} diff --git a/.github/workflows/xpupdate.yml b/.github/workflows/xpupdate.yml new file mode 100644 index 0000000..0a51a08 --- /dev/null +++ b/.github/workflows/xpupdate.yml @@ -0,0 +1,13 @@ +name: xpUpdate externpro +permissions: + contents: write + pull-requests: write + packages: write +on: + workflow_dispatch: +jobs: + update: + uses: externpro/externpro/.github/workflows/update-externpro.yml@main + secrets: + automation_token: ${{ secrets.XPRO_TOKEN }} + with: {} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4ec8e4d --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +# externpro +.env +_bld*/ +docker-compose.override.yml diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..50c4740 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 4.3) +project(Threads) +string(JOIN "\n" EXT2 + "set(THREAD_PREFER_PTHREAD_FLAG ON)" + "find_package(Threads REQUIRED BYPASS_PROVIDER)" + "" + ) +xpExternPackage(BASE v0 XPDIFF "bin" + WEB "https://cmake.org/cmake/help/latest/module/FindThreads.html" + DESC "Finds and determines the thread library of the system for multithreading support" + LICENSE "[LGPL-2.1-or-later](https://spdx.org/licenses/LGPL-2.1-or-later.html 'GNU Lesser General Public License v2.1 or later')" + ) diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 0000000..28efa39 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,9 @@ +{ + "version": 8, + "include": [ + ".devcontainer/cmake/presets/xpLinuxNinja.json", + ".devcontainer/cmake/presets/xpDarwinNinja.json", + ".devcontainer/cmake/presets/xpMswVs2022.json", + ".devcontainer/cmake/presets/xpMswVs2026.json" + ] +} diff --git a/CMakePresetsBase.json b/CMakePresetsBase.json new file mode 100644 index 0000000..085cdc3 --- /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 + } + ] +} diff --git a/docker-compose.sh b/docker-compose.sh new file mode 120000 index 0000000..85f182f --- /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 0000000..46c1f89 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1 @@ +.devcontainer/compose.bld.yml \ No newline at end of file