Squashed 'external/nfd/' content from commit a1a40106
git-subtree-dir: external/nfd git-subtree-split: a1a401062819beb8c3da84518ab1fe7de88632db
This commit is contained in:
279
.github/workflows/cmake.yml
vendored
Normal file
279
.github/workflows/cmake.yml
vendored
Normal file
@@ -0,0 +1,279 @@
|
||||
name: build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
clang-format:
|
||||
|
||||
name: ClangFormat check
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Format code
|
||||
run: find src/ test/ -iname '*.c' -or -iname '*.cpp' -or -iname '*.m' -or -iname '*.mm' -or -iname '*.h' -or -iname '*.hpp' | xargs clang-format -i -style=file
|
||||
- name: Check diff
|
||||
run: git diff --exit-code
|
||||
|
||||
line-endings:
|
||||
|
||||
name: Line endings check
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Dependencies
|
||||
run: sudo apt-get update && sudo apt-get install dos2unix
|
||||
- name: Convert to Unix line endings
|
||||
run: dos2unix */*
|
||||
- name: Check diff
|
||||
run: git diff --exit-code
|
||||
|
||||
build-ubuntu:
|
||||
|
||||
name: Ubuntu ${{ matrix.os.name }} - ${{ matrix.compiler.name }}, ${{ matrix.portal.name }}, ${{ matrix.autoappend.name }}, ${{ matrix.casesensitive.name }}, ${{ matrix.shared_lib.name }}, C++${{ matrix.cppstd }}
|
||||
runs-on: ${{ matrix.os.label }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ {label: ubuntu-latest, name: latest}, {label: ubuntu-22.04, name: 22.04} ]
|
||||
portal: [ {flag: OFF, dep: libgtk-3-dev, name: GTK}, {flag: ON, dep: libdbus-1-dev, name: Portal} ] # The NFD_PORTAL setting defaults to OFF (i.e. uses GTK)
|
||||
autoappend: [ {flag: OFF, name: NoAppendExtn} ] # By default the NFD_PORTAL mode does not append extensions, because it breaks some features of the portal
|
||||
casesensitive: [ {flag: OFF, name: CaseInsensitive} ] # Case insensitive or case sensitive file filtering
|
||||
compiler: [ {c: gcc, cpp: g++, name: GCC}, {c: clang, cpp: clang++, name: Clang} ] # The default compiler is gcc/g++
|
||||
cppstd: [20, 11]
|
||||
shared_lib: [ {flag: OFF, name: Static} ]
|
||||
include:
|
||||
- os: {label: ubuntu-latest, name: latest}
|
||||
portal: {flag: ON, dep: libdbus-1-dev, name: Portal}
|
||||
autoappend: {flag: ON, name: AutoAppendExtn}
|
||||
casesensitive: {flag: OFF, name: CaseInsensitive}
|
||||
compiler: {c: gcc, cpp: g++, name: GCC}
|
||||
cppstd: 11
|
||||
shared_lib: {flag: OFF, name: Static}
|
||||
- os: {label: ubuntu-latest, name: latest}
|
||||
portal: {flag: ON, dep: libdbus-1-dev, name: Portal}
|
||||
autoappend: {flag: ON, name: AutoAppendExtn}
|
||||
casesensitive: {flag: OFF, name: CaseInsensitive}
|
||||
compiler: {c: clang, cpp: clang++, name: Clang}
|
||||
cppstd: 11
|
||||
shared_lib: {flag: OFF, name: Static}
|
||||
- os: {label: ubuntu-latest, name: latest}
|
||||
portal: {flag: ON, dep: libdbus-1-dev, name: Portal}
|
||||
autoappend: {flag: OFF, name: NoAppendExtn}
|
||||
casesensitive: {flag: OFF, name: CaseInsensitive}
|
||||
compiler: {c: gcc, cpp: g++, name: GCC}
|
||||
cppstd: 11
|
||||
shared_lib: {flag: ON, name: Shared}
|
||||
- os: {label: ubuntu-latest, name: latest}
|
||||
portal: {flag: OFF, dep: libgtk-3-dev, name: GTK}
|
||||
autoappend: {flag: OFF, name: NoAppendExtn}
|
||||
casesensitive: {flag: ON, name: CaseSensitive}
|
||||
compiler: {c: gcc, cpp: g++, name: GCC}
|
||||
cppstd: 11
|
||||
shared_lib: {flag: OFF, name: Static}
|
||||
- os: {label: ubuntu-latest, name: latest}
|
||||
portal: {flag: ON, dep: libdbus-1-dev, name: Portal}
|
||||
autoappend: {flag: OFF, name: NoAppendExtn}
|
||||
casesensitive: {flag: ON, name: CaseSensitive}
|
||||
compiler: {c: gcc, cpp: g++, name: GCC}
|
||||
cppstd: 11
|
||||
shared_lib: {flag: OFF, name: Static}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Dependencies
|
||||
run: sudo apt-get update && sudo apt-get install ${{ matrix.portal.dep }}
|
||||
- name: Configure
|
||||
run: mkdir build && mkdir install && cd build && cmake -DCMAKE_INSTALL_PREFIX="../install" -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=${{ matrix.compiler.c }} -DCMAKE_CXX_COMPILER=${{ matrix.compiler.cpp }} -DCMAKE_CXX_STANDARD=${{ matrix.cppstd }} -DCMAKE_C_FLAGS="-Wall -Wextra -Wshadow -Werror -pedantic" -DCMAKE_CXX_FLAGS="-Wall -Wextra -Wshadow -Werror -pedantic" -DNFD_PORTAL=${{ matrix.portal.flag }} -DNFD_APPEND_EXTENSION=${{ matrix.autoappend.flag }} -DNFD_CASE_SENSITIVE_FILTER=${{ matrix.casesensitive.flag }} -DBUILD_SHARED_LIBS=${{ matrix.shared_lib.flag }} -DNFD_BUILD_TESTS=ON ..
|
||||
- name: Build
|
||||
run: cmake --build build --target install
|
||||
- name: Upload test binaries
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Ubuntu ${{ matrix.os.name }} - ${{ matrix.compiler.name }}, ${{ matrix.portal.name }}, ${{ matrix.autoappend.name }}, ${{ matrix.casesensitive.name }}, ${{ matrix.shared_lib.name }}, C++${{ matrix.cppstd }}
|
||||
path: |
|
||||
build/src/*
|
||||
build/test/*
|
||||
|
||||
build-macos-clang:
|
||||
|
||||
name: MacOS ${{ matrix.os.name }} - Clang, ${{ matrix.shared_lib.name }}
|
||||
runs-on: ${{ matrix.os.label }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ {label: macos-latest, name: latest} ]
|
||||
shared_lib: [ {flag: OFF, name: Static}, {flag: ON, name: Shared} ]
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Configure
|
||||
run: mkdir build && mkdir install && cd build && cmake -DCMAKE_INSTALL_PREFIX="../install" -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-Wall -Wextra -Wshadow -Werror -pedantic" -DCMAKE_CXX_FLAGS="-Wall -Wextra -Wshadow -Werror -pedantic" -DBUILD_SHARED_LIBS=${{ matrix.shared_lib.flag }} -DNFD_BUILD_TESTS=ON ..
|
||||
- name: Build
|
||||
run: cmake --build build --target install
|
||||
- name: Upload test binaries
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: MacOS ${{ matrix.os.name }} - Clang, ${{ matrix.shared_lib.name }}
|
||||
path: |
|
||||
build/src/*
|
||||
build/test/*
|
||||
|
||||
build-windows-msvc:
|
||||
|
||||
name: Windows latest - MSVC, ${{ matrix.shared_lib.name }}
|
||||
runs-on: windows-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
shared_lib: [ {flag: OFF, name: Static}, {flag: ON, name: Shared} ]
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Configure
|
||||
run: mkdir build && mkdir install && cd build && cmake -DCMAKE_INSTALL_PREFIX="../install" -DBUILD_SHARED_LIBS=${{ matrix.shared_lib.flag }} -DNFD_BUILD_TESTS=ON ..
|
||||
- name: Build
|
||||
run: cmake --build build --target install --config Release
|
||||
- name: Upload test binaries
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Windows latest - MSVC, ${{ matrix.shared_lib.name }}
|
||||
path: |
|
||||
build/src/Release/*
|
||||
build/test/Release/*
|
||||
|
||||
build-windows-clang:
|
||||
|
||||
name: Windows latest - Clang, Static
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Downgrade CMake # force downgrade CMake as later versions try to use the C++ standard flag to compile C programs, which cause an error.
|
||||
run: choco install cmake --version 3.30.6 --allow-downgrade
|
||||
- name: Configure
|
||||
run: mkdir build && mkdir install && cd build && cmake -DCMAKE_INSTALL_PREFIX="../install" -T ClangCL -DNFD_BUILD_TESTS=ON ..
|
||||
- name: Build
|
||||
run: cmake --build build --target install --config Release
|
||||
- name: Upload test binaries
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Windows latest - Clang, Static
|
||||
path: |
|
||||
build/src/Release/*
|
||||
build/test/Release/*
|
||||
|
||||
build-windows-mingw:
|
||||
|
||||
name: Windows latest - MinGW, Static
|
||||
runs-on: windows-latest
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: msys2 {0}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Set up MinGW-w64
|
||||
uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
path-type: minimal
|
||||
install: >-
|
||||
base-devel
|
||||
mingw-w64-x86_64-gcc
|
||||
mingw-w64-x86_64-cmake
|
||||
- name: Configure
|
||||
run: mkdir build && mkdir install && cd build && cmake -DCMAKE_INSTALL_PREFIX="../install" -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -G 'MSYS Makefiles' -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-Wall -Wextra -Wshadow -Werror -pedantic" -DCMAKE_CXX_FLAGS="-Wall -Wextra -Wshadow -Werror -pedantic" -DNFD_BUILD_TESTS=ON ..
|
||||
- name: Build
|
||||
run: cmake --build build --target install
|
||||
- name: Upload test binaries
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Windows latest - MinGW, Static
|
||||
path: |
|
||||
build/src/*
|
||||
build/test/*
|
||||
|
||||
build-ubuntu-sdl2:
|
||||
|
||||
name: Ubuntu latest - GCC, ${{ matrix.portal.name }}, Static, SDL2
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
portal: [ {flag: OFF, dep: libgtk-3-dev, name: GTK}, {flag: ON, dep: libdbus-1-dev, name: Portal} ] # The NFD_PORTAL setting defaults to OFF (i.e. uses GTK)
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Dependencies
|
||||
run: sudo apt-get update && sudo apt-get install ${{ matrix.portal.dep }} libsdl2-dev libsdl2-ttf-dev
|
||||
- name: Configure
|
||||
run: mkdir build && mkdir install && cd build && cmake -DCMAKE_INSTALL_PREFIX="../install" -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-Wall -Wextra -Wshadow -Werror -pedantic" -DCMAKE_CXX_FLAGS="-Wall -Wextra -Wshadow -Werror -pedantic" -DNFD_PORTAL=${{ matrix.portal.flag }} -DNFD_APPEND_EXTENSION=OFF -DNFD_BUILD_TESTS=OFF -DNFD_BUILD_SDL2_TESTS=ON ..
|
||||
- name: Build
|
||||
run: cmake --build build --target install
|
||||
- name: Upload test binaries
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Ubuntu latest - GCC, ${{ matrix.portal.name }}, Static, SDL2
|
||||
path: |
|
||||
build/src/*
|
||||
build/test/*
|
||||
|
||||
build-macos-sdl2:
|
||||
|
||||
name: MacOS latest - Clang, Static, SDL2
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Dependencies
|
||||
run: brew install sdl2 sdl2_ttf
|
||||
- name: Configure
|
||||
run: mkdir build && mkdir install && cd build && cmake -DCMAKE_INSTALL_PREFIX="../install" -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-Wall -Wextra -Wshadow -Werror -pedantic" -DCMAKE_CXX_FLAGS="-Wall -Wextra -Wshadow -Werror -pedantic" -DNFD_BUILD_TESTS=OFF -DNFD_BUILD_SDL2_TESTS=ON ..
|
||||
- name: Build
|
||||
run: cmake --build build --target install
|
||||
- name: Upload test binaries
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: MacOS latest - Clang, Static, SDL2
|
||||
path: |
|
||||
build/src/*
|
||||
build/test/*
|
||||
|
||||
build-windows-sdl2:
|
||||
|
||||
name: Windows latest - MSVC, Static, SDL2
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Install pkgconfiglite
|
||||
run: choco install pkgconfiglite
|
||||
- name: Install Dependencies
|
||||
run: vcpkg integrate install && vcpkg install sdl2 sdl2-ttf --triplet=x64-windows-release
|
||||
- name: Configure
|
||||
run: mkdir build && mkdir install && cd build && cmake -DCMAKE_INSTALL_PREFIX="../install" -DCMAKE_TOOLCHAIN_FILE="C:/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET="x64-windows-release" -DNFD_BUILD_TESTS=OFF -DNFD_BUILD_SDL2_TESTS=ON ..
|
||||
- name: Build
|
||||
run: cmake --build build --target install --config Release
|
||||
- name: Upload test binaries
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Windows latest - MSVC, Static, SDL2
|
||||
path: |
|
||||
build/src/Release/*
|
||||
build/test/Release/*
|
||||
Reference in New Issue
Block a user