name: "CI: Build Test" on: push: branches: - main paths-ignore: - "**.md" - "**.png" - "**.jpg" - "**.jpeg" - ".gitignore" workflow_dispatch: pull_request: jobs: build: name: Build strategy: matrix: qt-version: [5.15.2, 6.5.1] library-type: [shared, static] platform: [windows-latest, ubuntu-latest, macos-latest] include: - platform: windows-latest CC: cl CXX: cl LD: link EXTRA_FLAGS: -DFRAMELESSHELPER_ENABLE_SPECTRE=ON -DFRAMELESSHELPER_ENABLE_EHCONTGUARD=ON -DFRAMELESSHELPER_ENABLE_INTELCET=ON -DFRAMELESSHELPER_ENABLE_CFGUARD=ON - platform: ubuntu-latest CC: gcc CXX: g++ LD: ld EXTRA_FLAGS: -DFRAMELESSHELPER_ENABLE_SPECTRE=ON -DFRAMELESSHELPER_ENABLE_INTELCET=ON -DFRAMELESSHELPER_ENABLE_CFGUARD=ON - platform: macos-latest CC: /usr/local/opt/llvm/bin/clang CXX: /usr/local/opt/llvm/bin/clang++ LD: /usr/local/opt/llvm/bin/ld64.lld EXTRA_FLAGS: -DFRAMELESSHELPER_ENABLE_UNIVERSAL_BUILD=OFF - library-type: shared lib_type_flag: -DFRAMELESSHELPER_BUILD_STATIC=OFF - library-type: static lib_type_flag: -DFRAMELESSHELPER_BUILD_STATIC=ON runs-on: ${{ matrix.platform }} steps: - name: Check out repository uses: actions/checkout@v3 with: submodules: recursive - name: Install Qt SDK uses: jurplel/install-qt-action@v3 with: version: ${{ matrix.qt-version }} cache: true - name: Set up Ninja uses: seanmiddleditch/gha-setup-ninja@v3 with: version: 1.11.1 # Current latest version. - name: Set up MSVC environment if: ${{ matrix.platform == 'windows-latest' }} uses: ilammy/msvc-dev-cmd@v1 - name: Install Linux dependencies if: ${{ matrix.platform == 'ubuntu-latest' }} run: | sudo apt install -y libgl1-mesa-dev libxcb1-dev libgtk-3-dev - name: Install macOS dependencies if: ${{ matrix.platform == 'macos-latest' }} run: | brew install llvm export PATH="/usr/local/opt/llvm/bin:$PATH" - name: Build library with CMake run: | mkdir ci cd ci cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_C_COMPILER=${{ matrix.CC }} -DCMAKE_CXX_COMPILER=${{ matrix.CXX }} -DCMAKE_LINKER=${{ matrix.LD }} -DCMAKE_INSTALL_PREFIX=../../install -DCMAKE_BUILD_TYPE=Release -DFRAMELESSHELPER_BUILD_EXAMPLES=ON -DFRAMELESSHELPER_NO_SUMMARY=OFF ${{ matrix.lib_type_flag }} ${{ matrix.EXTRA_FLAGS }} -GNinja .. cmake --build . --target all --config Release --parallel cmake --install . --config Release --strip