name: linux on: push: pull_request: schedule: - cron: '0 1 * * SUN' workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: contents: read jobs: build: permissions: actions: read # for github/codeql-action/init to get workflow details contents: read # for actions/checkout to fetch code security-events: write # for github/codeql-action/analyze to upload SARIF results strategy: fail-fast: false matrix: include: - CC: gcc-7 CXX: g++-7 PackageDeps: g++-7 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU os: ubuntu-20.04 CheckPkgConfig: 1 - CC: gcc-8 CXX: g++-8 PackageDeps: g++-8 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU os: ubuntu-20.04 - CC: gcc-9 CXX: g++-9 PackageDeps: g++-9 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU os: ubuntu-20.04 - CC: gcc-10 CXX: g++-10 PackageDeps: g++-10 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU os: ubuntu-20.04 - CC: gcc-11 CXX: g++-11 PackageDeps: g++-11 optional_macros: CCFLAGS+=-std=c++20 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU os: ubuntu-22.04 - CC: gcc-12 CXX: g++-12 PackageDeps: g++-12 optional_macros: CCFLAGS+=-std=c++20 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU os: ubuntu-22.04 - CC: clang-6.0 CXX: clang++-6.0 PackageDeps: clang-6.0 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU os: ubuntu-20.04 - CC: clang-7 CXX: clang++-7 PackageDeps: clang-7 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU os: ubuntu-20.04 - CC: clang-8 CXX: clang++-8 PackageDeps: clang-8 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU os: ubuntu-20.04 - CC: clang-9 CXX: clang++-9 PackageDeps: clang-9 Repo: llvm-toolchain-$(lsb_release -cs)-9 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU os: ubuntu-20.04 - CC: clang-10 CXX: clang++-10 PackageDeps: clang-10 Repo: llvm-toolchain-$(lsb_release -cs)-10 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU os: ubuntu-20.04 - CC: clang-11 CXX: clang++-11 PackageDeps: clang-11 Repo: llvm-toolchain-$(lsb_release -cs)-11 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU os: ubuntu-20.04 - CC: clang-12 CXX: clang++-12 PackageDeps: clang-12 Repo: llvm-toolchain-$(lsb_release -cs)-12 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU os: ubuntu-20.04 - CC: clang-13 CXX: clang++-13 PackageDeps: clang-13 Repo: llvm-toolchain-$(lsb_release -cs)-13 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU os: ubuntu-20.04 - CC: clang-14 CXX: clang++-14 PackageDeps: clang-14 Repo: llvm-toolchain-$(lsb_release -cs)-14 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU os: ubuntu-22.04 - CC: clang-15 CXX: clang++-15 PackageDeps: clang-15 Repo: llvm-toolchain-$(lsb_release -cs)-15 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU os: ubuntu-22.04 - feature: CORBA/e micro CC: gcc-10 CXX: g++-10 PackageDeps: g++-10 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU os: ubuntu-20.04 optional_feature: corba_e_micro=1 optional_macros: corba_e_micro=1 - feature: CORBA/e compact CC: gcc-10 CXX: g++-10 PackageDeps: g++-10 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU os: ubuntu-20.04 optional_feature: corba_e_compact=1 optional_macros: corba_e_compact=1 - feature: ACE for TAO CC: gcc-10 CXX: g++-10 PackageDeps: g++-10 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU os: ubuntu-20.04 optional_feature: ace_for_tao=1 optional_macros: ace_for_tao=1 - feature: wchar CC: gcc-10 CXX: g++-10 PackageDeps: g++-10 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU os: ubuntu-20.04 optional_feature: uses_wchar=1 optional_macros: inline=0 - feature: CodeQL CC: gcc-10 CXX: g++-10 PackageDeps: g++-10 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU os: ubuntu-20.04 runs-on: ${{ matrix.os }} name: ${{ matrix.os }} ${{ matrix.CXX }} ${{ matrix.feature }} env: ACE_ROOT: ${{ github.workspace }}/ACE TAO_ROOT: ${{ github.workspace }}/TAO MPC_ROOT: ${{ github.workspace }}/MPC CC: ${{ matrix.CC }} CXX: ${{ matrix.CXX }} steps: - name: Checkout ACE_TAO uses: actions/checkout@v3 - name: Checkout MPC uses: actions/checkout@v3 with: repository: DOCGroup/MPC path: ${{ env.MPC_ROOT }} - name: Add LLVM apt repo ${{ matrix.Repo }} run: | wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - sudo apt-add-repository "deb http://apt.llvm.org/$(lsb_release -cs)/ ${{ matrix.Repo }} main" if: startsWith (matrix.Repo, 'llvm-toolchain') - name: Add PPA apt repo ${{ matrix.Repo }} run: | sudo apt-add-repository ${{ matrix.Repo }} if: startsWith (matrix.Repo, 'ppa:') - name: Add apt packages ${{ matrix.PackageDeps }} run: | sudo apt-get --yes update sudo apt-get --yes install libxerces-c-dev libssl-dev ${{ matrix.PackageDeps }} - name: Create $ACE_ROOT/ace/config.h run: | '#include "ace/config-linux.h"' > ${env:ACE_ROOT}/ace/config.h shell: pwsh - name: Create $ACE_ROOT/include/makeinclude/platform_macros.GNU run: | 'ipv6=1' > ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU 'xerces3=1' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU 'ssl=1' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU 'INSTALL_PREFIX = ${{ github.workspace }}/installed' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU shell: pwsh - name: Add optional platform macros run: | '${{ matrix.optional_macros }}' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU shell: pwsh if: matrix.optional_macros != '' - name: Extend $ACE_ROOT/include/makeinclude/platform_macros.GNU run: | '${{ matrix.platform_file }}' >> ${env:ACE_ROOT}/include/makeinclude/platform_macros.GNU shell: pwsh - name: Create $ACE_ROOT/bin/MakeProjectCreator/config/default.features run: | 'ipv6=1' > ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features 'xerces3=1' >> ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features 'ssl=1' >> ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features 'versioned_namespace=1' >> ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features shell: pwsh - name: Add optional MPC features run: | '${{ matrix.optional_feature }}' >> ${env:ACE_ROOT}/bin/MakeProjectCreator/config/default.features if: matrix.optional_feature != '' shell: pwsh - name: Initialize CodeQL uses: github/codeql-action/init@v2 with: languages: cpp if: matrix.feature == 'CodeQL' - name: Run mwc.pl on $(TAO_ROOT)/TAO_ACE.mwc run: | perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:TAO_ROOT}/TAO_ACE.mwc -workers 4 shell: pwsh - name: Run mwc.pl on $(ACE_ROOT)/tests/tests.mwc run: | perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:ACE_ROOT}/tests/tests.mwc -workers 4 shell: pwsh - name: Run mwc.pl on $(TAO_ROOT)/tests/IDL_Test run: | perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:TAO_ROOT}/tests/IDL_Test -workers 4 shell: pwsh - name: Build TAO_ACE workspace run: | make -j 6 -C ${env:TAO_ROOT} shell: pwsh - name: Build ACE/tests workspace run: | make -j 6 -C ${env:ACE_ROOT}/tests shell: pwsh - name: Build TAO/tests/IDL_Test project run: | make -j 6 -C ${env:TAO_ROOT}/tests/IDL_Test shell: pwsh if: matrix.feature != 'CORBA/e micro' - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2 if: matrix.feature == 'CodeQL' - name: Install TAO_ACE workspace run: | make -C ${env:TAO_ROOT} install shell: pwsh - name: Test pkgconfig if: matrix.CheckPkgConfig run: | cd ${{ github.workspace }}/installed/lib/pkgconfig export PKG_CONFIG_PATH=. for f in *.pc; do pkg-config --print-errors --exists ${f%.pc}; done