First commit

This commit is contained in:
2026-10-12 11:48:07 +03:00
parent 24cb6059ac
commit db366ae097
1096 changed files with 464101 additions and 43 deletions
+79
View File
@@ -0,0 +1,79 @@
cmake_minimum_required(VERSION 3.20)
project(cyrusengine_imperial VERSION 0.1.0 LANGUAGES C CXX)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
option(CYRUSENGINE_BUILD_PLAYGROUND "Build the playground executable" ON)
find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)
find_package(Threads REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GLFW3 REQUIRED IMPORTED_TARGET glfw3)
file(GLOB_RECURSE CYRUSENGINE_SOURCES CONFIGURE_DEPENDS
"${PROJECT_SOURCE_DIR}/src/graphics/*.cpp"
"${PROJECT_SOURCE_DIR}/src/ecs/*.cpp"
"${PROJECT_SOURCE_DIR}/src/physics/*.cpp"
"${PROJECT_SOURCE_DIR}/src/3rdparty/Box2D/*.cpp"
)
list(APPEND CYRUSENGINE_SOURCES
"${PROJECT_SOURCE_DIR}/src/Base.cpp"
"${PROJECT_SOURCE_DIR}/src/CyrusEngine.cpp"
"${PROJECT_SOURCE_DIR}/src/3rdparty/freetype2/freetype_amalgam.c"
)
file(GLOB STB_SOURCES CONFIGURE_DEPENDS
"${PROJECT_SOURCE_DIR}/src/3rdparty/stb_collection/*.c"
)
list(APPEND CYRUSENGINE_SOURCES ${STB_SOURCES})
add_library(cyrusengine STATIC ${CYRUSENGINE_SOURCES})
add_library(CyrusEngine::CyrusEngine ALIAS cyrusengine)
target_compile_features(cyrusengine PUBLIC cxx_std_23)
target_include_directories(cyrusengine PUBLIC
"${PROJECT_SOURCE_DIR}/src"
"${PROJECT_SOURCE_DIR}/src/3rdparty"
"${PROJECT_SOURCE_DIR}/src/3rdparty/freetype2/include"
"${PROJECT_SOURCE_DIR}/src/3rdparty/entt"
"${PROJECT_SOURCE_DIR}/src/3rdparty/glm"
)
target_link_libraries(cyrusengine PUBLIC
OpenGL::GL
GLEW::GLEW
PkgConfig::GLFW3
)
if(CYRUSENGINE_BUILD_PLAYGROUND)
pkg_check_modules(SNDFILE REQUIRED IMPORTED_TARGET sndfile)
pkg_check_modules(VORBISFILE REQUIRED IMPORTED_TARGET vorbisfile)
pkg_check_modules(PORTAUDIO REQUIRED IMPORTED_TARGET portaudio-2.0)
file(GLOB PLAYGROUND_SOURCES CONFIGURE_DEPENDS
"${PROJECT_SOURCE_DIR}/examples/playground/*.cpp"
)
add_executable(playground ${PLAYGROUND_SOURCES})
target_compile_features(playground PRIVATE cxx_std_23)
target_include_directories(playground PRIVATE
"${PROJECT_SOURCE_DIR}/examples"
"${PROJECT_SOURCE_DIR}/src"
"${PROJECT_SOURCE_DIR}/src/3rdparty"
"${PROJECT_SOURCE_DIR}/src/3rdparty/freetype2/include"
"${PROJECT_SOURCE_DIR}/src/3rdparty/entt"
"${PROJECT_SOURCE_DIR}/src/3rdparty/glm"
"${PROJECT_SOURCE_DIR}/src/3rdparty/microui"
)
target_link_libraries(playground PRIVATE
CyrusEngine::CyrusEngine
PkgConfig::SNDFILE
PkgConfig::VORBISFILE
PkgConfig::PORTAUDIO
Threads::Threads
${CMAKE_DL_LIBS}
)
endif()