@@ -31,45 +31,65 @@ jobs:
3131 permissions :
3232 contents : write
3333 concurrency :
34- group : ${{ github.workflow }}-${{ github.ref }}-${{ matrix.cfg.arch }}-(${{ matrix.cfg.cpp- version }})
34+ group : ${{ github.workflow }}-${{ github.ref }}-${{ matrix.cfg.arch }}-(${{ matrix.cfg.cpp }}-${{ matrix.cfg. version }})
3535 cancel-in-progress : true
36- name : Linux ${{matrix.cfg.arch}} (${{matrix.cfg.cpp- version}})
37- runs-on : ${{matrix.cfg.os}}
36+ name : Linux ${{ matrix.cfg.arch }} (${{ matrix.cfg.cpp }}-${{ matrix.cfg. version }}${{ matrix.cfg.name-extra }})
37+ runs-on : ${{ matrix.cfg.os }}
3838 strategy :
3939 fail-fast : false # Don't fail everything if one fails. We want to test each OS/Compiler individually
4040 matrix :
4141 # GitHub hosted runners on Azure
4242 # arm7hf is a self-hosted docker-based runner at Brainbox.cc. Raspberry Pi 4, 8gb 4-core with NEON
4343 cfg :
44- - { arch: 'amd64', concurrency: 2, os: ubuntu-20.04, package: clang-10, cpp-version: clang++-10, cmake-flags: '', cpack: 'no', ctest: 'no' }
45- - { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: clang-11, cpp-version: clang++-11, cmake-flags: '', cpack: 'no', ctest: 'no' }
46- - { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: clang-12, cpp-version: clang++-12, cmake-flags: '', cpack: 'no', ctest: 'no' }
47- - { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: clang-13, cpp-version: clang++-13, cmake-flags: '', cpack: 'no', ctest: 'no' }
48- - { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: clang-14, cpp-version: clang++-14, cmake-flags: '', cpack: 'no', ctest: 'no' }
49- - { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: clang-15, cpp-version: clang++-15, cmake-flags: '-DDPP_CORO=ON', cpack: 'no', ctest: 'no' }
50- - { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: g++-12, cpp-version: g++-12, cmake-flags: '-DDPP_CORO=ON', cpack: 'no', ctest: 'no' }
51- - { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: g++-11, cpp-version: g++-11, cmake-flags: '-DDPP_CORO=ON', cpack: 'no', ctest: 'no' }
52- - { arch: 'amd64', concurrency: 2, os: ubuntu-22.04, package: g++-10, cpp-version: g++-10, cmake-flags: '', cpack: 'yes', ctest: 'no' }
53- - { arch: 'amd64', concurrency: 2, os: ubuntu-20.04, package: g++-9, cpp-version: g++-9, cmake-flags: '', cpack: 'no', ctest: 'no' }
54- - { arch: 'amd64', concurrency: 2, os: ubuntu-20.04, package: g++-8, cpp-version: g++-8, cmake-flags: '', cpack: 'no', ctest: 'yes' }
55- - { arch: 'arm7hf', concurrency: 4, os: [self-hosted, linux, ARM], package: g++-12, cpp-version: g++-12, cmake-flags: '', cpack: 'yes', ctest: 'no' }
56- - { arch: 'arm64', concurrency: 4, os: [self-hosted, linux, ARM64], package: g++-12, cpp-version: g++-12, cmake-flags: '', cpack: 'yes', ctest: 'no' }
44+ # clang++
45+ - { arch: 'amd64', concurrency: 4, os: ubuntu-20.04, package: clang-10, cpp: clang++, version: 10, cmake-flags: '', cpack: 'no', ctest: 'no', mold: 'yes' }
46+ - { arch: 'amd64', concurrency: 4, os: ubuntu-22.04, package: clang-11, cpp: clang++, version: 11, cmake-flags: '', cpack: 'no', ctest: 'no', mold: 'yes' }
47+ - { arch: 'amd64', concurrency: 4, os: ubuntu-22.04, package: clang-12, cpp: clang++, version: 12, cmake-flags: '', cpack: 'no', ctest: 'no', mold: 'yes' }
48+ - { arch: 'amd64', concurrency: 4, os: ubuntu-22.04, package: clang-13, cpp: clang++, version: 13, cmake-flags: '', cpack: 'no', ctest: 'no', mold: 'yes' }
49+ - { arch: 'amd64', concurrency: 4, os: ubuntu-22.04, package: clang-14, cpp: clang++, version: 14, cmake-flags: '-DDPP_CORO=ON', cpack: 'no', ctest: 'no', mold: 'yes' }
50+ - { arch: 'amd64', concurrency: 4, os: ubuntu-22.04, package: clang-15, cpp: clang++, version: 15, cmake-flags: '-DDPP_CORO=ON', cpack: 'no', ctest: 'no', mold: 'yes' }
51+ - { arch: 'amd64', concurrency: 4, os: ubuntu-24.04, package: clang-16, cpp: clang++, version: 16, cmake-flags: '-DDPP_CORO=ON', cpack: 'no', ctest: 'no', mold: 'yes' }
52+ - { arch: 'amd64', concurrency: 4, os: ubuntu-24.04, package: clang-17, cpp: clang++, version: 17, cmake-flags: '-DDPP_CORO=ON', cpack: 'no', ctest: 'no', mold: 'yes' }
53+ - { arch: 'amd64', concurrency: 4, os: ubuntu-24.04, package: clang-18, cpp: clang++, version: 18, cmake-flags: '-DDPP_CORO=ON', cpack: 'no', ctest: 'no', mold: 'yes' }
54+ - { arch: 'amd64', concurrency: 4, os: ubuntu-24.04, package: 'clang-19 libc++-19-dev libc++abi-19-dev', cpp: clang++, version: 19, cmake-flags: '-DDPP_CORO=ON -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_EXE_LINKER_FLAGS="-stdlib=libc++"', cpack: 'no', ctest: 'no', mold: 'yes', name-extra: ' libc++', llvm-apt: 'yes' }
55+ # g++
56+ - { arch: 'amd64', concurrency: 4, os: ubuntu-24.04, package: g++-13, cpp: g++, version: 13, cmake-flags: '-DDPP_CORO=ON', cpack: 'no', ctest: 'no', mold: 'yes' }
57+ - { arch: 'amd64', concurrency: 4, os: ubuntu-24.04, package: g++-14, cpp: g++, version: 14, cmake-flags: '-DDPP_CORO=ON', cpack: 'no', ctest: 'no', mold: 'yes' }
58+ - { arch: 'amd64', concurrency: 4, os: ubuntu-22.04, package: g++-12, cpp: g++, version: 12, cmake-flags: '-DDPP_CORO=ON', cpack: 'no', ctest: 'no', mold: 'yes' }
59+ - { arch: 'amd64', concurrency: 4, os: ubuntu-22.04, package: g++-11, cpp: g++, version: 11, cmake-flags: '-DDPP_CORO=ON', cpack: 'no', ctest: 'no', mold: 'yes' }
60+ - { arch: 'amd64', concurrency: 4, os: ubuntu-22.04, package: g++-10, cpp: g++, version: 10, cmake-flags: '', cpack: 'yes', ctest: 'no', mold: 'yes' }
61+ - { arch: 'amd64', concurrency: 4, os: ubuntu-20.04, package: g++-9, cpp: g++, version: 9, cmake-flags: '', cpack: 'no', ctest: 'no', mold: 'yes' }
62+ - { arch: 'amd64', concurrency: 4, os: ubuntu-20.04, package: g++-8, cpp: g++, version: 8, cmake-flags: '', cpack: 'no', ctest: 'yes', mold: 'yes' }
63+ # Self hosted
64+ - { arch: 'arm7hf', concurrency: 4, os: [self-hosted, linux, ARM], package: g++-12, cpp: g++, version: 12, cmake-flags: '', cpack: 'yes', ctest: 'no', mold: 'no' }
65+ - { arch: 'arm64', concurrency: 4, os: [self-hosted, linux, ARM64], package: g++-12, cpp: g++, version: 12, cmake-flags: '', cpack: 'yes', ctest: 'no', mold: 'yes' }
5766 steps :
5867 - name : Harden Runner
59- uses : step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0
68+ uses : step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1
6069 with :
6170 egress-policy : audit
6271
6372 - name : Checkout D++
64- uses : actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
73+ uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
74+
75+ - name : Setup mold
76+ if : ${{ matrix.cfg.mold == 'yes' }}
77+ uses : rui314/setup-mold@0bf4f07ef9048ec62a45f9dbf2f098afa49695f0 # v1
78+
79+ - name : Add LLVM apt repository
80+ if : ${{ matrix.cfg.llvm-apt }}
81+ run : |
82+ osname=`cat /etc/os-release | grep -e "^VERSION_CODENAME" | cut -d= -f2`
83+ wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
84+ sudo apt-add-repository -y "deb http://apt.llvm.org/$osname/ llvm-toolchain-$osname-${{ matrix.cfg.version }} main"
6585
6686 - name : Install apt packages
6787 run : sudo sed -i 's/azure\.//' /etc/apt/sources.list && sudo apt update && sudo apt-get install -y ${{ matrix.cfg.package }} pkg-config libsodium-dev libopus-dev zlib1g-dev rpm
6888
6989 - name : Generate CMake
70- run : mkdir build && cd build && cmake -DDPP_NO_VCPKG=ON -DAVX_TYPE=AVX0 -DCMAKE_BUILD_TYPE=Release ${{matrix.cfg.cmake-flags}} ..
90+ run : cmake -B build -DDPP_NO_VCPKG=ON -DAVX_TYPE=AVX0 -DCMAKE_BUILD_TYPE=Release ${{matrix.cfg.cmake-flags}}
7191 env :
72- CXX : ${{matrix.cfg.cpp- version}}
92+ CXX : ${{ matrix.cfg.cpp }}-${{ matrix.cfg. version }}
7393
7494 - name : Build Project
7595 run : cd build && make -j${{ matrix.cfg.concurrency }}
@@ -91,49 +111,54 @@ jobs:
91111
92112 - name : Upload Binary (DEB)
93113 if : ${{ matrix.cfg.cpack == 'yes' }}
94- uses : actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
114+ uses : actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
95115 with :
96116 name : " libdpp - Debian Package ${{matrix.cfg.arch}}"
97117 path : ' ${{github.workspace}}/build/*.deb'
98118
99119 - name : Upload Binary (RPM)
100120 if : ${{ matrix.cfg.cpack == 'yes' }}
101- uses : actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
121+ uses : actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
102122 with :
103123 name : " libdpp - RPM Package ${{matrix.cfg.arch}}"
104124 path : ' ${{github.workspace}}/build/*.rpm'
105125
106126 macos :
107127 permissions :
108128 contents : write
109- name : macOS ${{matrix.cfg.arch}} (${{matrix.cfg.cpp- version}})
110- runs-on : ${{matrix.cfg.os}}
129+ name : macOS ${{ matrix.cfg.arch }} (${{ matrix.cfg.cpp }}-${{ matrix.cfg. version }})
130+ runs-on : ${{ matrix.cfg.os }}
111131 strategy :
112132 fail-fast : false # Don't fail everything if one fails. We want to test each OS/Compiler individually
113133 matrix :
114- # arm64 is a self-hosted runner on a Mac M2 Mini, ran inside a virtual machine by Archie Jaskowicz.
115134 cfg :
116- - { arch: 'x64', concurrency: 3, os: macos-latest, cpp-version: clang++-14, cmake-flags: ''}
117- - { arch: 'arm64', concurrency: 2, os: [self-hosted, ARM64, macOS], cpp-version: clang++-15, cmake-flags: ''}
135+ - { arch: 'arm64', concurrency: 3, os: macos-latest, cpp: clang++, version: 16, cmake-flags: '', xcode-version: '16.0.0' }
136+ - { arch: 'arm64', concurrency: 3, os: macos-latest, cpp: clang++, version: 15, cmake-flags: '', xcode-version: '15.3' }
137+ - { arch: 'arm64', concurrency: 3, os: macos-latest, cpp: clang++, version: 14, cmake-flags: '', xcode-version: '14.3.1' }
118138 steps :
119139 - name : Harden Runner
120- uses : step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0
140+ uses : step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1
121141 with :
122142 egress-policy : audit
123143
124144 - name : Checkout D++
125- uses : actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
145+ uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
146+
147+ - name : Update Xcode
148+ uses : maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0
149+ with :
150+ xcode-version : ${{ matrix.cfg.xcode-version }}
126151
127152 - name : Install homebrew packages
128153 run : brew install cmake make libsodium opus openssl pkg-config
129154
130155 - name : Generate CMake
131- run : mkdir build && cd build && cmake -DDPP_NO_VCPKG=ON -DCMAKE_BUILD_TYPE=Release -DDPP_CORO=ON -DAVX_TYPE=AVX0 ..
156+ run : cmake -B build -DDPP_NO_VCPKG=ON -DCMAKE_BUILD_TYPE=Release -DDPP_CORO=ON -DAVX_TYPE=AVX0
132157 env :
133158 DONT_RUN_VCPKG : true
134159
135160 - name : Build Project
136- run : cd build && make -j${{ matrix.cfg.concurrency }}
161+ run : cmake -- build build -j${{ matrix.cfg.concurrency }}
137162 env :
138163 DONT_RUN_VCPKG : true
139164
@@ -166,20 +191,20 @@ jobs:
166191 runs-on : ${{matrix.cfg.os}}
167192 steps :
168193 - name : Harden Runner
169- uses : step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0
194+ uses : step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1
170195 with :
171196 egress-policy : audit
172197
173198 - name : Checkout D++
174- uses : actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
199+ uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
175200 with :
176201 path : main
177202
178203 - name : Add MSBuild to PATH
179204 uses : microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2.0.0
180205
181206 - name : Install chocolatey packages ${{ matrix.cfg.arch}}
182- uses : seanmiddleditch/gha-setup-ninja@8b297075da4cd2a5f1fd21fe011b499edf06e9d2 # master
207+ uses : seanmiddleditch/gha-setup-ninja@96bed6edff20d1dd61ecff9b75cc519d516e6401 # master
183208
184209 - name : Generate CMake (x64)
185210 if : ${{ matrix.cfg.arch == 'x64' }}
@@ -209,7 +234,7 @@ jobs:
209234
210235 - name : Upload Binary
211236 if : ${{ matrix.cfg.upload }}
212- uses : actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
237+ uses : actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
213238 with :
214239 name : " libdpp - Windows ${{matrix.cfg.name}}-${{matrix.cfg.config}}-vs${{matrix.cfg.vs}}"
215240 path : ' ${{github.workspace}}/main/build/*.zip'
@@ -231,12 +256,12 @@ jobs:
231256 runs-on : ${{matrix.cfg.os}}
232257 steps :
233258 - name : Harden Runner
234- uses : step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0
259+ uses : step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1
235260 with :
236261 egress-policy : audit
237262
238263 - name : Checkout D++
239- uses : actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
264+ uses : actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
240265
241266 - name : Install Packages
242267 run : sudo sed -i 's/azure\.//' /etc/apt/sources.list && sudo apt update && sudo apt-get install -y cmake rpm
@@ -251,13 +276,13 @@ jobs:
251276 run : cd build && sudo cpack --verbose || cat /home/runner/work/DPP/DPP/build/_CPack_Packages/Linux/DEB/PreinstallOutput.log
252277
253278 - name : Upload Binaries (DEB)
254- uses : actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
279+ uses : actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
255280 with :
256281 name : " libdpp - Debian Package ${{matrix.cfg.name}}"
257282 path : " ${{github.workspace}}/build/*.deb"
258283
259284 - name : Upload Binaries (RPM)
260- uses : actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
285+ uses : actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
261286 with :
262287 name : " libdpp - RPM Package ${{matrix.cfg.name}}"
263288 path : " ${{github.workspace}}/build/*.rpm"
0 commit comments