11 group: ${{ github.workflow }}-${{ github.ref }}
12 cancel-in-progress: true
20 actions: read # for github/codeql-action/init to get workflow details
21 contents: read # for actions/checkout to fetch code
22 security-events: write # for github/codeql-action/analyze to upload SARIF results
30 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
36 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
41 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
46 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
51 optional_macros: c++std=c++20
52 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
57 optional_macros: c++std=c++20
58 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
63 optional_macros: c++std=c++20
64 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
68 PackageDeps: clang-6.0
69 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
74 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
79 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
84 Repo: llvm-toolchain-$(lsb_release -cs)-9
85 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
90 Repo: llvm-toolchain-$(lsb_release -cs)-10
91 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
96 Repo: llvm-toolchain-$(lsb_release -cs)-11
97 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
101 PackageDeps: clang-12
102 Repo: llvm-toolchain-$(lsb_release -cs)-12
103 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
107 PackageDeps: clang-13
108 Repo: llvm-toolchain-$(lsb_release -cs)-13
109 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
113 PackageDeps: clang-14
114 Repo: llvm-toolchain-$(lsb_release -cs)-14
115 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
119 PackageDeps: clang-15
120 Repo: llvm-toolchain-$(lsb_release -cs)-15
121 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
125 PackageDeps: clang-16
126 Repo: llvm-toolchain-$(lsb_release -cs)-16
127 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
129 - feature: CORBA/e micro
133 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
135 optional_feature: corba_e_micro=1
136 optional_macros: corba_e_micro=1
137 - feature: CORBA/e compact
141 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
143 optional_feature: corba_e_compact=1
144 optional_macros: corba_e_compact=1
145 - feature: ACE for TAO
149 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
151 optional_feature: ace_for_tao=1
152 optional_macros: ace_for_tao=1
157 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
159 optional_feature: uses_wchar=1
160 optional_macros: inline=0
165 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
167 runs-on: ${{ matrix.os }}
168 name: ${{ matrix.os }} ${{ matrix.CXX }} ${{ matrix.feature }}
170 ACE_ROOT: ${{ github.workspace }}/ACE
171 TAO_ROOT: ${{ github.workspace }}/TAO
172 MPC_ROOT: ${{ github.workspace }}/MPC
174 CXX: ${{ matrix.CXX }}
176 - name: Checkout ACE_TAO
177 uses: actions/checkout@v4
179 uses: actions/checkout@v4
181 repository: DOCGroup/MPC
182 path: ${{ env.MPC_ROOT }}
183 - name: Add LLVM apt repo ${{ matrix.Repo }}
185 wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
186 sudo apt-add-repository "deb http://apt.llvm.org/$(lsb_release -cs)/ ${{ matrix.Repo }} main"
187 if: startsWith (matrix.Repo, 'llvm-toolchain')
188 - name: Add PPA apt repo ${{ matrix.Repo }}
190 sudo apt-add-repository ${{ matrix.Repo }}
191 if: startsWith (matrix.Repo, 'ppa:')
192 - name: Add apt packages ${{ matrix.PackageDeps }}
194 sudo apt-get --yes update
195 sudo apt-get --yes install libxerces-c-dev libssl-dev ${{ matrix.PackageDeps }}
196 - name: Create $ACE_ROOT/ace/config.h
198 '#include "ace/config-linux.h"' > ${env:ACE_ROOT}/ace/config.h
200 - name: Create $ACE_ROOT/include/makeinclude/platform_macros.GNU
202 'ipv6=1' > ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
203 'xerces3=1' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
204 'ssl=1' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
205 'INSTALL_PREFIX = ${{ github.workspace }}/installed' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
207 - name: Add optional platform macros
209 '${{ matrix.optional_macros }}' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
211 if: matrix.optional_macros != ''
212 - name: Extend $ACE_ROOT/include/makeinclude/platform_macros.GNU
214 '${{ matrix.platform_file }}' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
216 - name: Create $ACE_ROOT/bin/MakeProjectCreator/config/default.features
218 'ipv6=1' > ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features
219 'xerces3=1' >> ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features
220 'ssl=1' >> ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features
221 'versioned_namespace=1' >> ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features
223 - name: Add optional MPC features
225 '${{ matrix.optional_feature }}' >> ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features
226 if: matrix.optional_feature != ''
228 - name: Initialize CodeQL
229 uses: github/codeql-action/init@v3
232 if: matrix.feature == 'CodeQL'
233 - name: Run mwc.pl on $(TAO_ROOT)/TAO_ACE.mwc
235 perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:TAO_ROOT}/TAO_ACE.mwc -workers 4
237 - name: Run mwc.pl on $(ACE_ROOT)/tests/tests.mwc
239 perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:ACE_ROOT}/tests/tests.mwc -workers 4
241 - name: Run mwc.pl on $(TAO_ROOT)/tests/IDL_Test
243 perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:TAO_ROOT}/tests/IDL_Test -workers 4
245 - name: Run mwc.pl on $(TAO_ROOT)/tests/IDLv4
247 perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:TAO_ROOT}/tests/IDLv4 -workers 4
249 - name: Build TAO_ACE workspace
251 make -j 6 -C ${env:TAO_ROOT}
253 - name: Build ACE/tests workspace
255 make -j 6 -C ${env:ACE_ROOT}/tests
257 - name: Build TAO/tests/IDL_Test project
259 make -j 6 -C ${env:TAO_ROOT}/tests/IDL_Test
261 if: matrix.feature != 'CORBA/e micro'
262 - name: Build TAO/tests/IDLv4 project
264 make -j 6 -C ${env:TAO_ROOT}/tests/IDLv4
266 - name: Perform CodeQL Analysis
267 uses: github/codeql-action/analyze@v3
268 if: matrix.feature == 'CodeQL'
269 - name: Install TAO_ACE workspace
271 make -C ${env:TAO_ROOT} install
273 - name: Test pkgconfig
274 if: matrix.CheckPkgConfig
276 cd ${{ github.workspace }}/installed/lib/pkgconfig
277 export PKG_CONFIG_PATH=.
278 for f in *.pc; do pkg-config --print-errors --exists ${f%.pc}; done