summaryrefslogtreecommitdiff
path: root/dead.CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'dead.CMakeLists.txt')
-rw-r--r--dead.CMakeLists.txt251
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)