ACE+TAO-6_5_19
[ACE_TAO.git] / .github / workflows / linux.yml
blob1fdba544b45c62bdb889dd3da55d2df0daa384fc
1 name: linux
3 on:
4   push:
5   pull_request:
6   schedule:
7     - cron: '0 1 * * SUN'
9 concurrency:
10   group: ${{ github.workflow }}-${{ github.ref }}
11   cancel-in-progress: true
13 jobs:
14   build:
15     strategy:
16       fail-fast: false
17       matrix:
18         include:
19           - CC: gcc-6
20             CXX: g++-6
21             PackageDeps: g++-6
22             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
23             os: ubuntu-18.04
24           - CC: gcc-7
25             CXX: g++-7
26             PackageDeps: g++-7
27             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
28             os: ubuntu-18.04
29           - CC: gcc-8
30             CXX: g++-8
31             PackageDeps: g++-8
32             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
33             os: ubuntu-18.04
34           - CC: gcc-9
35             CXX: g++-9
36             PackageDeps: g++-9
37             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
38             os: ubuntu-18.04
39           - CC: gcc-10
40             CXX: g++-10
41             PackageDeps: g++-10
42             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
43             os: ubuntu-18.04
44           - CC: gcc-11
45             CXX: g++-11
46             PackageDeps: g++-11
47             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
48             os: ubuntu-20.04
49           - CC: gcc-12
50             CXX: g++-12
51             PackageDeps: g++-12
52             optional_macros: CCFLAGS+=-std=c++20
53             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
54             os: ubuntu-22.04
55           - CC: clang-6.0
56             CXX: clang++-6.0
57             PackageDeps: clang-6.0
58             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
59             os: ubuntu-18.04
60           - CC: clang-7
61             CXX: clang++-7
62             PackageDeps: clang-7
63             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
64             os: ubuntu-18.04
65           - CC: clang-8
66             CXX: clang++-8
67             PackageDeps: clang-8
68             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
69             os: ubuntu-18.04
70           - CC: clang-9
71             CXX: clang++-9
72             PackageDeps: clang-9
73             Repo: llvm-toolchain-$(lsb_release -cs)-9
74             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
75             os: ubuntu-18.04
76           - CC: clang-10
77             CXX: clang++-10
78             PackageDeps: clang-10
79             Repo: llvm-toolchain-$(lsb_release -cs)-10
80             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
81             os: ubuntu-20.04
82           - CC: clang-11
83             CXX: clang++-11
84             PackageDeps: clang-11
85             Repo: llvm-toolchain-$(lsb_release -cs)-11
86             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
87             os: ubuntu-20.04
88           - feature: CORBA/e micro
89             CC: gcc-10
90             CXX: g++-10
91             PackageDeps: g++-10
92             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
93             os: ubuntu-18.04
94             optional_feature: corba_e_micro=1
95             optional_macros: corba_e_micro=1
96           - feature: CORBA/e compact
97             CC: gcc-10
98             CXX: g++-10
99             PackageDeps: g++-10
100             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
101             os: ubuntu-18.04
102             optional_feature: corba_e_compact=1
103             optional_macros: corba_e_compact=1
104           - feature: ACE for TAO
105             CC: gcc-10
106             CXX: g++-10
107             PackageDeps: g++-10
108             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
109             os: ubuntu-20.04
110             optional_feature: ace_for_tao=1
111             optional_macros: ace_for_tao=1
112           - feature: wchar
113             CC: gcc-10
114             CXX: g++-10
115             PackageDeps: g++-10
116             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
117             os: ubuntu-20.04
118             optional_feature: uses_wchar=1
119             optional_macros: inline=0
120           - feature: CodeQL
121             CC: gcc-10
122             CXX: g++-10
123             PackageDeps: g++-10
124             platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
125             os: ubuntu-20.04
126     runs-on: ${{ matrix.os }}
127     name: ${{ matrix.os }} ${{ matrix.CXX }} ${{ matrix.feature }}
128     env:
129       ACE_ROOT: ${{ github.workspace }}/ACE
130       TAO_ROOT: ${{ github.workspace }}/TAO
131       MPC_ROOT: ${{ github.workspace }}/MPC
132       CC: ${{ matrix.CC }}
133       CXX: ${{ matrix.CXX }}
134     steps:
135     - name: checkout ACE/TAO
136       uses: actions/checkout@v2
137     - name: checkout MPC
138       uses: actions/checkout@v2
139       with:
140         repository: DOCGroup/MPC
141         path: ${{ env.MPC_ROOT }}
142     - name: Add LLVM apt repo ${{ matrix.Repo }}
143       run: |
144         wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
145         sudo apt-add-repository "deb http://apt.llvm.org/$(lsb_release -cs)/ ${{ matrix.Repo }} main"
146       if: startsWith (matrix.Repo, 'llvm-toolchain')
147     - name: Add PPA apt repo ${{ matrix.Repo }}
148       run: |
149         sudo apt-add-repository ${{ matrix.Repo }}
150       if: startsWith (matrix.Repo, 'ppa:')
151     - name: Install apt packages
152       run: |
153         sudo apt-get --yes update
154         sudo apt-get --yes install libxerces-c-dev libssl-dev ${{ matrix.PackageDeps }}
155     - name: create $ACE_ROOT/ace/config.h
156       run: |
157         '#include "ace/config-linux.h"' > ${env:ACE_ROOT}/ace/config.h
158       shell: pwsh
159     - name: create $ACE_ROOT/include/makeinclude/platform_macros.GNU
160       run: |
161         'ipv6=1' > ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
162         'xerces3=1' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
163         'ssl=1' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
164       shell: pwsh
165     - name: add optional optional macros
166       run: |
167         '${{ matrix.optional_macros }}' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
168       shell: pwsh
169       if: matrix.optional_macros != ''
170     - name: extend $ACE_ROOT/include/makeinclude/platform_macros.GNU
171       run: |
172         '${{ matrix.platform_file }}' >>  ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU
173       shell: pwsh
174     - name: create $ACE_ROOT/bin/MakeProjectCreator/config/default.features
175       run: |
176         'ipv6=1' > ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features
177         'xerces3=1' >> ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features
178         'ssl=1' >> ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features
179         'versioned_namespace=1' >> ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features
180       shell: pwsh
181     - name: add optional optional feature
182       run: |
183         '${{ matrix.optional_feature }}' >> ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features
184       if: matrix.optional_feature != ''
185       shell: pwsh
186     - name: initialize CodeQL
187       uses: github/codeql-action/init@v1
188       with:
189         languages: cpp
190       if: matrix.feature == 'CodeQL'
191     - name: Run mwc.pl on $(TAO_ROOT)/TAO_ACE.mwc
192       run: |
193         perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:TAO_ROOT}/TAO_ACE.mwc -workers 4
194       shell: pwsh
195     - name: Run mwc.pl on $(ACE_ROOT)/tests/tests.mwc
196       run: |
197         perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:ACE_ROOT}/tests/tests.mwc -workers 4
198       shell: pwsh
199     - name: Run mwc.pl on $(TAO_ROOT)/tests/IDL_Test
200       run: |
201         perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:TAO_ROOT}/tests/IDL_Test -workers 4
202       shell: pwsh
203     - name: Build TAO_ACE project
204       run: |
205         make -j 6 -C ${env:TAO_ROOT}
206       shell: pwsh
207     - name: Build ACE/tests project
208       run: |
209         make -j 6 -C ${env:ACE_ROOT}/tests
210       shell: pwsh
211     - name: Build TAO/tests/IDL_Test project
212       run: |
213         make -j 6 -C ${env:TAO_ROOT}/tests/IDL_Test
214       shell: pwsh
215       if: matrix.feature != 'CORBA/e micro'
216     - name: Perform CodeQL Analysis
217       uses: github/codeql-action/analyze@v1
218       if: matrix.feature == 'CodeQL'