forked from github_mirror/framelesshelper
86 lines
2.8 KiB
YAML
86 lines
2.8 KiB
YAML
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.0]
|
|
library-type: [shared, static]
|
|
platform: [windows-latest, ubuntu-latest, macos-latest]
|
|
include:
|
|
- platform: windows-latest
|
|
CC: cl.exe
|
|
CXX: cl.exe
|
|
LD: link.exe
|
|
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 ${{ matrix.lib_type_flag }} ${{ matrix.EXTRA_FLAGS }} -GNinja ..
|
|
cmake --build . --target all --config Release --parallel
|
|
cmake --install . --config Release --strip
|