diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml index 5a3a99b..50ab03a 100644 --- a/.github/workflows/builds.yml +++ b/.github/workflows/builds.yml @@ -11,81 +11,67 @@ jobs: build: permissions: write-all - name: ${{ matrix.platform.name }} ${{ matrix.config.name }} + name: ${{ matrix.platform.name }} ${{ matrix.config.name }} ${{ matrix.build.name }} runs-on: ${{ matrix.platform.os }} strategy: fail-fast: false matrix: platform: - - { name: Linux Clang, os: ubuntu-latest, font: ./build/bin/calibril.ttf, bin: ./build/bin/flappy_ffnn_ga, zip: ubuntu-executable-clang.zip, zipper: zip, flags: -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ } + - { name: Windows VS2019, os: windows-2019, font: .\\build\\bin\\calibril.ttf, bin: .\\build\\bin\\Release\\flappy_ffnn_ga.exe, zip: windows-executable-VS19.zip, zipper: 7z a -tzip } + - { name: Windows VS2022, os: windows-2022, font: .\\build\\bin\\calibril.ttf, bin: .\\build\\bin\\Release\\flappy_ffnn_ga.exe, zip: windows-executable-VS22.zip, zipper: 7z a -tzip } + - { name: Windows Clang, os: windows-latest, font: .\\build\\bin\\calibril.ttf, bin: .\\build\\bin\\Release\\flappy_ffnn_ga.exe, zip: windows-executable-clang.zip, zipper: 7z a -tzip, flags: -G "MinGW Makefiles" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ } + - { name: Windows GCC, os: windows-latest, font: .\\build\\bin\\calibril.ttf, bin: .\\build\\bin\\Release\\flappy_ffnn_ga.exe, zip: windows-executable-gcc.zip, zipper: 7z a -tzip, flags: -G "MinGW Makefiles" -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ } + - { name: MacOS XCode, os: macos-latest, font: ./build/bin/calibril.ttf, bin: ./build/bin/flappy_ffnn_ga, zip: mac-executable.zip, zipper: zip } + - { name: Linux GCC, os: ubuntu-latest, font: ./build/bin/calibril.ttf, bin: ./build/bin/flappy_ffnn_ga, zip: ubuntu-executable-gcc.zip, zipper: zip } + - { name: Linux Clang, os: ubuntu-latest, font: ./build/bin/calibril.ttf, bin: ./build/bin/flappy_ffnn_ga, zip: ubuntu-executable-clang.zip, zipper: zip, flags: -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ } config: - - { name: static, flags: -DBUILD_SHARED_LIBS=FALSE -DCMAKE_BUILD_TYPE=Release } + - { name: Static, flags: -DBUILD_SHARED_LIBS=FALSE } + # - { name: Shared, flags: -DBUILD_SHARED_LIBS=TRUE } + build: + - { name: Release, flag: -DCMAKE_BUILD_TYPE=Release } + # - { name: Debug, flag: -DCMAKE_BUILD_TYPE=Debug } + # - { name: RelWithDebInfo, flag: -DCMAKE_BUILD_TYPE=RelWithDebInfo } + # - { name: MinSizeRel, flag: -DCMAKE_BUILD_TYPE=MinSizeRel } steps: - - name: Install Linux Dependencies - run: sudo apt-get update && sudo apt-get install libxrandr-dev libxcursor-dev libudev-dev libopenal-dev libflac-dev libvorbis-dev libgl1-mesa-dev libegl1-mesa-dev - - name: Checkout - uses: actions/checkout@v3 - - - name: Display Tag Name - run : echo ${{github.ref_name}} - - - name: Configure project - run: cmake -S src -B build -DCMAKE_INSTALL_PREFIX=install ${{matrix.platform.flags}} ${{matrix.config.flags}} + uses: actions/checkout@v4 - - name: Build ${{matrix.platform.bin}} executable - run: cmake --build build --config Release - - - name: Compress ${{matrix.platform.bin}} executable - run: ${{matrix.platform.zipper}} ${{matrix.platform.zip}} ${{matrix.platform.bin}} ${{matrix.platform.font}} - - - name: Create github release and upload ${{matrix.platform.zip}} - run: gh release create ${{github.ref_name}} ${{matrix.platform.zip}} --title "${{github.ref_name}}" --notes "Release notes for ${{github.ref_name}}" --draft=false --prerelease=false + - name: Cache Dependencies + id: cmake-fetched-content-libraries + uses: actions/cache@v3 env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - build-others: - needs: build - permissions: write-all - - name: ${{ matrix.platform.name }} ${{ matrix.config.name }} - runs-on: ${{ matrix.platform.os }} - - strategy: - fail-fast: false - matrix: - platform: - - { name: Windows VS2019, os: windows-2019, font: .\\build\\bin\\calibril.ttf, bin: .\\build\\bin\\Release\\flappy_ffnn_ga.exe, zip: windows-executable-VS19.zip, zipper: 7z a -tzip, flags: -DBUILD_SHARED_LIBS=FALSE -DCMAKE_BUILD_TYPE=Release } - - { name: Windows VS2022, os: windows-2022, font: .\\build\\bin\\calibril.ttf, bin: .\\build\\bin\\Release\\flappy_ffnn_ga.exe, zip: windows-executable-VS22.zip, zipper: 7z a -tzip, flags: -DBUILD_SHARED_LIBS=FALSE -DCMAKE_BUILD_TYPE=Release } - - { name: Windows Clang, os: windows-latest, font: .\\build\\bin\\calibril.ttf, bin: .\\build\\bin\\Release\\flappy_ffnn_ga.exe, zip: windows-executable-clang.zip, zipper: 7z a -tzip, flags: -DBUILD_SHARED_LIBS=FALSE -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ } - - { name: Windows GCC, os: windows-latest, font: .\\build\\bin\\calibril.ttf, bin: .\\build\\bin\\Release\\flappy_ffnn_ga.exe, zip: windows-executable-gcc.zip, zipper: 7z a -tzip, flags: -DBUILD_SHARED_LIBS=FALSE -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ } - - { name: MacOS XCode, os: macos-latest, font: ./build/bin/calibril.ttf, bin: ./build/bin/flappy_ffnn_ga, zip: mac-executable.zip, zipper: zip, flags: -DBUILD_SHARED_LIBS=FALSE -DCMAKE_BUILD_TYPE=Release } - - { name: Linux GCC, os: ubuntu-latest, font: ./build/bin/calibril.ttf, bin: ./build/bin/flappy_ffnn_ga, zip: ubuntu-executable-gcc.zip, zipper: zip, flags: -DBUILD_SHARED_LIBS=FALSE -DCMAKE_BUILD_TYPE=Release } - config: - - { name: static, flags: -DBUILD_SHARED_LIBS=FALSE -DCMAKE_BUILD_TYPE=Release } - # - { name: shared, flags: -DBUILD_SHARED_LIBS=TRUE -DCMAKE_BUILD_TYPE=Release } - - steps: - - - name: Checkout Repository - uses: actions/checkout@v3 + cache-name: cache-cmake-dependencies + with: + path: build + key: ${{ matrix.platform.zip }}-build-${{env.cache-name}}-${{ hashFiles('**/CMakeCache.txt') }} + restore-keys: | + ${{ matrix.platform.zip }}-build-${{ env.cache-name }}- + ${{ matrix.platform.zip }}-build- + ${{ matrix.platform.zip }}- + + - if: ${{ steps.cmake-fetched-content-libraries.outputs.cache-hit != 'true' }} + name: Cache Found + continue-on-error: true + run: echo cache has been found - name: Install Linux Dependencies if: runner.os == 'Linux' run: sudo apt-get update && sudo apt-get install libxrandr-dev libxcursor-dev libudev-dev libopenal-dev libflac-dev libvorbis-dev libgl1-mesa-dev libegl1-mesa-dev + - name: Update Clang on Windows + if: matrix.platform.zip == 'windows-executable-clang.zip' + run: choco upgrade llvm + + - name: Display Tag Name + run : echo ${{github.ref_name}} + - name: Configure project - run: cmake -S src -B build -DCMAKE_INSTALL_PREFIX=install ${{matrix.platform.flags}} ${{matrix.config.flags}} + run: cmake -S src -B build -DCMAKE_INSTALL_PREFIX=install ${{matrix.platform.flags}} ${{matrix.config.flags}} ${{matrix.build.flag}} - name: Build ${{matrix.platform.bin}} executable - run: cmake --build build --config Release + run: cmake --build build --config ${{matrix.build.name}} - name: Compress ${{matrix.platform.bin}} executable - run: ${{matrix.platform.zipper}} ${{matrix.platform.zip}} ${{matrix.platform.bin}} ${{matrix.platform.font}} - - - name: Upload ${{matrix.platform.zip}} to release - run: gh release upload ${{github.ref_name}} ${{matrix.platform.zip}} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + run: ${{matrix.platform.zipper}} ${{matrix.platform.zip}} ${{matrix.platform.bin}} ${{matrix.platform.font}} \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6d3c266..1284350 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -3,6 +3,8 @@ cmake_minimum_required(VERSION 3.16) project(flappy_ffnn_ga LANGUAGES CXX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) option(BUILD_SHARED_LIBS "Build shared libraries" OFF) @@ -30,7 +32,7 @@ FetchContent_MakeAvailable(SFML Eigen) file(GLOB SOURCES "*.cpp") add_executable(flappy_ffnn_ga main.cc ${SOURCES}) -target_link_libraries(flappy_ffnn_ga PRIVATE sfml-graphics sfml-window Eigen3::Eigen) +target_link_libraries(flappy_ffnn_ga PRIVATE m sfml-graphics sfml-window Eigen3::Eigen) target_compile_features(flappy_ffnn_ga PRIVATE cxx_std_17) if(WIN32)