From 2b30ab966b54452986df99c62abc402f5cd80f40 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 Aug 2024 00:35:23 +0300 Subject: [PATCH 01/15] add test and src subdirectories --- CMakeLists.txt | 68 ++++++--------------------------------------- src/CMakeLists.txt | 67 ++++++++++++++++++++++++++++++++++++++++++++ test/CMakeLists.txt | 19 +++++++++++++ 3 files changed, 94 insertions(+), 60 deletions(-) create mode 100644 src/CMakeLists.txt create mode 100644 test/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 579ee11b..2cfe479e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,13 +7,12 @@ cmake_minimum_required(VERSION 3.15) project(VoxelEngine) option(VOXELENGINE_BUILD_APPDIR OFF) +option(VOXELENGINE_BUILD_TESTS OFF) set(CMAKE_CXX_STANDARD 17) -file(GLOB_RECURSE HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp) -file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) - -add_executable(${PROJECT_NAME} ${SOURCES}) +add_subdirectory(src) +add_executable(${PROJECT_NAME} src/voxel_engine.cpp) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) if(VOXELENGINE_BUILD_APPDIR) @@ -81,67 +80,16 @@ if(VOXELENGINE_BUILD_WINDOWS_VCPKG AND WIN32) endforeach() endif() -find_package(OpenGL REQUIRED) -find_package(GLEW REQUIRED) -find_package(OpenAL REQUIRED) -find_package(ZLIB REQUIRED) -if (NOT APPLE) - find_package(EnTT REQUIRED) -endif() - -if (WIN32) - if(VOXELENGINE_BUILD_WINDOWS_VCPKG) - set(LUA_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/packages/luajit_x64-windows/lib/lua51.lib") - set(LUA_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/packages/luajit_x64-windows/include/luajit") - find_package(glfw3 REQUIRED) - find_package(spng REQUIRED) - find_package(glm REQUIRED) - find_package(vorbis REQUIRED) - set(PNGLIB spng::spng) - set(VORBISLIB Vorbis::vorbis Vorbis::vorbisfile) - else() - find_package(Lua REQUIRED) - set(PNGLIB spng) - set(VORBISLIB vorbis vorbisfile) # not tested - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/glfw) - endif() -elseif(APPLE) - find_package(PkgConfig) - pkg_check_modules(LUAJIT REQUIRED luajit) - pkg_check_modules(VORBIS REQUIRED vorbis vorbisfile) - set(LUA_INCLUDE_DIR "/opt/homebrew/include/luajit-2.1") - set(LUA_LIBRARIES "/opt/homebrew/lib/libluajit-5.1.a") - message(STATUS "LUA Libraries: ${LUA_LIBRARIES}") - message(STATUS "LUA Include Dir: ${LUA_INCLUDE_DIR}") - find_package(PNG REQUIRED) - set(PNGLIB PNG::PNG) - set(VORBISLIB ${VORBIS_LDFLAGS}) - message(STATUS "Vorbis Lib: ${VORBIS_LDFLAGS}") -else() - find_package(PkgConfig) - pkg_check_modules(LUAJIT REQUIRED luajit) - pkg_check_modules(VORBIS REQUIRED vorbis vorbisfile) - set(LUA_LIBRARIES ${LUAJIT_LIBRARIES}) - set(LUA_INCLUDE_DIR ${LUAJIT_INCLUDE_DIRS}) - find_package(PNG REQUIRED) - set(PNGLIB PNG::PNG) - set(VORBISLIB ${VORBIS_LDFLAGS}) -endif() - -set(LIBS "") - -if(UNIX) - find_package(glfw3 3.3 REQUIRED) - find_package(Threads REQUIRED) - set(LIBS ${LIBS} Threads::Threads) -endif() - if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -no-pie -lstdc++fs") endif() include_directories(${LUA_INCLUDE_DIR}) -target_link_libraries(${PROJECT_NAME} ${LIBS} glfw OpenGL::GL ${OPENAL_LIBRARY} GLEW::GLEW ZLIB::ZLIB ${VORBISLIB} ${PNGLIB} ${LUA_LIBRARIES} ${CMAKE_DL_LIBS}) +target_link_libraries(${PROJECT_NAME} VoxelEngineSrc ${CMAKE_DL_LIBS}) file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/res DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) +if (VOXELENGINE_BUILD_TESTS) + enable_testing() + add_subdirectory(test) +endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..6eee811d --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,67 @@ +project(VoxelEngineSrc) + +set(CMAKE_CXX_STANDARD 17) + +file(GLOB_RECURSE HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) +file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) +list(REMOVE_ITEM SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/voxel_engine.cpp) + +add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS}) + +find_package(OpenGL REQUIRED) +find_package(GLEW REQUIRED) +find_package(OpenAL REQUIRED) +find_package(ZLIB REQUIRED) +if (NOT APPLE) + find_package(EnTT REQUIRED) +endif() + +if (WIN32) + if(VOXELENGINE_BUILD_WINDOWS_VCPKG) + set(LUA_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/packages/luajit_x64-windows/lib/lua51.lib") + set(LUA_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/packages/luajit_x64-windows/include/luajit") + find_package(glfw3 REQUIRED) + find_package(spng REQUIRED) + find_package(glm REQUIRED) + find_package(vorbis REQUIRED) + set(PNGLIB spng::spng) + set(VORBISLIB Vorbis::vorbis Vorbis::vorbisfile) + else() + find_package(Lua REQUIRED) + set(PNGLIB spng) + set(VORBISLIB vorbis vorbisfile) # not tested + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/glfw) + endif() +elseif(APPLE) + find_package(PkgConfig) + pkg_check_modules(LUAJIT REQUIRED luajit) + pkg_check_modules(VORBIS REQUIRED vorbis vorbisfile) + set(LUA_INCLUDE_DIR "/opt/homebrew/include/luajit-2.1") + set(LUA_LIBRARIES "/opt/homebrew/lib/libluajit-5.1.a") + message(STATUS "LUA Libraries: ${LUA_LIBRARIES}") + message(STATUS "LUA Include Dir: ${LUA_INCLUDE_DIR}") + find_package(PNG REQUIRED) + set(PNGLIB PNG::PNG) + set(VORBISLIB ${VORBIS_LDFLAGS}) + message(STATUS "Vorbis Lib: ${VORBIS_LDFLAGS}") +else() + find_package(PkgConfig) + pkg_check_modules(LUAJIT REQUIRED luajit) + pkg_check_modules(VORBIS REQUIRED vorbis vorbisfile) + set(LUA_LIBRARIES ${LUAJIT_LIBRARIES}) + set(LUA_INCLUDE_DIR ${LUAJIT_INCLUDE_DIRS}) + find_package(PNG REQUIRED) + set(PNGLIB PNG::PNG) + set(VORBISLIB ${VORBIS_LDFLAGS}) +endif() + +set(LIBS "") + +if(UNIX) + find_package(glfw3 3.3 REQUIRED) + find_package(Threads REQUIRED) + set(LIBS ${LIBS} Threads::Threads) +endif() + +target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(${PROJECT_NAME} ${LIBS} glfw OpenGL::GL ${OPENAL_LIBRARY} GLEW::GLEW ZLIB::ZLIB ${VORBISLIB} ${PNGLIB} ${LUA_LIBRARIES} ${CMAKE_DL_LIBS}) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 00000000..cbe038a6 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,19 @@ +project(VoxelEngineTest) + +set(CMAKE_CXX_STANDARD 17) + +file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) + +find_package(GTest) + +add_executable(${PROJECT_NAME} ${SOURCES}) + +target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src) +target_link_libraries( + ${PROJECT_NAME} + VoxelEngineSrc + GTest::gtest_main +) + +include(GoogleTest) +gtest_discover_tests(${PROJECT_NAME}) From d021240a32e98218c278b04ef71ad2e7a3ad631e Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 Aug 2024 00:39:36 +0300 Subject: [PATCH 02/15] fix lua include directory --- CMakeLists.txt | 1 - src/CMakeLists.txt | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2cfe479e..dd298eac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -84,7 +84,6 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -no-pie -lstdc++fs") endif() -include_directories(${LUA_INCLUDE_DIR}) target_link_libraries(${PROJECT_NAME} VoxelEngineSrc ${CMAKE_DL_LIBS}) file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/res DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6eee811d..9ab271a0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -63,5 +63,6 @@ if(UNIX) set(LIBS ${LIBS} Threads::Threads) endif() +include_directories(${LUA_INCLUDE_DIR}) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(${PROJECT_NAME} ${LIBS} glfw OpenGL::GL ${OPENAL_LIBRARY} GLEW::GLEW ZLIB::ZLIB ${VORBISLIB} ${PNGLIB} ${LUA_LIBRARIES} ${CMAKE_DL_LIBS}) From 59afd4de274fe806e5270020cda03899d42f5390 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 Aug 2024 00:59:51 +0300 Subject: [PATCH 03/15] update src/CMakeLists.txt --- src/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9ab271a0..bbc9dffc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -8,6 +8,8 @@ list(REMOVE_ITEM SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/voxel_engine.cpp) add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS}) +option(VOXELENGINE_BUILD_WINDOWS_VCPKG ON) + find_package(OpenGL REQUIRED) find_package(GLEW REQUIRED) find_package(OpenAL REQUIRED) From 29b1299b875356533692901ed0308fd8ec1ceed4 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 Aug 2024 01:07:18 +0300 Subject: [PATCH 04/15] update src/CMakeLists.txt --- src/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bbc9dffc..1ab806b4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -34,6 +34,7 @@ if (WIN32) set(VORBISLIB vorbis vorbisfile) # not tested add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/glfw) endif() + message(${LUA_INCLUDE_DIR}) elseif(APPLE) find_package(PkgConfig) pkg_check_modules(LUAJIT REQUIRED luajit) From 659f1fedc84ed2de567708ce2af6a877b68d4aa9 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 Aug 2024 01:13:26 +0300 Subject: [PATCH 05/15] fix src/CMakeLists.txt for Windows --- src/CMakeLists.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1ab806b4..8cd21fbd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -20,8 +20,8 @@ endif() if (WIN32) if(VOXELENGINE_BUILD_WINDOWS_VCPKG) - set(LUA_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/packages/luajit_x64-windows/lib/lua51.lib") - set(LUA_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/packages/luajit_x64-windows/include/luajit") + set(LUA_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/../vcpkg/packages/luajit_x64-windows/lib/lua51.lib") + set(LUA_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../vcpkg/packages/luajit_x64-windows/include/luajit") find_package(glfw3 REQUIRED) find_package(spng REQUIRED) find_package(glm REQUIRED) @@ -34,7 +34,6 @@ if (WIN32) set(VORBISLIB vorbis vorbisfile) # not tested add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/glfw) endif() - message(${LUA_INCLUDE_DIR}) elseif(APPLE) find_package(PkgConfig) pkg_check_modules(LUAJIT REQUIRED luajit) From 39189e9bf38f9d57c179bb1244021ed17dea91ac Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 Aug 2024 01:33:49 +0300 Subject: [PATCH 06/15] update cmake.yml --- .github/workflows/cmake.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index dce8c120..e4e83b40 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -12,6 +12,10 @@ on: description: Should upload artifacts or not type: boolean default: false + run_tests: + description: Run CTest after project build + type: boolean + default: false jobs: build: @@ -35,14 +39,14 @@ jobs: # make && make install INSTALL_INC=/usr/include/lua run: | sudo apt-get update - sudo apt-get install libglfw3-dev libglfw3 libglew-dev libglm-dev libpng-dev libopenal-dev libluajit-5.1-dev libvorbis-dev + sudo apt-get install libglfw3-dev libglfw3 libglew-dev libglm-dev libpng-dev libopenal-dev libluajit-5.1-dev libvorbis-dev libgtest-dev # fix luajit paths sudo ln -s /usr/lib/x86_64-linux-gnu/libluajit-5.1.a /usr/lib/x86_64-linux-gnu/liblua-5.1.a sudo ln -s /usr/include/luajit-2.1 /usr/include/lua # install EnTT git clone https://github.com/skypjack/entt.git cd entt/build - cmake -DCMAKE_BUILD_TYPE=Release .. + cmake -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_TESTS=ON .. sudo make install cd ../.. @@ -59,7 +63,9 @@ jobs: run: | cmake --build ${{github.workspace}}/build --config ${{inputs.build_type}} mv ${{github.workspace}}/build/VoxelEngine VoxelEngine - + - name: Run tests + if: ${{ inputs.run_tests }} + run: ctest --test-dir ${{github.workspace}}/build - name: Upload artifacts if: ${{ inputs.upload_artifacts }} uses: actions/upload-artifact@v4 From 30571e100edc19357360884120d0c32cb54bfec0 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 Aug 2024 01:38:13 +0300 Subject: [PATCH 07/15] update build.yml --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 395906c8..6d6c9c9b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,3 +12,4 @@ jobs: uses: ./.github/workflows/cmake.yml with: build_type: Release + run_tests: true From 88f965ad11ffc39cd36c9ce4a2f154d7741c1836 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 Aug 2024 03:44:19 +0300 Subject: [PATCH 08/15] update macos.yml --- .github/workflows/macos.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index a477d3c0..2faf93ab 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -17,7 +17,7 @@ jobs: - name: Install dependencies from brew run: | - brew install glfw3 glew libpng openal-soft luajit libvorbis skypjack/entt/entt + brew install glfw3 glew libpng openal-soft luajit libvorbis skypjack/entt/entt googletest - name: Install specific version of GLM run: | @@ -25,7 +25,7 @@ jobs: brew install --formula glm.rb - name: Configure - run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_APPDIR=1 + run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_TESTS -DVOXELENGINE_BUILD_APPDIR=1 - name: Build run: cmake --build build -t install @@ -36,6 +36,9 @@ jobs: - name: Fix dylibs run: ./dev/fix_dylibs.sh VoxelEngine Release build + - name: Run tests + run: ctest --test-dir build + - name: Create DMG run: | mkdir VoxelEngineDmgContent From 4fa3041930cf28ead216fc80675315cbae9cc004 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 Aug 2024 03:46:34 +0300 Subject: [PATCH 09/15] update macos.yml --- .github/workflows/macos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 2faf93ab..1f9675ca 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -25,7 +25,7 @@ jobs: brew install --formula glm.rb - name: Configure - run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_TESTS -DVOXELENGINE_BUILD_APPDIR=1 + run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_TESTS=ON -DVOXELENGINE_BUILD_APPDIR=1 - name: Build run: cmake --build build -t install From eedc3b2afbbcdaad947c893d298a1c39105319c2 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 Aug 2024 03:48:51 +0300 Subject: [PATCH 10/15] add temporary test --- test/test.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 test/test.cpp diff --git a/test/test.cpp b/test/test.cpp new file mode 100644 index 00000000..d51612ce --- /dev/null +++ b/test/test.cpp @@ -0,0 +1,8 @@ +#include + +#include "voxels/Block.hpp" + +TEST(Test1, Test1) { + Block block("test"); + EXPECT_STREQ(block.name.c_str(), "test"); +} From a18efd597609e119bbf117a26b77c3825b4a39b4 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 Aug 2024 04:47:59 +0300 Subject: [PATCH 11/15] add test for coders/rle --- test/coders/rle.cpp | 48 +++++++++++++++++++++++++++++++++++++++++++++ test/test.cpp | 8 -------- 2 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 test/coders/rle.cpp delete mode 100644 test/test.cpp diff --git a/test/coders/rle.cpp b/test/coders/rle.cpp new file mode 100644 index 00000000..c93a034a --- /dev/null +++ b/test/coders/rle.cpp @@ -0,0 +1,48 @@ +#include + +#include "typedefs.hpp" +#include "coders/rle.hpp" + +TEST(RLE, EncodeDecode) { + const int initial_size = 50'000; + uint8_t initial[initial_size]; + uint8_t next = rand(); + for (int i = 0; i < initial_size; i++) { + initial[i] = next; + if (rand() % 13 == 0) { + next = rand(); + } + } + uint8_t encoded[initial_size * 2]; + auto encoded_size = rle::encode(initial, initial_size, encoded); + uint8_t decoded[initial_size * 2]; + auto decoded_size = rle::decode(encoded, encoded_size, decoded); + + EXPECT_EQ(decoded_size, initial_size); + + for (int i = 0; i < decoded_size; i++) { + EXPECT_EQ(decoded[i], initial[i]); + } +} + +TEST(ExtRLE, EncodeDecode) { + const int initial_size = 50'000; + uint8_t initial[initial_size]; + uint8_t next = rand(); + for (int i = 0; i < initial_size; i++) { + initial[i] = next; + if (rand() % 13 == 0) { + next = rand(); + } + } + uint8_t encoded[initial_size * 2]; + auto encoded_size = extrle::encode(initial, initial_size, encoded); + uint8_t decoded[initial_size * 2]; + auto decoded_size = extrle::decode(encoded, encoded_size, decoded); + + EXPECT_EQ(decoded_size, initial_size); + + for (int i = 0; i < decoded_size; i++) { + EXPECT_EQ(decoded[i], initial[i]); + } +} diff --git a/test/test.cpp b/test/test.cpp deleted file mode 100644 index d51612ce..00000000 --- a/test/test.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include - -#include "voxels/Block.hpp" - -TEST(Test1, Test1) { - Block block("test"); - EXPECT_STREQ(block.name.c_str(), "test"); -} From fd0efc05af9fd257f9d8ccb150cb10988ccbfb9d Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 Aug 2024 04:53:30 +0300 Subject: [PATCH 12/15] fix cmake.yml --- .github/workflows/cmake.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index e4e83b40..343d35e7 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -46,7 +46,7 @@ jobs: # install EnTT git clone https://github.com/skypjack/entt.git cd entt/build - cmake -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_TESTS=ON .. + cmake -DCMAKE_BUILD_TYPE=Release .. sudo make install cd ../.. @@ -56,7 +56,7 @@ jobs: # make. # # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{inputs.build_type}} + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{inputs.build_type}} -DVOXELENGINE_BUILD_TESTS=ON - name: Build # Build your program with the given configuration From 3cc99b9fc57dd277fc74a4ef4f4c8b69e2ade7ad Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 Aug 2024 05:39:16 +0300 Subject: [PATCH 13/15] add gtest to windows workflow --- .github/workflows/windows.yml | 7 ++++--- vcpkg.json | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 46fe7122..6af90077 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -32,16 +32,17 @@ jobs: run: | mkdir build cd build - cmake -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_WINDOWS_VCPKG=ON .. + cmake -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_WINDOWS_VCPKG=ON -DVOXELENGINE_BUILD_TESTS=ON .. Remove-Item -Path CMakeFiles -Recurse -Force - cmake -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_WINDOWS_VCPKG=ON .. + cmake -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_WINDOWS_VCPKG=ON -DVOXELENGINE_BUILD_TESTS=ON .. cmake --build . --config Release - name: Package for Windows run: | mkdir packaged cp -r build/* packaged/ working-directory: ${{ github.workspace }} - + - name: Run tests + run: ctest --test-dir build - uses: actions/upload-artifact@v2 with: name: Windows-Build diff --git a/vcpkg.json b/vcpkg.json index b53f9d40..05fe48e2 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -11,6 +11,7 @@ "zlib", "luajit", "libvorbis", - "entt" + "entt", + "gtest" ] } From 908a348672415d6b1c56deba09a9b10c50070e12 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 Aug 2024 15:37:35 +0300 Subject: [PATCH 14/15] add dev/cmake/BuildAppdir.cmake --- CMakeLists.txt | 16 +--------------- dev/cmake/BuildAppdir.cmake | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 15 deletions(-) create mode 100644 dev/cmake/BuildAppdir.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index dd298eac..66e44012 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,21 +16,7 @@ add_executable(${PROJECT_NAME} src/voxel_engine.cpp) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) if(VOXELENGINE_BUILD_APPDIR) - file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/bin) - file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/lib) - file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/share/icons/hicolor/256x256) - file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/share/applications) - file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/share/VoxelEngine) - file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/res DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/share/VoxelEngine) - file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/dev/VoxelEngine.png DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/share/icons/hicolor/256x256) - file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/dev/VoxelEngine.png DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/AppDir) - file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/dev/VoxelEngine.png DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/.dirIcon) - file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/dev/VoxelEngine.desktop DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/share/applications) - file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/dev/VoxelEngine.desktop DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/) - set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/lib) - set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/lib) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/bin) - install(TARGETS VoxelEngine DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/bin) + include(dev/cmake/BuildAppdir) endif() if(MSVC) diff --git a/dev/cmake/BuildAppdir.cmake b/dev/cmake/BuildAppdir.cmake new file mode 100644 index 00000000..245b2925 --- /dev/null +++ b/dev/cmake/BuildAppdir.cmake @@ -0,0 +1,15 @@ +file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/bin) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/lib) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/share/icons/hicolor/256x256) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/share/applications) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/share/VoxelEngine) +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/res DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/share/VoxelEngine) +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/dev/VoxelEngine.png DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/share/icons/hicolor/256x256) +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/dev/VoxelEngine.png DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/AppDir) +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/dev/VoxelEngine.png DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/.dirIcon) +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/dev/VoxelEngine.desktop DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/share/applications) +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/dev/VoxelEngine.desktop DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/lib) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/lib) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/bin) +install(TARGETS VoxelEngine DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/AppDir/usr/bin) From a89e025094816c6aec8f88b4dd6cd3d5afc787f7 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 Aug 2024 15:40:11 +0300 Subject: [PATCH 15/15] update CMakeLists.txt --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 66e44012..2ec82dca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,7 +16,7 @@ add_executable(${PROJECT_NAME} src/voxel_engine.cpp) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) if(VOXELENGINE_BUILD_APPDIR) - include(dev/cmake/BuildAppdir) + include(${CMAKE_CURRENT_SOURCE_DIR}/dev/cmake/BuildAppdir.cmake) endif() if(MSVC)