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
123 - feature: CORBA/e micro
127 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
129 optional_feature: corba_e_micro=1
130 optional_macros: corba_e_micro=1
131 - feature: CORBA/e compact
135 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
137 optional_feature: corba_e_compact=1
138 optional_macros: corba_e_compact=1
139 - feature: ACE for TAO
143 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
145 optional_feature: ace_for_tao=1
146 optional_macros: ace_for_tao=1
151 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
153 optional_feature: uses_wchar=1
154 optional_macros: inline=0
159 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
161 runs-on: ${{ matrix.os }}
162 name: ${{ matrix.os }} ${{ matrix.CXX }} ${{ matrix.feature }}
164 ACE_ROOT: ${{ github.workspace }}/ACE
165 TAO_ROOT: ${{ github.workspace }}/TAO
166 MPC_ROOT: ${{ github.workspace }}/MPC
168 CXX: ${{ matrix.CXX }}
170 - name: Checkout ACE_TAO
171 uses: actions/checkout@v4
173 uses: actions/checkout@v4
175 repository: DOCGroup/MPC
176 path: ${{ env.MPC_ROOT }}
177 - name: Add LLVM apt repo ${{ matrix.Repo }}
179 wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
180 sudo apt-add-repository "deb http://apt.llvm.org/$(lsb_release -cs)/ ${{ matrix.Repo }} main"
181 if: startsWith (matrix.Repo, 'llvm-toolchain')
182 - name: Add PPA apt repo ${{ matrix.Repo }}
184 sudo apt-add-repository ${{ matrix.Repo }}
185 if: startsWith (matrix.Repo, 'ppa:')
186 - name: Add apt packages ${{ matrix.PackageDeps }}
188 sudo apt-get --yes update
189 sudo apt-get --yes install libxerces-c-dev libssl-dev ${{ matrix.PackageDeps }}
190 - name: Create $ACE_ROOT/ace/config.h
192 '#include "ace/config-linux.h"' > ${env:ACE_ROOT}/ace/config.h
194 - name: Create $ACE_ROOT/include/makeinclude/platform_macros.GNU
196 'ipv6=1' > ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
197 'xerces3=1' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
198 'ssl=1' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
199 'INSTALL_PREFIX = ${{ github.workspace }}/installed' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
201 - name: Add optional platform macros
203 '${{ matrix.optional_macros }}' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
205 if: matrix.optional_macros != ''
206 - name: Extend $ACE_ROOT/include/makeinclude/platform_macros.GNU
208 '${{ matrix.platform_file }}' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
210 - name: Create $ACE_ROOT/bin/MakeProjectCreator/config/default.features
212 'ipv6=1' > ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features
213 'xerces3=1' >> ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features
214 'ssl=1' >> ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features
215 'versioned_namespace=1' >> ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features
217 - name: Add optional MPC features
219 '${{ matrix.optional_feature }}' >> ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features
220 if: matrix.optional_feature != ''
222 - name: Initialize CodeQL
223 uses: github/codeql-action/init@v3
226 if: matrix.feature == 'CodeQL'
227 - name: Run mwc.pl on $(TAO_ROOT)/TAO_ACE.mwc
229 perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:TAO_ROOT}/TAO_ACE.mwc -workers 4
231 - name: Run mwc.pl on $(ACE_ROOT)/tests/tests.mwc
233 perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:ACE_ROOT}/tests/tests.mwc -workers 4
235 - name: Run mwc.pl on $(TAO_ROOT)/tests/IDL_Test
237 perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:TAO_ROOT}/tests/IDL_Test -workers 4
239 - name: Run mwc.pl on $(TAO_ROOT)/tests/IDLv4
241 perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:TAO_ROOT}/tests/IDLv4 -workers 4
243 - name: Build TAO_ACE workspace
245 make -j 6 -C ${env:TAO_ROOT}
247 - name: Build ACE/tests workspace
249 make -j 6 -C ${env:ACE_ROOT}/tests
251 - name: Build TAO/tests/IDL_Test project
253 make -j 6 -C ${env:TAO_ROOT}/tests/IDL_Test
255 if: matrix.feature != 'CORBA/e micro'
256 - name: Build TAO/tests/IDLv4 project
258 make -j 6 -C ${env:TAO_ROOT}/tests/IDLv4
260 - name: Perform CodeQL Analysis
261 uses: github/codeql-action/analyze@v3
262 if: matrix.feature == 'CodeQL'
263 - name: Install TAO_ACE workspace
265 make -C ${env:TAO_ROOT} install
267 - name: Test pkgconfig
268 if: matrix.CheckPkgConfig
270 cd ${{ github.workspace }}/installed/lib/pkgconfig
271 export PKG_CONFIG_PATH=.
272 for f in *.pc; do pkg-config --print-errors --exists ${f%.pc}; done