name: CMake on: [ push, pull_request ] env: BUILD_TYPE: Release MSYS: D:\msys2 jobs: build: strategy: matrix: os: [ ubuntu, macos, windows ] qt: [ "5.15.2", "6.6.2" ] include: - os: ubuntu generator: Unix Makefiles openssl_root: /usr artifact: build/xca-*-Linux.tar.gz host: linux runs: ubuntu-latest - os: macos generator: Unix Makefiles openssl_root: /opt/homebrew/opt/openssl artifact: build/xca-*.dmg host: mac runs: macos-latest - os: windows generator: MinGW Makefiles openssl_root: D:\msys2\msys64\mingw64 artifact: | build/xca-*.msi build/xca-portable-*.zip host: windows - os: windows qt: "5.15.2" winarch: win64_mingw81 runs: windows-2019 exclude: - os: windows qt: "6.6.2" - os: macos qt: "5.15.2" runs-on: ${{matrix.runs}} steps: - name: Install Python 3.10 uses: actions/setup-python@v5 with: python-version: "3.10" - name: Install Sphinx run: | python -m pip install --upgrade pip pip install sphinx - name: Install Qt uses: jurplel/install-qt-action@v3 with: arch: ${{matrix.winarch}} version: ${{matrix.qt}} - name: Install MSYS2 and OpenSSL on Windows uses: msys2/setup-msys2@v2 if: matrix.os == 'windows' with: location: ${{env.MSYS}} msystem: mingw64 install: mingw-w64-x86_64-openssl openssl-devel base-devel mingw-w64-x86_64-gcc - name: Brew install OpenSSL if: matrix.os == 'macos' run: brew install openssl - name: Checkout XCA uses: actions/checkout@v4 with: fetch-depth: 0 - name: Configure # No YAML Multiline mechanism (>, |, \, >-, >+2 whatever) works as expected # Give up. Live with the long line run: cmake -B ${{github.workspace}}/build -G "${{matrix.generator}}" -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DOPENSSL_ROOT_DIR=${{matrix.openssl_root}} --warn-uninitialized -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_OSX_DEPLOYMENT_TARGET="10.15" - name: Build run: cmake --build ${{github.workspace}}/build -j 5 -v - name: Fixup after WindeployQT and Install if: matrix.os == 'windows' run: | cd ${{env.MSYS}}\msys64\mingw64\bin cmake -E copy libgcc_s_seh-1.dll libstdc++-6.dll libwinpthread-1.dll ${{github.workspace}}\build cmake --build ${{github.workspace}}/build -t install - name: Test # Execute tests defined by the CMake configuration. # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail run: | cmake --build ${{github.workspace}}/build -t tests ctest --test-dir ${{github.workspace}}/build -L console - name: Install if: matrix.os != 'windows' run: DESTDIR=${{github.workspace}}/build/INSTALL cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -t install - name: Pack run: | cd ${{github.workspace}}/build cpack -C ${{env.BUILD_TYPE}} - name: Deploy uses: actions/upload-artifact@v4 with: path: ${{matrix.artifact}} name: ${{matrix.os}}-${{matrix.qt}}