name: Build Dyninst on: workflow_call: inputs: name: required: true type: string os: required: true type: string extra-libs: required: false type: string extra-cmake-flags: required: false type: string c-compiler: required: true type: string cxx-compiler: required: true type: string is-clang: required: false type: boolean default: false jobs: build: permissions: packages: read strategy: fail-fast: false matrix: build-type: ['DEBUG', 'RELWITHDEBINFO', 'RELEASE'] runs-on: ubuntu-latest container: image: ghcr.io/dyninst/amd64/${{ inputs.os }}:latest credentials: username: ${{ github.actor }} password: ${{ secrets.github_token }} name: ${{ inputs.name }} (${{ matrix.build-type }}) steps: # Clang doesn't allow for multiple libomp installations - name: Clean libomp install if: ${{ inputs.is-clang }} run: apt remove --purge -y "libomp*" - name: Install C compiler (${{ inputs.c-compiler }}) run: | apt update -qq apt install -qq --no-install-recommends -y ${{ inputs.c-compiler }} # There is no apt package for clang++ - name: Install ${{ inputs.cxx-compiler }} if: ${{ !inputs.is-clang }} run: apt install -qq --no-install-recommends -y ${{ inputs.cxx-compiler }} - name: Install extra libs (${{ inputs.extra-libs }}) if: ${{ inputs.extra-libs != '' }} run: apt install -qq --no-install-recommends -y ${{ inputs.extra-libs }} - name: Configure Dyninst (${{ matrix.build-type }}) shell: bash run: | cmake /dyninst/src \ -DCMAKE_BUILD_TYPE="${{ matrix.build-type }}" \ -DCMAKE_C_COMPILER="${{ inputs.c-compiler }}" \ -DCMAKE_CXX_COMPILER="${{ inputs.cxx-compiler }}" \ -DDYNINST_WARNINGS_AS_ERRORS=ON ${{ inputs.extra-cmake-flags }} - name: Build Dyninst run: | cmake --build . --parallel 2