From ea23ed2e00c79539e5195c628c43d05fa1f9ee8b Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 15 Dec 2024 01:55:13 +0300 Subject: [PATCH 01/43] add cmake presets --- CMakePresets.json | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 CMakePresets.json diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 00000000..61c1ab30 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,17 @@ +{ + "version": 6, + "configurePresets": [ + { + "name": "windows-default", + "condition": { + "type": "equals", + "rhs": "${hostSystemName}", + "lhs": "Windows" + }, + "binaryDir": "${sourceDir}/build", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" + } + } + ] +} \ No newline at end of file From dccda9936482dd342ed1c91afd58dacf28ed3f24 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 15 Dec 2024 01:56:02 +0300 Subject: [PATCH 02/43] Fix usage vcpkg for windows and fix readme, remove vcpkg usage flag from cmake --- .gitignore | 4 ---- CMakeLists.txt | 41 ++++++++++------------------------------- README.md | 25 ++++++++++++++++++------- src/CMakeLists.txt | 33 +++++++++++++-------------------- 4 files changed, 41 insertions(+), 62 deletions(-) diff --git a/.gitignore b/.gitignore index a1ce6e33..9056cce5 100644 --- a/.gitignore +++ b/.gitignore @@ -36,10 +36,6 @@ Debug/voxel_engine AppDir appimage-build/ -# for vcpkg -/vcpkg/ -.gitmodules - # macOS folder attributes *.DS_Store diff --git a/CMakeLists.txt b/CMakeLists.txt index a2415ad9..c357b46a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,8 @@ -option(VOXELENGINE_BUILD_WINDOWS_VCPKG ON) -if(VOXELENGINE_BUILD_WINDOWS_VCPKG AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake") - set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE STRING "") -endif() - cmake_minimum_required(VERSION 3.15) project(VoxelEngine) -option(VOXELENGINE_BUILD_APPDIR OFF) -option(VOXELENGINE_BUILD_TESTS OFF) +option(VOXELENGINE_BUILD_APPDIR "" OFF) +option(VOXELENGINE_BUILD_TESTS "" OFF) set(CMAKE_CXX_STANDARD 17) @@ -44,30 +39,14 @@ else() endif() endif() -if(VOXELENGINE_BUILD_WINDOWS_VCPKG AND WIN32) - if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/.git") - find_package(Git QUIET) - if(GIT_FOUND) - message(STATUS "Adding vcpkg as a git submodule...") - execute_process(COMMAND ${GIT_EXECUTABLE} submodule add https://github.com/microsoft/vcpkg.git vcpkg WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) - else() - message(FATAL_ERROR "Git not found, cannot add vcpkg submodule.") - endif() - endif() - - if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/.git") - message(STATUS "Initializing and updating vcpkg submodule...") - execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) - execute_process(COMMAND ${CMAKE_COMMAND} -E chdir vcpkg ./bootstrap-vcpkg.bat WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) - endif() - - foreach(CONFIG_TYPE ${CMAKE_CONFIGURATION_TYPES}) - string(TOUPPER ${CONFIG_TYPE} CONFIG_TYPE_UPPER) - add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${CMAKE_SOURCE_DIR}/res ${CMAKE_BINARY_DIR}/${CONFIG_TYPE_UPPER}/res) - endforeach() -endif() +# if(VOXELENGINE_BUILD_WINDOWS_VCPKG AND WIN32) +# foreach(CONFIG_TYPE ${CMAKE_CONFIGURATION_TYPES}) +# string(TOUPPER ${CONFIG_TYPE} CONFIG_TYPE_UPPER) +# add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD +# COMMAND ${CMAKE_COMMAND} -E copy_directory +# ${CMAKE_SOURCE_DIR}/res ${CMAKE_BINARY_DIR}/${CONFIG_TYPE_UPPER}/res) +# endforeach() +# endif() if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -no-pie -lstdc++fs") diff --git a/README.md b/README.md index 418d372c..e7f67193 100644 --- a/README.md +++ b/README.md @@ -108,17 +108,28 @@ cmake --build . >[!NOTE] > Requirement: > -> vcpkg, CMake +> vcpkg, CMake, Git +If you want use vcpkg, install vcpkg from git to you system: +```PowerShell +cd C:/ +git clone https://github.com/microsoft/vcpkg.git +cd vcpkg +.\bootstrap-vcpkg.bat +``` +After installing vcpkg, setup env variable VCPKG_ROOT and add it to PATH: +```PowerShell +$env:VCPKG_ROOT = "C:\path\to\vcpkg" +$env:PATH = "$env:VCPKG_ROOT;$env:PATH" +``` +For troubleshooting you can read full [documentation](https://learn.microsoft.com/ru-ru/vcpkg/get_started/get-started?pivots=shell-powershell) for vcpkg -```sh +After installing vcpkg you can build project: +```PowerShell git clone --recursive https://github.com/MihailRis/VoxelEngine-Cpp.git cd VoxelEngine-Cpp mkdir build cd build -cmake -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_WINDOWS_VCPKG=ON .. -del CMakeCache.txt -rmdir /s /q CMakeFiles -cmake -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_WINDOWS_VCPKG=ON .. +cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build . --config Release ``` @@ -128,7 +139,7 @@ cmake --build . --config Release > [!WARNING] > If you have issues during the vcpkg integration, try navigate to ```vcpkg\downloads``` > and extract PowerShell-[version]-win-x86 to ```vcpkg\downloads\tools``` as powershell-core-[version]-windows. -> Then rerun ```cmake -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_WINDOWS_VCPKG=ON ..``` +> Then rerun ```cmake -DCMAKE_BUILD_TYPE=Release ..``` ## Build using Docker diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4e8ae348..1310bf28 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -8,8 +8,6 @@ list(REMOVE_ITEM SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/main.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) @@ -22,26 +20,21 @@ endif() set(LIBS "") -if (WIN32) - if(VOXELENGINE_BUILD_WINDOWS_VCPKG) - if (MSVC) - 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") - else() - find_package(PkgConfig) - pkg_check_modules(OpenAL REQUIRED IMPORTED_TARGET openal) - set(LIBS ${LIBS} luajit-5.1 wsock32 ws2_32 pthread PkgConfig::OpenAL -static-libstdc++) - message(${OPENAL_LIBRARY}) - endif() - find_package(glfw3 REQUIRED) - find_package(glm REQUIRED) - find_package(vorbis REQUIRED) - set(VORBISLIB Vorbis::vorbis Vorbis::vorbisfile) +if (CMAKE_SYSTEM_NAME STREQUAL "Windows") + if (MSVC) + set(LUA_LIBRARIES "${CMAKE_SOURCE_DIR}/vcpkg/packages/luajit_x64-windows/lib/lua51.lib") + set(LUA_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/vcpkg/packages/luajit_x64-windows/include/luajit") else() - find_package(Lua REQUIRED) - set(VORBISLIB vorbis vorbisfile) # not tested - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/glfw) + find_package(PkgConfig) + pkg_check_modules(OpenAL REQUIRED IMPORTED_TARGET openal) + set(LIBS ${LIBS} luajit-5.1 wsock32 ws2_32 pthread PkgConfig::OpenAL -static-libstdc++) + message(STATUS ${OPENAL_LIBRARY}) endif() + find_package(glfw3 REQUIRED) + find_package(glm REQUIRED) + find_package(vorbis REQUIRED) + set(VORBISLIB Vorbis::vorbis Vorbis::vorbisfile) + elseif(APPLE) find_package(PkgConfig) pkg_check_modules(LUAJIT REQUIRED luajit) From 7547152ab2c626adaffc024154af4ef418dbc8c0 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 15 Dec 2024 02:17:27 +0300 Subject: [PATCH 03/43] Fix resources linking --- CMakeLists.txt | 24 +++++++++++++++--------- src/CMakeLists.txt | 4 ++-- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c357b46a..0ec3fa62 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,14 +39,14 @@ else() endif() endif() -# if(VOXELENGINE_BUILD_WINDOWS_VCPKG AND WIN32) -# foreach(CONFIG_TYPE ${CMAKE_CONFIGURATION_TYPES}) -# string(TOUPPER ${CONFIG_TYPE} CONFIG_TYPE_UPPER) -# add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD -# COMMAND ${CMAKE_COMMAND} -E copy_directory -# ${CMAKE_SOURCE_DIR}/res ${CMAKE_BINARY_DIR}/${CONFIG_TYPE_UPPER}/res) -# endforeach() -# endif() +if(VOXELENGINE_BUILD_WINDOWS_VCPKG AND WIN32) + foreach(CONFIG_TYPE ${CMAKE_CONFIGURATION_TYPES}) + string(TOUPPER ${CONFIG_TYPE} CONFIG_TYPE_UPPER) + add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${CMAKE_SOURCE_DIR}/res ${CMAKE_BINARY_DIR}/${CONFIG_TYPE_UPPER}/res) + endforeach() +endif() if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -no-pie -lstdc++fs") @@ -58,7 +58,13 @@ endif() target_link_libraries(${PROJECT_NAME} VoxelEngineSrc ${CMAKE_DL_LIBS}) -file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/res DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) +add_custom_command( + TARGET ${PROJECT_NAME} + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different + ${CMAKE_CURRENT_SOURCE_DIR}/res + $/res + ) if (VOXELENGINE_BUILD_TESTS) enable_testing() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1310bf28..b4fba12c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -22,8 +22,8 @@ set(LIBS "") if (CMAKE_SYSTEM_NAME STREQUAL "Windows") if (MSVC) - set(LUA_LIBRARIES "${CMAKE_SOURCE_DIR}/vcpkg/packages/luajit_x64-windows/lib/lua51.lib") - set(LUA_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/vcpkg/packages/luajit_x64-windows/include/luajit") + set(LUA_LIBRARIES "$ENV{VCPKG_ROOT}/packages/luajit_x64-windows/lib/lua51.lib") + set(LUA_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_x64-windows/include/luajit") else() find_package(PkgConfig) pkg_check_modules(OpenAL REQUIRED IMPORTED_TARGET openal) From 326630ef1d14c01b300e1265c68d77aa591fd922 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 15 Dec 2024 02:29:59 +0300 Subject: [PATCH 04/43] Check config working --- .github/workflows/windows-clang.yml | 7 ++++--- CMakePresets.json | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 102557e8..b224d098 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -1,8 +1,8 @@ name: Windows Build (CLang) on: - push: - branches: [ "main", "release-**"] + # push: + # branches: [ "main", "release-**"] pull_request: branches: [ "main" ] @@ -43,11 +43,12 @@ jobs: - name: Configure project with CMake and vcpkg shell: msys2 {0} run: | + export VCPKG_ROOT=./vcpkg export VCPKG_DEFAULT_TRIPLET=x64-mingw-static export VCPKG_DEFAULT_HOST_TRIPLET=x64-mingw-static mkdir build cd build - cmake -G "MinGW Makefiles" -DVCPKG_TARGET_TRIPLET=x64-mingw-static -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_WINDOWS_VCPKG=ON .. + cmake --preset default-windows -G "MinGW Makefiles" -DVCPKG_TARGET_TRIPLET=x64-mingw-static -DCMAKE_BUILD_TYPE=Release .. cmake --build . --config Release - name: Package for Windows run: | diff --git a/CMakePresets.json b/CMakePresets.json index 61c1ab30..7c5a3d37 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -2,7 +2,7 @@ "version": 6, "configurePresets": [ { - "name": "windows-default", + "name": "default-windows", "condition": { "type": "equals", "rhs": "${hostSystemName}", From 9c53cd329600743267ae9a89d4b65730693cbc79 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 15 Dec 2024 02:32:02 +0300 Subject: [PATCH 05/43] undo --- .github/workflows/windows-clang.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index b224d098..89fc272d 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -1,8 +1,8 @@ name: Windows Build (CLang) on: - # push: - # branches: [ "main", "release-**"] + push: + branches: [ "main", "release-**"] pull_request: branches: [ "main" ] From dd09e3fb1ca134f613a4b0f385c75ed730a5ced4 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 15 Dec 2024 02:43:25 +0300 Subject: [PATCH 06/43] Cleanup --- CMakeLists.txt | 9 --------- 1 file changed, 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ec3fa62..7f38ff19 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,15 +39,6 @@ else() endif() endif() -if(VOXELENGINE_BUILD_WINDOWS_VCPKG AND WIN32) - foreach(CONFIG_TYPE ${CMAKE_CONFIGURATION_TYPES}) - string(TOUPPER ${CONFIG_TYPE} CONFIG_TYPE_UPPER) - add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${CMAKE_SOURCE_DIR}/res ${CMAKE_BINARY_DIR}/${CONFIG_TYPE_UPPER}/res) - endforeach() -endif() - if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -no-pie -lstdc++fs") endif() From 84887d26ecb1ef64b35714e5f30e40653dfb5afe Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Fri, 20 Dec 2024 17:16:31 +0300 Subject: [PATCH 07/43] Refactoring CmakePresets for windows github actions and refactoring README --- .github/workflows/windows-clang.yml | 36 +++++++++++------------------ .github/workflows/windows.yml | 19 +++++++-------- CMakeLists.txt | 1 + CMakePresets.json | 30 +++++++++++++++++++++++- README.md | 25 ++++++++------------ src/CMakeLists.txt | 12 +++------- 6 files changed, 64 insertions(+), 59 deletions(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 23544bf6..68ede0a9 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -27,37 +27,29 @@ jobs: with: msystem: clang64 install: >- - mingw-w64-clang-x86_64-toolchain - mingw-w64-clang-x86_64-cmake - mingw-w64-clang-x86_64-make - mingw-w64-clang-x86_64-luajit + mingw-w64-clang-x86_64-toolchain + mingw-w64-clang-x86_64-cmake + mingw-w64-clang-x86_64-ninja git - - name: Set up vcpkg - shell: msys2 {0} - run: | - git clone https://github.com/microsoft/vcpkg.git - cd vcpkg - ./bootstrap-vcpkg.bat - ./vcpkg integrate install - cd .. + - name: Bootstrap vcpkg + shell: msys2 + run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat + - name: Configure project with CMake and vcpkg shell: msys2 {0} + env: + VCPKG_ROOT: ${{ github.workspace }}/vcpkg run: | - export VCPKG_ROOT=./vcpkg - export VCPKG_DEFAULT_TRIPLET=x64-mingw-static - export VCPKG_DEFAULT_HOST_TRIPLET=x64-mingw-static - mkdir build - cd build - cmake --preset default-windows -G "MinGW Makefiles" -DVCPKG_TARGET_TRIPLET=x64-mingw-static -DCMAKE_BUILD_TYPE=Release .. - cmake --build . --config Release + cmake --preset default-ninja-clang-windows + cmake --build --preset default-ninja-clang-windows --config Release - name: Package for Windows run: | mkdir packaged mkdir packaged/res - cp build/VoxelEngine.exe packaged/ - cp build/vctest/vctest.exe packaged/ + cp build/Release/VoxelEngine.exe packaged/ + cp build/vctest/Release/vctest.exe packaged/ cp build/*.dll packaged/ - cp -r build/res/* packaged/res/ + cp -r build/Release/res/* packaged/res/ mv packaged/VoxelEngine.exe packaged/VoxelCore.exe - env: MSYS2_LOCATION: ${{ steps.msys2.outputs.msys2-location }} diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index d417197c..ca1f620d 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -21,19 +21,16 @@ jobs: with: submodules: 'true' - - name: Set up vcpkg - run: | - git clone https://github.com/microsoft/vcpkg.git - cd vcpkg - .\bootstrap-vcpkg.bat - .\vcpkg integrate install - cd .. + - name: Bootstrap vcpkg + shell: pwsh + run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat + - name: Configure and build project with CMake and vcpkg + env: + VCPKG_ROOT: ${{ github.workspace }}/vcpkg run: | - mkdir build - cd build - cmake -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_WINDOWS_VCPKG=ON -DVOXELENGINE_BUILD_TESTS=ON .. - cmake --build . --config Release + cmake --preset default-vs-msvc-windows + cmake --build --preset default-vs-msvc-windows --config Release - name: Run tests run: ctest --output-on-failure --test-dir build - name: Run engine tests diff --git a/CMakeLists.txt b/CMakeLists.txt index 7f38ff19..27373d0d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,6 +49,7 @@ endif() target_link_libraries(${PROJECT_NAME} VoxelEngineSrc ${CMAKE_DL_LIBS}) +# Deploy res to build dir add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD diff --git a/CMakePresets.json b/CMakePresets.json index 7c5a3d37..c0fb0919 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -2,16 +2,44 @@ "version": 6, "configurePresets": [ { - "name": "default-windows", + "name": "default-vs-msvc-windows", "condition": { "type": "equals", "rhs": "${hostSystemName}", "lhs": "Windows" }, + "generator": "Visual Studio 17 2022", "binaryDir": "${sourceDir}/build", "cacheVariables": { "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" } + }, + { + "name": "default-ninja-clang-windows", + "condition": { + "type": "equals", + "rhs": "${hostSystemName}", + "lhs": "Windows" + }, + "generator": "Ninja Multi-Config", + "binaryDir": "${sourceDir}/build", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", + "CMAKE_C_COMPILER": "clang", + "CMAKE_CXX_COMPILER": "clang" + } + } + ], + "buildPresets": [ + { + "name": "default-vs-msvc-windows", + "configurePreset": "default-vs-msvc-windows", + "configuration": "Debug" + }, + { + "name": "default-ninja-clang-windows", + "configurePreset": "default-ninja-clang-windows", + "configuration": "Debug" } ] } \ No newline at end of file diff --git a/README.md b/README.md index e7f67193..e31e1436 100644 --- a/README.md +++ b/README.md @@ -109,38 +109,31 @@ cmake --build . > Requirement: > > vcpkg, CMake, Git -If you want use vcpkg, install vcpkg from git to you system: +There are two options to use vcpkg: +1. If you have Visual Studio installed, most likely the **VCPKG_ROOT** environment variable will already exist in **Developer Command Prompt for VS** +2. If you want use **vcpkg**, install **vcpkg** from git to you system: ```PowerShell cd C:/ git clone https://github.com/microsoft/vcpkg.git cd vcpkg .\bootstrap-vcpkg.bat ``` -After installing vcpkg, setup env variable VCPKG_ROOT and add it to PATH: +After installing **vcpkg**, setup env variable **VCPKG_ROOT** and add it to **PATH**: ```PowerShell $env:VCPKG_ROOT = "C:\path\to\vcpkg" $env:PATH = "$env:VCPKG_ROOT;$env:PATH" ``` -For troubleshooting you can read full [documentation](https://learn.microsoft.com/ru-ru/vcpkg/get_started/get-started?pivots=shell-powershell) for vcpkg +>[!TIP] +>For troubleshooting you can read full [documentation](https://learn.microsoft.com/ru-ru/vcpkg/get_started/get-started?pivots=shell-powershell) for **vcpkg** -After installing vcpkg you can build project: +After installing **vcpkg** you can build project: ```PowerShell git clone --recursive https://github.com/MihailRis/VoxelEngine-Cpp.git cd VoxelEngine-Cpp -mkdir build -cd build -cmake -DCMAKE_BUILD_TYPE=Release .. -cmake --build . --config Release +cmake --preset default-vs-msvc-windows +cmake --build --preset default-vs-msvc-windows ``` -> [!TIP] -> You can use ```rm CMakeCache.txt``` and ```rm -rf CMakeFiles``` while using Git Bash - -> [!WARNING] -> If you have issues during the vcpkg integration, try navigate to ```vcpkg\downloads``` -> and extract PowerShell-[version]-win-x86 to ```vcpkg\downloads\tools``` as powershell-core-[version]-windows. -> Then rerun ```cmake -DCMAKE_BUILD_TYPE=Release ..``` - ## Build using Docker ### Step 0. Install docker on your system diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b4fba12c..60a8922e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -21,15 +21,9 @@ endif() set(LIBS "") if (CMAKE_SYSTEM_NAME STREQUAL "Windows") - if (MSVC) - set(LUA_LIBRARIES "$ENV{VCPKG_ROOT}/packages/luajit_x64-windows/lib/lua51.lib") - set(LUA_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_x64-windows/include/luajit") - else() - find_package(PkgConfig) - pkg_check_modules(OpenAL REQUIRED IMPORTED_TARGET openal) - set(LIBS ${LIBS} luajit-5.1 wsock32 ws2_32 pthread PkgConfig::OpenAL -static-libstdc++) - message(STATUS ${OPENAL_LIBRARY}) - endif() + set(LUA_LIBRARIES "$ENV{VCPKG_ROOT}/packages/luajit_x64-windows/lib/lua51.lib") + set(LUA_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_x64-windows/include/luajit") + find_package(glfw3 REQUIRED) find_package(glm REQUIRED) find_package(vorbis REQUIRED) From c8c5b45665d5536faee894812920146f80035d3a Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sat, 21 Dec 2024 00:46:31 +0300 Subject: [PATCH 08/43] Try fix builds on agents --- .github/workflows/windows-clang.yml | 7 +++++-- .github/workflows/windows.yml | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 68ede0a9..d50f0daf 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -32,8 +32,11 @@ jobs: mingw-w64-clang-x86_64-ninja git - name: Bootstrap vcpkg - shell: msys2 - run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat + shell: msys2 {0} + run: | + git clone https://github.com/microsoft/vcpkg.git + ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat + ${{ github.workspace }}/vcpkg/vcpkg integrate install - name: Configure project with CMake and vcpkg shell: msys2 {0} diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index ca1f620d..c2101655 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -23,7 +23,9 @@ jobs: - name: Bootstrap vcpkg shell: pwsh - run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat + run: | + git clone https://github.com/microsoft/vcpkg.git + ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat - name: Configure and build project with CMake and vcpkg env: From 6863282a1e9c5d5d1721469e1350b4eac1797577 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sat, 21 Dec 2024 01:26:27 +0300 Subject: [PATCH 09/43] Fix ctests --- .github/workflows/windows.yml | 2 +- CMakeLists.txt | 1 + CMakePresets.json | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index c2101655..81a5e44c 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -34,7 +34,7 @@ jobs: cmake --preset default-vs-msvc-windows cmake --build --preset default-vs-msvc-windows --config Release - name: Run tests - run: ctest --output-on-failure --test-dir build + run: ctest --preset default-vs-msvc-windows - name: Run engine tests run: | build/vctest/Release/vctest.exe -e build/Release/VoxelEngine.exe -d dev/tests -u build --output-always diff --git a/CMakeLists.txt b/CMakeLists.txt index 27373d0d..e3d7c6f8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,7 @@ option(VOXELENGINE_BUILD_APPDIR "" OFF) option(VOXELENGINE_BUILD_TESTS "" OFF) set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) add_subdirectory(src) add_executable(${PROJECT_NAME} src/main.cpp) diff --git a/CMakePresets.json b/CMakePresets.json index c0fb0919..223733a2 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -41,5 +41,21 @@ "configurePreset": "default-ninja-clang-windows", "configuration": "Debug" } + ], + "testPresets": [ + { + "name": "default-vs-msvc-windows", + "configurePreset": "default-vs-msvc-windows", + "output": { + "outputOnFailure": true + } + }, + { + "name": "default-ninja-clang-windows", + "configurePreset": "default-ninja-clang-windows", + "output": { + "outputOnFailure": true + } + } ] } \ No newline at end of file From 9fe3f9a0f64e04013ce63b8ce23f55e09f2b1e11 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sat, 21 Dec 2024 01:34:19 +0300 Subject: [PATCH 10/43] HACK: use dot for get path to vcpkg on MSYS2 --- .github/workflows/windows-clang.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index d50f0daf..0c197750 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -35,13 +35,13 @@ jobs: shell: msys2 {0} run: | git clone https://github.com/microsoft/vcpkg.git - ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat - ${{ github.workspace }}/vcpkg/vcpkg integrate install + ./vcpkg/bootstrap-vcpkg.bat + ./vcpkg/vcpkg integrate install - name: Configure project with CMake and vcpkg shell: msys2 {0} env: - VCPKG_ROOT: ${{ github.workspace }}/vcpkg + VCPKG_ROOT: ./vcpkg run: | cmake --preset default-ninja-clang-windows cmake --build --preset default-ninja-clang-windows --config Release From 6155d6f03006147ae76395cb5699741617cffc0f Mon Sep 17 00:00:00 2001 From: Ygrik2003 <59407669+Ygrik2003@users.noreply.github.com> Date: Sat, 21 Dec 2024 09:49:08 +0300 Subject: [PATCH 11/43] fix triplet for windows --- .github/workflows/windows-clang.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 0c197750..1c07aa40 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -43,7 +43,7 @@ jobs: env: VCPKG_ROOT: ./vcpkg run: | - cmake --preset default-ninja-clang-windows + cmake --preset default-ninja-clang-windows -DVCPKG_TARGET_TRIPLET=x64-mingw-static cmake --build --preset default-ninja-clang-windows --config Release - name: Package for Windows run: | From 8c4d0dcb4518f15e979dda0517b091f356b099a0 Mon Sep 17 00:00:00 2001 From: Ygrik2003 <59407669+Ygrik2003@users.noreply.github.com> Date: Sat, 21 Dec 2024 09:51:23 +0300 Subject: [PATCH 12/43] Fix ctests --- CMakePresets.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index 223733a2..35ba31f2 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -11,7 +11,8 @@ "generator": "Visual Studio 17 2022", "binaryDir": "${sourceDir}/build", "cacheVariables": { - "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" + "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", + "VOXELENGINE_BUILD_TESTS": "ON" } }, { @@ -26,7 +27,8 @@ "cacheVariables": { "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", "CMAKE_C_COMPILER": "clang", - "CMAKE_CXX_COMPILER": "clang" + "CMAKE_CXX_COMPILER": "clang", + "VOXELENGINE_BUILD_TESTS": "ON" } } ], From b16c77c3a43baae2ee666cab9fb0260786381a78 Mon Sep 17 00:00:00 2001 From: Ygrik2003 <59407669+Ygrik2003@users.noreply.github.com> Date: Sat, 21 Dec 2024 10:04:02 +0300 Subject: [PATCH 13/43] Fix vcpkg for msys2 again --- .github/workflows/windows-clang.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 1c07aa40..42a4752d 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -42,6 +42,8 @@ jobs: shell: msys2 {0} env: VCPKG_ROOT: ./vcpkg + VCPKG_DEFAULT_TRIPLET: x64-mingw-static + VCPKG_DEFAULT_HOST_TRIPLET: x64-mingw-static run: | cmake --preset default-ninja-clang-windows -DVCPKG_TARGET_TRIPLET=x64-mingw-static cmake --build --preset default-ninja-clang-windows --config Release From b81dab305b595a5c044b7ea3a460ddd12d245030 Mon Sep 17 00:00:00 2001 From: Ygrik2003 <59407669+Ygrik2003@users.noreply.github.com> Date: Sat, 21 Dec 2024 10:23:06 +0300 Subject: [PATCH 14/43] Fix luajit linking for clang --- .github/workflows/windows-clang.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 42a4752d..fc9daede 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -30,6 +30,7 @@ jobs: mingw-w64-clang-x86_64-toolchain mingw-w64-clang-x86_64-cmake mingw-w64-clang-x86_64-ninja + mingw-w64-clang-x86_64-luajit git - name: Bootstrap vcpkg shell: msys2 {0} From fdcc5b68bff8a12c184e022579328e6ec4a8a99f Mon Sep 17 00:00:00 2001 From: Ygrik2003 <59407669+Ygrik2003@users.noreply.github.com> Date: Sat, 21 Dec 2024 10:27:34 +0300 Subject: [PATCH 15/43] Remove relative path --- test/coders/vec3.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/coders/vec3.cpp b/test/coders/vec3.cpp index cb699bc3..d404e92b 100644 --- a/test/coders/vec3.cpp +++ b/test/coders/vec3.cpp @@ -5,7 +5,7 @@ TEST(VEC3, Decode) { auto file = std::filesystem::u8path( - "../res/models/block.vec3" + "res/models/block.vec3" ); auto bytes = files::read_bytes_buffer(file); auto model = vec3::load(file.u8string(), bytes); From 885438999d5363896217fbf0e8f48105ba3b1d32 Mon Sep 17 00:00:00 2001 From: Ygrik2003 <59407669+Ygrik2003@users.noreply.github.com> Date: Sat, 21 Dec 2024 10:31:02 +0300 Subject: [PATCH 16/43] Fix resources --- test/CMakeLists.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index cbe038a6..4db44b78 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -15,5 +15,17 @@ target_link_libraries( GTest::gtest_main ) +# HACK: copy res to test/ folder for fixing +# problem compatibility MultiConfig and non +# MultiConfig builds. Delete in future and +# use only root res folder +add_custom_command( + TARGET ${PROJECT_NAME} + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different + ${CMAKE_SOURCE_DIR}/res + $/res + ) + include(GoogleTest) gtest_discover_tests(${PROJECT_NAME}) From 2229cd538c20ac12418934b197b283060715f44a Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 22 Dec 2024 01:00:23 +0300 Subject: [PATCH 17/43] Fix ctest --- test/CMakeLists.txt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 4db44b78..0597d6e4 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -15,16 +15,15 @@ target_link_libraries( GTest::gtest_main ) -# HACK: copy res to test/ folder for fixing -# problem compatibility MultiConfig and non -# MultiConfig builds. Delete in future and -# use only root res folder +# HACK: copy res to test/ folder for fixing problem compatibility MultiConfig and non +# MultiConfig builds. Delete in future and use only root res folder +# Also this resolve problem with ctests, because it set cwd to CMAKE_CURRENT_BINARY_DIR add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_SOURCE_DIR}/res - $/res + ${CMAKE_CURRENT_BINARY_DIR}/res ) include(GoogleTest) From d0e8f43f14470f29233f0123f87b62b373e50580 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 22 Dec 2024 01:37:58 +0300 Subject: [PATCH 18/43] Fix lua linking --- src/CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 60a8922e..2cfd7544 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -21,8 +21,9 @@ endif() set(LIBS "") if (CMAKE_SYSTEM_NAME STREQUAL "Windows") - set(LUA_LIBRARIES "$ENV{VCPKG_ROOT}/packages/luajit_x64-windows/lib/lua51.lib") - set(LUA_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_x64-windows/include/luajit") + # Use directly linking to lib instead PkgConfig (why? idk) TODO: Do it with find_package/PkgConfig + set(LUA_LIBRARIES "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/lib/lua51.lib") + set(LUA_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/include/luajit") find_package(glfw3 REQUIRED) find_package(glm REQUIRED) From e34a7bb1174249cbc23c6229f7d5892d78a0af35 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 22 Dec 2024 02:00:43 +0300 Subject: [PATCH 19/43] Fik lib ext for clang --- src/CMakeLists.txt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2cfd7544..8face558 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -21,10 +21,13 @@ endif() set(LIBS "") if (CMAKE_SYSTEM_NAME STREQUAL "Windows") - # Use directly linking to lib instead PkgConfig (why? idk) TODO: Do it with find_package/PkgConfig - set(LUA_LIBRARIES "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/lib/lua51.lib") - set(LUA_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/include/luajit") - + if (MSVC) + # Use directly linking to lib instead PkgConfig (why? idk) TODO: Do it with find_package/PkgConfig + set(LUA_LIBRARIES "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/lib/lua51.$,lib,a>") + set(LUA_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/include/luajit") + else() + + endif() find_package(glfw3 REQUIRED) find_package(glm REQUIRED) find_package(vorbis REQUIRED) From b458df42de35befef88558de53810ae6ed55128f Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 22 Dec 2024 03:06:58 +0300 Subject: [PATCH 20/43] Fik lib luajit --- src/CMakeLists.txt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8face558..adec36af 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -21,13 +21,16 @@ endif() set(LIBS "") if (CMAKE_SYSTEM_NAME STREQUAL "Windows") + # Use directly linking to lib instead PkgConfig (because pkg-config dont install on windows as default) + # TODO: Do it with findLua + set(LUA_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/include/luajit") if (MSVC) - # Use directly linking to lib instead PkgConfig (why? idk) TODO: Do it with find_package/PkgConfig - set(LUA_LIBRARIES "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/lib/lua51.$,lib,a>") - set(LUA_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/include/luajit") + set(LUA_LIBRARIES "$ENV{VCPKG_ROOT}/packages/luajit_x64-windows/lib/lua51.lib") else() - + find_package(Lua REQUIRED) endif() + message(STATUS "LUA Libraries: ${LUA_LIBRARIES}") + message(STATUS "LUA Include Dir: ${LUA_INCLUDE_DIR}") find_package(glfw3 REQUIRED) find_package(glm REQUIRED) find_package(vorbis REQUIRED) From d6997640b644c10b03fe32f2c95dd84329b53420 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 22 Dec 2024 03:24:11 +0300 Subject: [PATCH 21/43] Refactoring and try move to pwsh for clang --- .github/workflows/windows-clang.yml | 55 ++++++++++------------------- src/CMakeLists.txt | 9 ++--- 2 files changed, 22 insertions(+), 42 deletions(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index fc9daede..249720d5 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -21,54 +21,37 @@ jobs: - uses: actions/checkout@v2 with: submodules: 'true' - - uses: msys2/setup-msys2@v2 - id: msys2 - name: Setup MSYS2 - with: - msystem: clang64 - install: >- - mingw-w64-clang-x86_64-toolchain - mingw-w64-clang-x86_64-cmake - mingw-w64-clang-x86_64-ninja - mingw-w64-clang-x86_64-luajit - git + + - name: Get latest CMake and Ninja + uses: lukka/get-cmake@latest + - name: Bootstrap vcpkg - shell: msys2 {0} + shell: pwsh run: | git clone https://github.com/microsoft/vcpkg.git - ./vcpkg/bootstrap-vcpkg.bat - ./vcpkg/vcpkg integrate install + ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat - name: Configure project with CMake and vcpkg - shell: msys2 {0} + shell: pwsh env: - VCPKG_ROOT: ./vcpkg - VCPKG_DEFAULT_TRIPLET: x64-mingw-static - VCPKG_DEFAULT_HOST_TRIPLET: x64-mingw-static + VCPKG_ROOT: ${{ github.workspace }}/vcpkg run: | - cmake --preset default-ninja-clang-windows -DVCPKG_TARGET_TRIPLET=x64-mingw-static + cmake --preset default-ninja-clang-windows cmake --build --preset default-ninja-clang-windows --config Release + - name: Run tests + run: ctest --preset default-vs-msvc-windows + - name: Run engine tests + run: | + build/vctest/Release/vctest.exe -e build/Release/VoxelEngine.exe -d dev/tests -u build --output-always + timeout-minutes: 1 - name: Package for Windows run: | mkdir packaged - mkdir packaged/res - cp build/Release/VoxelEngine.exe packaged/ - cp build/vctest/Release/vctest.exe packaged/ - cp build/*.dll packaged/ - cp -r build/Release/res/* packaged/res/ - mv packaged/VoxelEngine.exe packaged/VoxelCore.exe - - env: - MSYS2_LOCATION: ${{ steps.msys2.outputs.msys2-location }} - name: Add lua51.dll to the package - run: | - cp $env:MSYS2_LOCATION/clang64/bin/lua51.dll ${{ github.workspace }}/packaged/ + cp -r build/* packaged/ + cp C:/Windows/System32/msvcp140.dll packaged/Release/msvcp140.dll + mv packaged/Release/VoxelEngine.exe packaged/Release/VoxelCore.exe working-directory: ${{ github.workspace }} - uses: actions/upload-artifact@v4 with: name: Windows-Build - path: 'packaged/*' - - name: Run engine tests - shell: msys2 {0} - working-directory: ${{ github.workspace }} - run: | - packaged/vctest.exe -e packaged/VoxelCore.exe -d dev/tests -u build --output-always + path: 'build/Release/*' \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index adec36af..be5cff65 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -22,13 +22,10 @@ set(LIBS "") if (CMAKE_SYSTEM_NAME STREQUAL "Windows") # Use directly linking to lib instead PkgConfig (because pkg-config dont install on windows as default) - # TODO: Do it with findLua + # TODO: Do it with findLua. I think, also we can use pwsh for build clang on agents instead MSYS2. set(LUA_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/include/luajit") - if (MSVC) - set(LUA_LIBRARIES "$ENV{VCPKG_ROOT}/packages/luajit_x64-windows/lib/lua51.lib") - else() - find_package(Lua REQUIRED) - endif() + find_package(Lua REQUIRED) + message(STATUS "LUA Libraries: ${LUA_LIBRARIES}") message(STATUS "LUA Include Dir: ${LUA_INCLUDE_DIR}") find_package(glfw3 REQUIRED) From 5eab58fcc5c96aa9cc4198aba85cc378c7f1b8c0 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 22 Dec 2024 03:39:20 +0300 Subject: [PATCH 22/43] Fix comment --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index be5cff65..34f70806 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -22,7 +22,7 @@ set(LIBS "") if (CMAKE_SYSTEM_NAME STREQUAL "Windows") # Use directly linking to lib instead PkgConfig (because pkg-config dont install on windows as default) - # TODO: Do it with findLua. I think, also we can use pwsh for build clang on agents instead MSYS2. + # TODO: Do it with findLua. set(LUA_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/include/luajit") find_package(Lua REQUIRED) From d889b794958a4c8b8b19cb0ea03304628573c9c5 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 22 Dec 2024 03:41:11 +0300 Subject: [PATCH 23/43] Try remove maybe unused code --- .github/workflows/windows-clang.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 249720d5..f8068682 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -22,9 +22,6 @@ jobs: with: submodules: 'true' - - name: Get latest CMake and Ninja - uses: lukka/get-cmake@latest - - name: Bootstrap vcpkg shell: pwsh run: | From a14e7c1f71bf1eb0da0ef20133381c626e1a40e0 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 22 Dec 2024 03:43:33 +0300 Subject: [PATCH 24/43] Refactoring --- .github/workflows/windows-clang.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index f8068682..7fd47c39 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -28,8 +28,7 @@ jobs: git clone https://github.com/microsoft/vcpkg.git ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat - - name: Configure project with CMake and vcpkg - shell: pwsh + - name: Configure and build project with CMake and vcpkg env: VCPKG_ROOT: ${{ github.workspace }}/vcpkg run: | @@ -51,4 +50,4 @@ jobs: - uses: actions/upload-artifact@v4 with: name: Windows-Build - path: 'build/Release/*' \ No newline at end of file + path: 'build/Release/*' From fa1d450d6531b8fcbdf6d3613bdb86fe03f4f032 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 22 Dec 2024 03:50:59 +0300 Subject: [PATCH 25/43] Return latest ninja and cmake installing --- .github/workflows/windows-clang.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 7fd47c39..55b940e5 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -22,6 +22,9 @@ jobs: with: submodules: 'true' + - name: Install latest cmake and ninja + uses: lukka/get-cmake@latest + - name: Bootstrap vcpkg shell: pwsh run: | From 0e024513f1e0f930c36a7d11d79145616b2b7f51 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 22 Dec 2024 16:04:52 +0300 Subject: [PATCH 26/43] Review fixes: Fix path loading to artifactory --- .github/workflows/windows-clang.yml | 9 +++++---- .github/workflows/windows.yml | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 55b940e5..800dee75 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -46,11 +46,12 @@ jobs: - name: Package for Windows run: | mkdir packaged - cp -r build/* packaged/ - cp C:/Windows/System32/msvcp140.dll packaged/Release/msvcp140.dll - mv packaged/Release/VoxelEngine.exe packaged/Release/VoxelCore.exe + cp build/Release/* packaged/ + cp build/vctest/Release/vctest.exe packaged/ + cp C:/Windows/System32/msvcp140.dll packaged/msvcp140.dll + mv packaged/VoxelEngine.exe packaged/VoxelCore.exe working-directory: ${{ github.workspace }} - uses: actions/upload-artifact@v4 with: name: Windows-Build - path: 'build/Release/*' + path: 'packaged/*' diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 81a5e44c..e2bd4527 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -42,11 +42,12 @@ jobs: - name: Package for Windows run: | mkdir packaged - cp -r build/* packaged/ - cp C:/Windows/System32/msvcp140.dll packaged/Release/msvcp140.dll - mv packaged/Release/VoxelEngine.exe packaged/Release/VoxelCore.exe + cp build/Release/* packaged/ + cp build/vctest/Release/vctest.exe packaged/ + cp C:/Windows/System32/msvcp140.dll packaged/msvcp140.dll + mv packaged/VoxelEngine.exe packaged/VoxelCore.exe working-directory: ${{ github.workspace }} - uses: actions/upload-artifact@v4 with: name: Windows-Build - path: 'build/Release/*' + path: 'packaged/*' From a0a32cef516f1cf9bf7473a75b0bad61bd042edb Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 22 Dec 2024 16:15:08 +0300 Subject: [PATCH 27/43] Fix res folder deploy --- .github/workflows/windows-clang.yml | 2 +- .github/workflows/windows.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 800dee75..67c24d1c 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -46,7 +46,7 @@ jobs: - name: Package for Windows run: | mkdir packaged - cp build/Release/* packaged/ + cp -r build/Release/* packaged/ cp build/vctest/Release/vctest.exe packaged/ cp C:/Windows/System32/msvcp140.dll packaged/msvcp140.dll mv packaged/VoxelEngine.exe packaged/VoxelCore.exe diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index e2bd4527..cc95fe82 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -42,7 +42,7 @@ jobs: - name: Package for Windows run: | mkdir packaged - cp build/Release/* packaged/ + cp -r build/Release/* packaged/ cp build/vctest/Release/vctest.exe packaged/ cp C:/Windows/System32/msvcp140.dll packaged/msvcp140.dll mv packaged/VoxelEngine.exe packaged/VoxelCore.exe From ba7fd7c5bb6904a8f3c159e203f13107f872c98c Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Tue, 24 Dec 2024 13:22:46 +0300 Subject: [PATCH 28/43] Try do all libs as static for clang windows build --- CMakePresets.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakePresets.json b/CMakePresets.json index 35ba31f2..e572a4c8 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -24,8 +24,13 @@ }, "generator": "Ninja Multi-Config", "binaryDir": "${sourceDir}/build", + "environment": { + "VCPKG_DEFAULT_TRIPLET": "x64-mingw-static", + "VCPKG_DEFAULT_HOST_TRIPLET": "x64-mingw-static" + }, "cacheVariables": { "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", + "VCPKG_TARGET_TRIPLET": "x64-mingw-static", "CMAKE_C_COMPILER": "clang", "CMAKE_CXX_COMPILER": "clang", "VOXELENGINE_BUILD_TESTS": "ON" From 5dbfd5ba10e988fe6660473dfcbc6108e18614fa Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Tue, 24 Dec 2024 23:06:59 +0300 Subject: [PATCH 29/43] Try add static libs --- .github/workflows/windows-clang.yml | 1 + src/engine.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 67c24d1c..8817f924 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -30,6 +30,7 @@ jobs: run: | git clone https://github.com/microsoft/vcpkg.git ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat + ${{ github.workspace }}/vcpkg integrate install - name: Configure and build project with CMake and vcpkg env: diff --git a/src/engine.cpp b/src/engine.cpp index a3c63035..698ebc0e 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -1,6 +1,8 @@ #include "engine.hpp" +#ifndef GLEW_STATIC #define GLEW_STATIC +#endif #include "debug/Logger.hpp" #include "assets/AssetsLoader.hpp" From e7d36ef4f516fbfc4d50f7874edd40d02e102296 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Wed, 25 Dec 2024 02:43:59 +0300 Subject: [PATCH 30/43] Fix static compilation --- CMakeLists.txt | 7 +++++-- CMakePresets.json | 6 +++--- src/CMakeLists.txt | 6 +++--- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e3d7c6f8..9c543a0b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,10 @@ option(VOXELENGINE_BUILD_TESTS "" OFF) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +if (CMAKE_SYSTEM_NAME STREQUAL "Windows") + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") +endif() + add_subdirectory(src) add_executable(${PROJECT_NAME} src/main.cpp) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) @@ -20,7 +24,6 @@ if(MSVC) set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE) endif() if((CMAKE_BUILD_TYPE EQUAL "Release") OR (CMAKE_BUILD_TYPE EQUAL "RelWithDebInfo")) - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Release>") target_compile_options(${PROJECT_NAME} PRIVATE /W4 /MT /O2) else() target_compile_options(${PROJECT_NAME} PRIVATE /W4) @@ -36,7 +39,7 @@ else() target_compile_options(${PROJECT_NAME} PRIVATE -Og) endif() if (WIN32) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") endif() endif() diff --git a/CMakePresets.json b/CMakePresets.json index e572a4c8..1db1db01 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -25,12 +25,12 @@ "generator": "Ninja Multi-Config", "binaryDir": "${sourceDir}/build", "environment": { - "VCPKG_DEFAULT_TRIPLET": "x64-mingw-static", - "VCPKG_DEFAULT_HOST_TRIPLET": "x64-mingw-static" + "VCPKG_DEFAULT_TRIPLET": "x64-windows-static", + "VCPKG_DEFAULT_HOST_TRIPLET": "x64-windows-static" }, "cacheVariables": { "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_TARGET_TRIPLET": "x64-mingw-static", + "VCPKG_TARGET_TRIPLET": "x64-windows-static", "CMAKE_C_COMPILER": "clang", "CMAKE_CXX_COMPILER": "clang", "VOXELENGINE_BUILD_TESTS": "ON" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 34f70806..e6274289 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -6,11 +6,11 @@ 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}/main.cpp) -add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS}) +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) find_package(OpenGL REQUIRED) find_package(GLEW REQUIRED) -find_package(OpenAL REQUIRED) +find_package(OpenAL CONFIG REQUIRED) find_package(ZLIB REQUIRED) find_package(PNG REQUIRED) find_package(CURL REQUIRED) @@ -62,4 +62,4 @@ endif() include_directories(${LUA_INCLUDE_DIR}) include_directories(${CURL_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 PNG::PNG CURL::libcurl ${VORBISLIB} ${LUA_LIBRARIES} ${CMAKE_DL_LIBS}) +target_link_libraries(${PROJECT_NAME} ${LIBS} glfw OpenGL::GL OpenAL::OpenAL GLEW::GLEW ZLIB::ZLIB PNG::PNG CURL::libcurl ${VORBISLIB} ${LUA_LIBRARIES} ${CMAKE_DL_LIBS}) From 7792ecfe9e5fb70de0f1edb304ad3d0aba06446b Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Wed, 25 Dec 2024 03:03:01 +0300 Subject: [PATCH 31/43] Fix msvc build --- CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c543a0b..e73ed66c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,12 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) if (CMAKE_SYSTEM_NAME STREQUAL "Windows") - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") + # We use two types linking: for clang build is static (vcpkg triplet x64-windows-static) + # and for msvc build is dynamic linking (vcpkg triplet x64-windows) + # By default CMAKE_MSVC_RUNTIME_LIBRARY set by MultiThreaded$<$:Debug>DLL + if (VCPKG_TARGET_TRIPLET MATCHES "static") + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") + endif() endif() add_subdirectory(src) From 231f761569d7203e0417ff7e15849a489fa5d9d3 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Wed, 25 Dec 2024 03:05:02 +0300 Subject: [PATCH 32/43] Remove unused copy --- .github/workflows/windows-clang.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 8817f924..4308b0fe 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -49,7 +49,6 @@ jobs: mkdir packaged cp -r build/Release/* packaged/ cp build/vctest/Release/vctest.exe packaged/ - cp C:/Windows/System32/msvcp140.dll packaged/msvcp140.dll mv packaged/VoxelEngine.exe packaged/VoxelCore.exe working-directory: ${{ github.workspace }} - uses: actions/upload-artifact@v4 From 17460be026aa26439118ebabaa1c2e4db5b39c82 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Wed, 25 Dec 2024 03:07:14 +0300 Subject: [PATCH 33/43] Fix builds --- .github/workflows/windows-clang.yml | 2 -- src/CMakeLists.txt | 7 ++++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 4308b0fe..fc184151 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -30,8 +30,6 @@ jobs: run: | git clone https://github.com/microsoft/vcpkg.git ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat - ${{ github.workspace }}/vcpkg integrate install - - name: Configure and build project with CMake and vcpkg env: VCPKG_ROOT: ${{ github.workspace }}/vcpkg diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e6274289..ce50116c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -10,7 +10,12 @@ add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) find_package(OpenGL REQUIRED) find_package(GLEW REQUIRED) -find_package(OpenAL CONFIG REQUIRED) +if (CMAKE_SYSTEM_NAME STREQUAL "Windows") + # specific for vcpkg + find_package(OpenAL CONFIG REQUIRED) +else() + find_package(OpenAL REQUIRED) +endif() find_package(ZLIB REQUIRED) find_package(PNG REQUIRED) find_package(CURL REQUIRED) From 54c51b5e64d96d885e0a43c5be785a264d453f42 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Wed, 25 Dec 2024 17:20:18 +0300 Subject: [PATCH 34/43] Check msys2 perf --- .github/workflows/windows-clang.yml | 63 +++++++++++++++++++---------- 1 file changed, 42 insertions(+), 21 deletions(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index fc184151..3b202cbb 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -21,35 +21,56 @@ jobs: - uses: actions/checkout@v2 with: submodules: 'true' - - - name: Install latest cmake and ninja - uses: lukka/get-cmake@latest - - - name: Bootstrap vcpkg - shell: pwsh + - uses: msys2/setup-msys2@v2 + id: msys2 + name: Setup MSYS2 + with: + msystem: clang64 + install: >- + mingw-w64-clang-x86_64-toolchain + mingw-w64-clang-x86_64-cmake + mingw-w64-clang-x86_64-make + mingw-w64-clang-x86_64-luajit + git + - name: Set up vcpkg + shell: msys2 {0} run: | - git clone https://github.com/microsoft/vcpkg.git - ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat - - name: Configure and build project with CMake and vcpkg - env: - VCPKG_ROOT: ${{ github.workspace }}/vcpkg + git clone https://github.com/microsoft/vcpkg.git + cd vcpkg + ./bootstrap-vcpkg.bat + ./vcpkg integrate install + cd .. + - name: Configure project with CMake and vcpkg + shell: msys2 {0} run: | - cmake --preset default-ninja-clang-windows - cmake --build --preset default-ninja-clang-windows --config Release - - name: Run tests - run: ctest --preset default-vs-msvc-windows - - name: Run engine tests - run: | - build/vctest/Release/vctest.exe -e build/Release/VoxelEngine.exe -d dev/tests -u build --output-always - timeout-minutes: 1 + export VCPKG_DEFAULT_TRIPLET=x64-mingw-static + export VCPKG_DEFAULT_HOST_TRIPLET=x64-mingw-static + export VCPKG_DEFAULT_HOST_TRIPLET=./vcpkg + mkdir build + cd build + cmake -G "MinGW Makefiles" -DVCPKG_TARGET_TRIPLET=x64-mingw-static -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_WINDOWS_VCPKG=ON .. + cmake --build . --config Release - name: Package for Windows run: | mkdir packaged - cp -r build/Release/* packaged/ - cp build/vctest/Release/vctest.exe packaged/ + mkdir packaged/res + cp build/VoxelEngine.exe packaged/ + cp build/vctest/vctest.exe packaged/ + cp build/*.dll packaged/ + cp -r build/res/* packaged/res/ mv packaged/VoxelEngine.exe packaged/VoxelCore.exe + - env: + MSYS2_LOCATION: ${{ steps.msys2.outputs.msys2-location }} + name: Add lua51.dll to the package + run: | + cp $env:MSYS2_LOCATION/clang64/bin/lua51.dll ${{ github.workspace }}/packaged/ working-directory: ${{ github.workspace }} - uses: actions/upload-artifact@v4 with: name: Windows-Build path: 'packaged/*' + - name: Run engine tests + shell: msys2 {0} + working-directory: ${{ github.workspace }} + run: | + packaged/vctest.exe -e packaged/VoxelCore.exe -d dev/tests -u build --output-always \ No newline at end of file From b902b2db3b3fb2da5c895dfd8794cf104da5322e Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Wed, 25 Dec 2024 17:23:45 +0300 Subject: [PATCH 35/43] Fix problem --- .github/workflows/windows-clang.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 3b202cbb..9ab79b2a 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -48,7 +48,7 @@ jobs: export VCPKG_DEFAULT_HOST_TRIPLET=./vcpkg mkdir build cd build - cmake -G "MinGW Makefiles" -DVCPKG_TARGET_TRIPLET=x64-mingw-static -DCMAKE_BUILD_TYPE=Release -DVOXELENGINE_BUILD_WINDOWS_VCPKG=ON .. + cmake -G "MinGW Makefiles" -DVCPKG_TARGET_TRIPLET=x64-mingw-static -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake .. cmake --build . --config Release - name: Package for Windows run: | From 3b65c3947269ba9a41ebe05367d61a64dc71bde6 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Wed, 25 Dec 2024 17:26:58 +0300 Subject: [PATCH 36/43] Fix typo --- .github/workflows/windows-clang.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 9ab79b2a..13e53d48 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -45,7 +45,7 @@ jobs: run: | export VCPKG_DEFAULT_TRIPLET=x64-mingw-static export VCPKG_DEFAULT_HOST_TRIPLET=x64-mingw-static - export VCPKG_DEFAULT_HOST_TRIPLET=./vcpkg + export VCPKG_ROOT=./vcpkg mkdir build cd build cmake -G "MinGW Makefiles" -DVCPKG_TARGET_TRIPLET=x64-mingw-static -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake .. From c6a89720a406413b586291b2a13398b68e90aaf2 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Wed, 25 Dec 2024 17:30:23 +0300 Subject: [PATCH 37/43] idk --- .github/workflows/windows-clang.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 13e53d48..2c761592 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -48,7 +48,7 @@ jobs: export VCPKG_ROOT=./vcpkg mkdir build cd build - cmake -G "MinGW Makefiles" -DVCPKG_TARGET_TRIPLET=x64-mingw-static -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake .. + cmake -G "MinGW Makefiles" -DVCPKG_TARGET_TRIPLET=x64-mingw-static -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake .. cmake --build . --config Release - name: Package for Windows run: | From 398206653b3b88d8df9d5ee3984f752183832384 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Wed, 25 Dec 2024 17:47:18 +0300 Subject: [PATCH 38/43] Try Fix --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ce50116c..ec5b1ad8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -29,7 +29,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows") # Use directly linking to lib instead PkgConfig (because pkg-config dont install on windows as default) # TODO: Do it with findLua. set(LUA_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/include/luajit") - find_package(Lua REQUIRED) + find_package(Lua51 REQUIRED) message(STATUS "LUA Libraries: ${LUA_LIBRARIES}") message(STATUS "LUA Include Dir: ${LUA_INCLUDE_DIR}") From c18c210fe0b75969c8ce640e8b96f8303f6dd65c Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Wed, 25 Dec 2024 18:21:46 +0300 Subject: [PATCH 39/43] Return old behavior --- CMakeLists.txt | 1 + src/CMakeLists.txt | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e73ed66c..33721bc1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,7 @@ option(VOXELENGINE_BUILD_TESTS "" OFF) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) if (CMAKE_SYSTEM_NAME STREQUAL "Windows") # We use two types linking: for clang build is static (vcpkg triplet x64-windows-static) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ec5b1ad8..45a0965f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -28,11 +28,12 @@ set(LIBS "") if (CMAKE_SYSTEM_NAME STREQUAL "Windows") # Use directly linking to lib instead PkgConfig (because pkg-config dont install on windows as default) # TODO: Do it with findLua. - set(LUA_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/include/luajit") - find_package(Lua51 REQUIRED) - - message(STATUS "LUA Libraries: ${LUA_LIBRARIES}") - message(STATUS "LUA Include Dir: ${LUA_INCLUDE_DIR}") + if (MSVC) + set(LUA_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/include/luajit") + find_package(Lua REQUIRED) + else() + set(LIBS ${LIBS} luajit-5.1) + endif() find_package(glfw3 REQUIRED) find_package(glm REQUIRED) find_package(vorbis REQUIRED) From 59933943b8b699adfdec6589f9706a7e5a2f6187 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Wed, 25 Dec 2024 18:23:02 +0300 Subject: [PATCH 40/43] Add comment --- src/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 45a0965f..6e9ee5bc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -32,6 +32,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows") set(LUA_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/include/luajit") find_package(Lua REQUIRED) else() + # Used for mingw-clang cross compiling from msys2 set(LIBS ${LIBS} luajit-5.1) endif() find_package(glfw3 REQUIRED) From f8225eff1ea0a7542aa65c408c4959c718304489 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Wed, 25 Dec 2024 18:50:49 +0300 Subject: [PATCH 41/43] Try refactor --- .github/workflows/windows-clang.yml | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 2c761592..08d550ed 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -29,7 +29,7 @@ jobs: install: >- mingw-w64-clang-x86_64-toolchain mingw-w64-clang-x86_64-cmake - mingw-w64-clang-x86_64-make + mingw-w64-clang-x86_64-ninja mingw-w64-clang-x86_64-luajit git - name: Set up vcpkg @@ -42,22 +42,17 @@ jobs: cd .. - name: Configure project with CMake and vcpkg shell: msys2 {0} + env: + VCPKG_ROOT: ${{ github.workspace }}/vcpkg run: | - export VCPKG_DEFAULT_TRIPLET=x64-mingw-static - export VCPKG_DEFAULT_HOST_TRIPLET=x64-mingw-static export VCPKG_ROOT=./vcpkg - mkdir build - cd build - cmake -G "MinGW Makefiles" -DVCPKG_TARGET_TRIPLET=x64-mingw-static -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake .. + cmake --preset=default-ninja-clang-windows cmake --build . --config Release - name: Package for Windows run: | mkdir packaged - mkdir packaged/res - cp build/VoxelEngine.exe packaged/ - cp build/vctest/vctest.exe packaged/ - cp build/*.dll packaged/ - cp -r build/res/* packaged/res/ + cp -r build/Release/ packaged/ + cp build/vctest/Release/vctest.exe packaged/ mv packaged/VoxelEngine.exe packaged/VoxelCore.exe - env: MSYS2_LOCATION: ${{ steps.msys2.outputs.msys2-location }} From ffd74735494f4579e2248152c6c3454026c19a5a Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Wed, 25 Dec 2024 18:55:47 +0300 Subject: [PATCH 42/43] Revert "Try refactor" This reverts commit f8225eff1ea0a7542aa65c408c4959c718304489. --- .github/workflows/windows-clang.yml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/.github/workflows/windows-clang.yml b/.github/workflows/windows-clang.yml index 08d550ed..2c761592 100644 --- a/.github/workflows/windows-clang.yml +++ b/.github/workflows/windows-clang.yml @@ -29,7 +29,7 @@ jobs: install: >- mingw-w64-clang-x86_64-toolchain mingw-w64-clang-x86_64-cmake - mingw-w64-clang-x86_64-ninja + mingw-w64-clang-x86_64-make mingw-w64-clang-x86_64-luajit git - name: Set up vcpkg @@ -42,17 +42,22 @@ jobs: cd .. - name: Configure project with CMake and vcpkg shell: msys2 {0} - env: - VCPKG_ROOT: ${{ github.workspace }}/vcpkg run: | + export VCPKG_DEFAULT_TRIPLET=x64-mingw-static + export VCPKG_DEFAULT_HOST_TRIPLET=x64-mingw-static export VCPKG_ROOT=./vcpkg - cmake --preset=default-ninja-clang-windows + mkdir build + cd build + cmake -G "MinGW Makefiles" -DVCPKG_TARGET_TRIPLET=x64-mingw-static -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake .. cmake --build . --config Release - name: Package for Windows run: | mkdir packaged - cp -r build/Release/ packaged/ - cp build/vctest/Release/vctest.exe packaged/ + mkdir packaged/res + cp build/VoxelEngine.exe packaged/ + cp build/vctest/vctest.exe packaged/ + cp build/*.dll packaged/ + cp -r build/res/* packaged/res/ mv packaged/VoxelEngine.exe packaged/VoxelCore.exe - env: MSYS2_LOCATION: ${{ steps.msys2.outputs.msys2-location }} From 6fec970bce9fb6cd21ef763832ebc2c33d76b155 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Wed, 25 Dec 2024 19:21:50 +0300 Subject: [PATCH 43/43] Delete clang preset besause need cmake compatibility with msys2 --- CMakePresets.json | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index 1db1db01..d4c6aa47 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -14,27 +14,6 @@ "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", "VOXELENGINE_BUILD_TESTS": "ON" } - }, - { - "name": "default-ninja-clang-windows", - "condition": { - "type": "equals", - "rhs": "${hostSystemName}", - "lhs": "Windows" - }, - "generator": "Ninja Multi-Config", - "binaryDir": "${sourceDir}/build", - "environment": { - "VCPKG_DEFAULT_TRIPLET": "x64-windows-static", - "VCPKG_DEFAULT_HOST_TRIPLET": "x64-windows-static" - }, - "cacheVariables": { - "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_TARGET_TRIPLET": "x64-windows-static", - "CMAKE_C_COMPILER": "clang", - "CMAKE_CXX_COMPILER": "clang", - "VOXELENGINE_BUILD_TESTS": "ON" - } } ], "buildPresets": [ @@ -42,11 +21,6 @@ "name": "default-vs-msvc-windows", "configurePreset": "default-vs-msvc-windows", "configuration": "Debug" - }, - { - "name": "default-ninja-clang-windows", - "configurePreset": "default-ninja-clang-windows", - "configuration": "Debug" } ], "testPresets": [ @@ -56,13 +30,6 @@ "output": { "outputOnFailure": true } - }, - { - "name": "default-ninja-clang-windows", - "configurePreset": "default-ninja-clang-windows", - "output": { - "outputOnFailure": true - } } ] } \ No newline at end of file