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