diff options
Diffstat (limited to '.github/workflows/build-binaries.yml')
-rw-r--r-- | .github/workflows/build-binaries.yml | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/.github/workflows/build-binaries.yml b/.github/workflows/build-binaries.yml deleted file mode 100644 index 06bddca..0000000 --- a/.github/workflows/build-binaries.yml +++ /dev/null | |||
@@ -1,92 +0,0 @@ | |||
1 | # Copyright (c) 2021-2022-2023 Luca Cappa | ||
2 | # Released under the term specified in file LICENSE.txt | ||
3 | # SPDX short identifier: MIT | ||
4 | |||
5 | # A "pure" GitHub workflow using CMake, Ninja and vcpkg to build a C/C++ codebase. | ||
6 | # It leverages both CMakePresets.json and vcpkg.json. | ||
7 | # It is called "pure workflow" because it is an example which minimizes the usage of | ||
8 | # custom GitHub Actions, but leverages directly the tools that could be easily run on | ||
9 | # your development machines (i.e. CMake, vcpkg, Ninja) to ensure a perfectly identical | ||
10 | # and reproducible local build (on your development machine) and a remote build on | ||
11 | # build agents. | ||
12 | name: build-binaries | ||
13 | on: | ||
14 | workflow_dispatch: | ||
15 | |||
16 | jobs: | ||
17 | job: | ||
18 | name: ${{ matrix.os }}-${{ github.workflow }} | ||
19 | runs-on: ${{ matrix.os }} | ||
20 | strategy: | ||
21 | fail-fast: false | ||
22 | matrix: | ||
23 | os: [ubuntu-latest, macos-latest, windows-latest] | ||
24 | include: | ||
25 | - os: windows-latest | ||
26 | triplet: x64-windows | ||
27 | - os: ubuntu-latest | ||
28 | triplet: x64-linux | ||
29 | - os: macos-latest | ||
30 | triplet: x64-osx | ||
31 | env: | ||
32 | # Indicates the location of the vcpkg as a Git submodule of the project repository. | ||
33 | VCPKG_ROOT: ${{ github.workspace }}/vendor/vcpkg | ||
34 | # Tells vcpkg where binary packages are stored. | ||
35 | VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}/vendor/vcpkg/bincache | ||
36 | # Let's use GitHub Action cache as storage for the vcpkg Binary Caching feature. | ||
37 | VCPKG_BINARY_SOURCES: 'clear;x-gha,readwrite' | ||
38 | |||
39 | steps: | ||
40 | # Set env vars needed for vcpkg to leverage the GitHub Action cache as a storage | ||
41 | # for Binary Caching. | ||
42 | - uses: actions/github-script@v6 | ||
43 | with: | ||
44 | script: | | ||
45 | core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); | ||
46 | core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); | ||
47 | |||
48 | - uses: actions/checkout@v3 | ||
49 | with: | ||
50 | submodules: true | ||
51 | - name: "Create directory '${{ env.VCPKG_DEFAULT_BINARY_CACHE }}'" | ||
52 | run: mkdir -p $VCPKG_DEFAULT_BINARY_CACHE | ||
53 | shell: bash | ||
54 | |||
55 | # Setup the build machine with the most recent versions of CMake and Ninja. Both are cached if not already: on subsequent runs both will be quickly restored from GitHub cache service. | ||
56 | - uses: lukka/get-cmake@latest | ||
57 | |||
58 | # Restore vcpkg from the GitHub Action cache service. Note that packages are restored by vcpkg's binary caching | ||
59 | # when it is being run afterwards by CMake. | ||
60 | - name: Restore vcpkg | ||
61 | uses: actions/cache@v3 | ||
62 | with: | ||
63 | # The first path is the location of vcpkg: it contains the vcpkg executable and data files, as long as the | ||
64 | # built package archives (aka binary cache) which are located by VCPKG_DEFAULT_BINARY_CACHE env var. | ||
65 | # The other paths starting with '!' are exclusions: they contain termporary files generated during the build of the installed packages. | ||
66 | path: | | ||
67 | ${{ env.VCPKG_ROOT }} | ||
68 | !${{ env.VCPKG_ROOT }}/buildtrees | ||
69 | !${{ env.VCPKG_ROOT }}/packages | ||
70 | !${{ env.VCPKG_ROOT }}/downloads | ||
71 | !${{ env.VCPKG_ROOT }}/installed | ||
72 | # The key is composed in a way that it gets properly invalidated whenever a different version of vcpkg is being used. | ||
73 | key: | | ||
74 | ${{ hashFiles( '.git/modules/vcpkg/HEAD' )}} | ||
75 | |||
76 | # On Windows runners, let's ensure to have the Developer Command Prompt environment setup correctly. | ||
77 | # As used here the Developer Command Prompt created is targeting x64 and using the default the Windows SDK. | ||
78 | - uses: ilammy/msvc-dev-cmd@v1 | ||
79 | |||
80 | # Run CMake to generate Ninja project files, using the vcpkg's toolchain file to resolve and install | ||
81 | # the dependencies as specified in vcpkg.json. Note that the vcpkg's toolchain is specified | ||
82 | # in the CMakePresets.json file. | ||
83 | # This step also runs vcpkg with Binary Caching leveraging GitHub Action cache to | ||
84 | # store the built packages artifacts. | ||
85 | - name: Restore from cache the dependencies and generate project files | ||
86 | run: | | ||
87 | cmake --preset lingo-ap-tracker-preset | ||
88 | |||
89 | # Build (Release configuration only) the whole project with Ninja (which is spawn by CMake). | ||
90 | - name: Build (Release configuration) | ||
91 | run: | | ||
92 | cmake --build --preset lingo-ap-tracker-preset --config Release | ||