diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000..05215b9 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,46 @@ +name: CodeQL +on: + pull_request: + branches: [ "master" ] + +jobs: + codeql: + permissions: + security-events: write + packages: read + + strategy: + fail-fast: true + + matrix: + include: + - language: c-cpp + build-mode: manual + manual-command-list: > + cmake -S . -B ./build -G "Ninja Multi-Config" + -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_CXX_FLAGS="-O3 -Wall -std=c++23" + + cmake --build ./build --config Release + + - language: actions + build-mode: none + + uses: VolcanusLucis/.github/.github/workflows/shared-codeql.yml@master + with: + language: ${{ matrix.language }} + build-mode: ${{ matrix.build-mode }} + manual-command-list: ${{ matrix.manual-command-list }} + + run-codeql: + permissions: + contents: none + + if: always() + runs-on: ubuntu-latest + needs: codeql + steps: + # https://github.com/orgs/community/discussions/26822 + - if: ${{ contains(needs.*.result, 'failure') + || contains(needs.*.result, 'cancelled') + || contains(needs.*.result, 'skipped') }} + run: exit 1 diff --git a/.github/workflows/pr-xplat-build-test-autocomplete.yml b/.github/workflows/pr-xplat-build-test-autocomplete.yml new file mode 100644 index 0000000..e1a8ca0 --- /dev/null +++ b/.github/workflows/pr-xplat-build-test-autocomplete.yml @@ -0,0 +1,27 @@ +name: Cross-platform Builds Autocomplete +permissions: + contents: read + +on: + pull_request: + paths-ignore: + - 'libvlengine/**' + - 'toolchains/**' + - 'CMake**.**' + +jobs: + build: + uses: VolcanusLucis/.github/.github/workflows/build-cmake-project-presets.yml@master + with: + architecture: '' + build-tool: '' + build-type: '' + compiler: '' + target: '' + bypass: true + + build-all: + if: always() + runs-on: ubuntu-latest + steps: + - run: echo "No builds needed!" \ No newline at end of file diff --git a/.github/workflows/pr-xplat-build-test.yml b/.github/workflows/pr-xplat-build-test.yml index 8ec11e4..b05db53 100644 --- a/.github/workflows/pr-xplat-build-test.yml +++ b/.github/workflows/pr-xplat-build-test.yml @@ -1,15 +1,17 @@ -name: PR Cross-platform Build Test +name: Cross-platform Builds permissions: contents: read on: pull_request: - branches: [ "master" ] + branches: [ 'master' ] + paths: + - 'libvlengine/**' + - 'toolchains/**' + - 'CMake**.**' jobs: - cross-platform-build: - runs-on: ${{ matrix.os }} - + build: strategy: fail-fast: true @@ -17,61 +19,29 @@ jobs: build-tool: [ ninja ] compiler: [ mingw64, gcc ] architecture: [ x64, x86 ] - os: [ ubuntu-latest, windows-latest ] + target: [ win, linux ] build-type: [ debug, release ] exclude: - - os: windows-latest + - target: win compiler: gcc - - os: ubuntu-latest + - target: linux compiler: mingw64 + uses: VolcanusLucis/.github/.github/workflows/build-cmake-project-presets.yml@master + with: + architecture: ${{ matrix.architecture }} + build-tool: ${{ matrix.build-tool }} + build-type: ${{ matrix.build-type }} + compiler: ${{ matrix.compiler }} + target: ${{ matrix.target }} + + build-all: + if: always() + runs-on: ubuntu-latest + needs: build steps: - - uses: actions/checkout@v4 - - - name: Initialise Variables - shell: bash - run: | - echo "current-build-tool=${{ matrix.build-tool }}" >> $GITHUB_ENV - echo "current-compiler=${{ matrix.compiler }}" >> $GITHUB_ENV - echo "current-architecture=${{ matrix.architecture }}" >> $GITHUB_ENV - if [ ${{ matrix.os }} == "ubuntu-latest" ]; then - echo "current-os=linux" >> $GITHUB_ENV - else - echo "current-os=win" >> $GITHUB_ENV - fi - echo "current-build-type=${{ matrix.build-type }}" >> $GITHUB_ENV - - - name: Initialise Windows Runner - if: runner.os == 'Windows' - shell: bash - run: | - if [[ "${{ matrix.architecture }}" == "x64" ]]; then - choco install mingw --no-progress - echo "C:\ProgramData\mingw64\mingw64\bin" >> $GITHUB_PATH - else - choco install mingw --x86 --no-progress - echo "C:\ProgramData\mingw64\mingw32\bin" >> $GITHUB_PATH - fi - - choco install ninja --no-progress - choco install cmake --no-progress - - - name: Initialise Linux Runner - if: runner.os == 'Linux' - shell: bash - run: | - sudo apt remove cmake -y - sudo pip install cmake --upgrade - sudo apt install gcc-multilib - sudo apt install g++-multilib - - - name: Configure CMake - shell: bash - run: - cmake -S "${{ github.workspace }}" - --preset ${{ env.current-build-tool }}-${{ env.current-compiler }}-${{ env.current-architecture }}-${{ env.current-os }} - - - name: Build - run: - cmake --build - --preset ${{ env.current-build-tool }}-${{ env.current-compiler }}-${{ env.current-architecture }}-${{ env.current-os }}-${{ env.current-build-type }} + # https://github.com/orgs/community/discussions/26822 + - if: ${{ contains(needs.*.result, 'failure') + || contains(needs.*.result, 'cancelled') + || contains(needs.*.result, 'skipped') }} + run: exit 1 \ No newline at end of file diff --git a/.github/workflows/tagged-release-workflow.yml b/.github/workflows/tagged-release-workflow.yml index ac98ccf..53dd6ca 100644 --- a/.github/workflows/tagged-release-workflow.yml +++ b/.github/workflows/tagged-release-workflow.yml @@ -4,12 +4,12 @@ permissions: on: push: - branches: [ "master" ] tags: - "v*" jobs: build: + if: ${{ github.ref == 'refs/heads/master' }} runs-on: ubuntu-latest strategy: diff --git a/libvlengine/CMakeLists.txt b/libvlengine/CMakeLists.txt index ae80213..c8ac8d2 100644 --- a/libvlengine/CMakeLists.txt +++ b/libvlengine/CMakeLists.txt @@ -2,4 +2,5 @@ main.cpp ) +target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_23) target_include_directories(${PROJECT_NAME} PUBLIC ..) diff --git a/toolchains/gcc-x64-linux.cmake b/toolchains/gcc-x64-linux.cmake index 93c5367..dd55bd9 100644 --- a/toolchains/gcc-x64-linux.cmake +++ b/toolchains/gcc-x64-linux.cmake @@ -2,7 +2,6 @@ set(CMAKE_C_COMPILER gcc) set(CMAKE_CXX_COMPILER g++) -set(CMAKE_C_STANDARD 23) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/toolchains/gcc-x86-linux.cmake b/toolchains/gcc-x86-linux.cmake index 4ac6336..268635d 100644 --- a/toolchains/gcc-x86-linux.cmake +++ b/toolchains/gcc-x86-linux.cmake @@ -4,7 +4,6 @@ set(CMAKE_C_COMPILER gcc) set(CMAKE_CXX_COMPILER g++) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") -set(CMAKE_C_STANDARD 23) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/toolchains/mingw64-x64-win.cmake b/toolchains/mingw64-x64-win.cmake index 3a9823b..01092ca 100644 --- a/toolchains/mingw64-x64-win.cmake +++ b/toolchains/mingw64-x64-win.cmake @@ -2,7 +2,6 @@ set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc) set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++) -set(CMAKE_C_STANDARD 23) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/toolchains/mingw64-x86-win.cmake b/toolchains/mingw64-x86-win.cmake index 942d6cf..e74ef68 100644 --- a/toolchains/mingw64-x86-win.cmake +++ b/toolchains/mingw64-x86-win.cmake @@ -2,7 +2,6 @@ set(CMAKE_C_COMPILER i686-w64-mingw32-gcc) set(CMAKE_CXX_COMPILER i686-w64-mingw32-g++) -set(CMAKE_C_STANDARD 23) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON)