diff options
Diffstat (limited to 'dead.CMakeLists.txt')
| -rw-r--r-- | dead.CMakeLists.txt | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/dead.CMakeLists.txt b/dead.CMakeLists.txt new file mode 100644 index 0000000..ec40e9f --- /dev/null +++ b/dead.CMakeLists.txt @@ -0,0 +1,251 @@ + +cmake_minimum_required(VERSION 3.27) + +cmake_policy(SET CMP0135 NEW) + +project(pke VERSION 0.0) +set(PKE_VERSION ${PROJECT_VERSION}) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED True) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -pthread") + +set(PKE_SOURCE_FILES + src/vendor/pk.h + src/vendor/pkh_include.cpp + src/arg-handler.hpp + src/arg-handler.cpp + src/array.hpp + src/bucketed-array.hpp + src/camera.hpp + src/camera.cpp + src/components.hpp + src/ecs.hpp + src/ecs.cpp + src/entities.hpp + src/entities.cpp + src/event.hpp + src/event.cpp + src/game.hpp + src/game.cpp + src/game-settings.hpp + src/game-settings.cpp + src/game-type-defs.hpp + src/helpers.hpp + src/helpers.cpp + src/level-types.hpp + src/level-types.cpp + src/level.hpp + src/level.cpp + src/math-helpers.hpp + src/math-helpers.cpp + src/dynamic-array.hpp + src/dynamic-array.cpp + src/asset-manager.hpp + src/asset-manager.cpp + src/physics.hpp + src/physics.cpp + src/player-input.hpp + src/player-input.cpp + src/plugins.hpp + src/plugins.cpp + src/plugin-types.hpp + src/project.hpp + src/project.cpp + src/project-settings.hpp + src/project-settings.cpp + src/static/cube.hpp + src/static/cube.cpp + src/static/missing-texture.hpp + src/thread_pool.hpp + src/thread_pool.cpp + src/vendor/cgltf-include.hpp + src/vendor/cgltf-include.cpp + src/vendor/glm_include.hpp + src/vendor/stb_image_include.hpp + src/vendor/stb_image_include.cpp + src/vendor/tinyfiledialogs/tinyfiledialogs.h + src/vendor/tinyfiledialogs/tinyfiledialogs.c + src/window.hpp + src/window.cpp + src/window-types.hpp +) + +include(FetchContent) +FetchContent_Declare( + imguidocked + URL https://github.com/ocornut/imgui/archive/762ec445e63a95c1545b18b28d528f8ce38a9afd.zip +) + +FetchContent_GetProperties(imguidocked) +if(NOT imguidocked_POPULATED) + FetchContent_Populate(imguidocked) +endif() + +set(ImGuiDockedFiles + ${imguidocked_SOURCE_DIR}/imconfig.h + ${imguidocked_SOURCE_DIR}/imgui.cpp + ${imguidocked_SOURCE_DIR}/imgui.h + ${imguidocked_SOURCE_DIR}/imgui_demo.cpp + ${imguidocked_SOURCE_DIR}/imgui_draw.cpp + ${imguidocked_SOURCE_DIR}/imgui_internal.h + ${imguidocked_SOURCE_DIR}/imgui_tables.cpp + ${imguidocked_SOURCE_DIR}/imgui_widgets.cpp + ${imguidocked_SOURCE_DIR}/imstb_rectpack.h + ${imguidocked_SOURCE_DIR}/imstb_textedit.h + ${imguidocked_SOURCE_DIR}/imstb_truetype.h + ${imguidocked_SOURCE_DIR}/backends/imgui_impl_glfw.cpp + ${imguidocked_SOURCE_DIR}/backends/imgui_impl_glfw.h + ${imguidocked_SOURCE_DIR}/backends/imgui_impl_vulkan.cpp + ${imguidocked_SOURCE_DIR}/backends/imgui_impl_vulkan.h + ${imguidocked_SOURCE_DIR}/misc/cpp/imgui_stdlib.cpp + ${imguidocked_SOURCE_DIR}/misc/cpp/imgui_stdlib.h +) +add_library(imguidocked ${ImGuiDockedFiles}) +target_include_directories(imguidocked PUBLIC ${imguidocked_SOURCE_DIR}) +install( + TARGETS imguidocked + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) + +find_package(Vulkan REQUIRED) +if (Vulkan_FOUND) + message(STATUS "Vulkan found: " ${Vulkan_INCLUDE_DIR}) +endif (Vulkan_FOUND) + +add_library(pke + ${PKE_SOURCE_FILES} +) + +if (Vulkan_FOUND) + target_link_libraries(pke PUBLIC ${Vulkan_LIBRARIES}) + target_include_directories(pke PUBLIC ${Vulkan_INCLUDE_DIR}) +endif (Vulkan_FOUND) + +set(SHADER_OUTPUT_DIR ${PROJECT_BINARY_DIR}/assets/shaders) +set(SHADER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/assets/shaders) +file(MAKE_DIRECTORY ${SHADER_OUTPUT_DIR}) +set(SHADERS + ${SHADER_DIR}/present.vert + ${SHADER_DIR}/present.frag + ${SHADER_DIR}/vert.vert + ${SHADER_DIR}/texture.frag +) + +foreach(SHADER IN LISTS SHADERS) + get_filename_component(FILENAME ${SHADER} NAME) + message(STATUS "Before Shader Compile: ${FILENAME}") + add_custom_command(OUTPUT ${SHADER_OUTPUT_DIR}/${FILENAME}.spv + COMMAND ${Vulkan_GLSLC_EXECUTABLE} ${SHADER} -o ${SHADER_OUTPUT_DIR}/${FILENAME}.spv + DEPENDS ${SHADER} + COMMENT "Compiling ${FILENAME}") + list(APPEND SPV_SHADERS ${SHADER_OUTPUT_DIR}/${FILENAME}.spv) +endforeach() + +add_custom_target(shaders ALL DEPENDS ${SPV_SHADERS}) + +find_package(PkgConfig REQUIRED) +pkg_search_module(GLFW REQUIRED glfw3) +if (GLFW_FOUND) + message(STATUS "GLFW found: " ${GLFW_INCLUDE_DIR}) + target_link_libraries(pke PUBLIC ${GLFW_LIBRARIES}) + target_include_directories(pke PUBLIC ${GLFW_INCLUDE_DIR}) +endif (GLFW_FOUND) + +find_package(glm REQUIRED) +if (glm_FOUND) + message(STATUS "glm found: " ${glm_INCLUDE_DIR}) + target_link_libraries(pke PUBLIC ${glm_LIBRARIES}) + target_include_directories(pke PUBLIC ${glm_INCLUDE_DIR}) +endif (glm_FOUND) + +FetchContent_Declare(stb URL https://github.com/nothings/stb/archive/5736b15f7ea0ffb08dd38af21067c314d6a3aae9.zip) +FetchContent_MakeAvailable(stb) +target_include_directories(pke PUBLIC "${PROJECT_BINARY_DIR}/_deps/stb-src") + +FetchContent_Declare(cgltf URL https://github.com/jkuhlmann/cgltf/archive/271614ce5fa8bed6daf3bc824d12a3a652ebdb15.zip) +FetchContent_MakeAvailable(cgltf) +target_include_directories(pke PUBLIC "${PROJECT_BINARY_DIR}/_deps/cgltf-src") + +FetchContent_Declare(bullet + GIT_REPOSITORY https://github.com/bulletphysics/bullet3.git + GIT_TAG 3.25 + OVERRIDE_FIND_PACKAGE +) +FetchContent_GetProperties(bullet) +if(NOT bullet_POPULATED) + set(BUILD_BULLET2_DEMOS 0 CACHE STRING "" FORCE) + set(BUILD_CPU_DEMOS 0 CACHE STRING "" FORCE) + set(BUILD_UNIT_TESTS 0 CACHE STRING "" FORCE) + set(BUILD_OPENGL3_DEMOS 0 CACHE STRING "" FORCE) + set(BUILD_EXTRAS 0 CACHE STRING "" FORCE) + set(INSTALL_EXTRA_LIBS 0 CACHE STRING "" FORCE) + set(INSTALL_LIBS 1 CACHE STRING "" FORCE) + set(INSTALL_CMAKE_FILES 0 CACHE STRING "" FORCE) + set(POSITION_INDEPENDENT_CODE O CACHE BOOL "" FORCE) + FetchContent_Populate(bullet) + add_subdirectory(${bullet_SOURCE_DIR} ${bullet_BINARY_DIR}) + target_include_directories(pke PUBLIC BEFORE ${bullet_SOURCE_DIR}/src) + target_link_libraries(pke PUBLIC BulletDynamics BulletCollision LinearMath Bullet3Common) + message(STATUS "Bullet vars: " ${bullet_SOURCE_DIR} " - " ${bullet_BINARY_DIR}) +endif() +find_package(Bullet REQUIRED + PATHS ${bullet_BINARY_DIR} +) + +target_include_directories(pke PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/src") + +target_link_libraries(pke PUBLIC imguidocked) + +add_dependencies(pke shaders) + +# install libs +set(LIB_DESTINATION "lib") +set(INCLUDE_INSTALL_DIR "include/pke") +set(PKGCONFIG_INSTALL_PREFIX "lib/pkgconfig") +IF(NOT MSVC) + configure_file("src/cmake/pke.pc.cmake" ${CMAKE_CURRENT_BINARY_DIR}/pke.pc @ONLY) + install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/pke.pc + DESTINATION + ${PKGCONFIG_INSTALL_PREFIX} + ) +ENDIF() +install( + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/ + DESTINATION ${INCLUDE_INSTALL_DIR} + FILES_MATCHING + PATTERN "*.h" + PATTERN "*.hpp" + PATTERN "cmake" EXCLUDE +) +install( + TARGETS pke + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) + +# install cmake files +set (PKE_CONFIG_CMAKE_PATH lib/cmake/pke ) +# list (APPEND PKE_DEFINITIONS "SOME_VAL") +list(APPEND PKE_DEFINITIONS "") +list(APPEND PKE_LIBRARIES pke) +set(PKE_USE_FILE src/cmake/Usepke.cmake) +configure_file(src/cmake/pkeConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/pkeConfig.cmake + @ONLY ESCAPE_QUOTES +) +install(FILES + src/cmake/Usepke.cmake + ${CMAKE_CURRENT_BINARY_DIR}/pkeConfig.cmake + DESTINATION ${PKE_CONFIG_CMAKE_PATH} +) + +add_subdirectory(editor) +add_subdirectory(runtime) +add_subdirectory(test) +add_subdirectory(example) |
