diff options
author | Danny Holman <dholman@gymli.org> | 2025-08-04 12:32:39 -0500 |
---|---|---|
committer | Danny Holman <dholman@gymli.org> | 2025-08-04 12:32:39 -0500 |
commit | 7a268ae92d44a9f27f4874e1e50413ee33b86dd3 (patch) | |
tree | 47574f2a1d6c6d469e19627aacbcae03ae615dee /CMake/SubmoduleDefines.cmake | |
parent | render: vulkan: add check for null pointer for debug (diff) | |
download | rune-engine-7a268ae92d44a9f27f4874e1e50413ee33b86dd3.tar.gz rune-engine-7a268ae92d44a9f27f4874e1e50413ee33b86dd3.tar.zst rune-engine-7a268ae92d44a9f27f4874e1e50413ee33b86dd3.zip |
root: restructuring
Restructure the root of the project such that the engine is siloed from
the rest of the toolchain. Add two new subdirectories that contain an
editor and an offline profiling data analyzer.
Signed-off-by: Danny Holman <dholman@gymli.org>
Diffstat (limited to 'CMake/SubmoduleDefines.cmake')
-rw-r--r-- | CMake/SubmoduleDefines.cmake | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/CMake/SubmoduleDefines.cmake b/CMake/SubmoduleDefines.cmake new file mode 100644 index 0000000..edd006b --- /dev/null +++ b/CMake/SubmoduleDefines.cmake @@ -0,0 +1,60 @@ +list(APPEND SUBMODULE_INCLUDE_DIRS ${SUBMODULE_HEADER_DIR}) + +include(EnableCFLAG) +if (MSVC) + enable_c_compiler_flag_if_supported("/GS") +else () + enable_c_compiler_flag_if_supported("-fstack-protector-all") +endif () + +if (WIN32) + find_package(dlfcn-win32 REQUIRED) + find_package(DBGHELP REQUIRED) + list(APPEND SUBMODULE_LINK_LIBS dlfcn-win32::dl ${DBGHELP_LIBRARY}) +endif() + +if (DEFINED SUBMODULE_LIBRARY) + add_definitions(-DRAPI_EXPORT) + set(SUBMODULE_BINARY ${SUBMODULE_LIBRARY}) + add_library(${SUBMODULE_BINARY} SHARED ${SUBMODULE_FILES}) + set_target_properties(${SUBMODULE_BINARY} PROPERTIES VERSION ${PROJECT_VERSION}) + set_target_properties(${SUBMODULE_BINARY} PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR}) + target_include_directories(${SUBMODULE_BINARY} PUBLIC ${SUBMODULE_INCLUDE_DIRS}) + target_link_libraries(${SUBMODULE_BINARY} PUBLIC ${SUBMODULE_LINK_LIBS}) +elseif (DEFINED SUBMODULE_EXECUTABLE) + set(SUBMODULE_BINARY ${SUBMODULE_EXECUTABLE}) + add_executable(${SUBMODULE_BINARY} ${SUBMODULE_FILES}) + set_target_properties(${SUBMODULE_BINARY} PROPERTIES VERSION ${PROJECT_VERSION}) + target_include_directories(${SUBMODULE_BINARY} PRIVATE ${SUBMODULE_INCLUDE_DIRS}) + target_link_libraries(${SUBMODULE_BINARY} PRIVATE ${SUBMODULE_LINK_LIBS}) +else () + message(FATAL_ERROR "Unknown submodule type defined by submodule ${CMAKE_CURRENT_SOURCE_DIR}") +endif () + +target_compile_definitions(${SUBMODULE_BINARY} PUBLIC RUNE_VER="${CMAKE_PROJECT_VERSION}") +target_compile_definitions(${SUBMODULE_BINARY} PUBLIC RUNE_VER_MAJOR="${CMAKE_PROJECT_VERSION_MAJOR}") +target_compile_definitions(${SUBMODULE_BINARY} PUBLIC RUNE_VER_MINOR="${CMAKE_PROJECT_VERSION_MINOR}") +target_compile_definitions(${SUBMODULE_BINARY} PUBLIC RUNE_VER_PATCH="${CMAKE_PROJECT_VERSION_PATCH}") + +option(ENABLE_PROFILING "Enable profiling") +if (ENABLE_PROFILING) + target_compile_definitions(${SUBMODULE_BINARY} PUBLIC RUNE_PROFILING) +endif () + +include(GNUInstallDirs) +install(TARGETS ${SUBMODULE_BINARY} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + COMPONENT ${SUBMODULE_BINARY}_Runtime + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT ${SUBMODULE_BINARY}_Runtime + NAMELINK_COMPONENT ${SUBMODULE_BINARY}_Development + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT ${SUBMODULE_BINARY}_Development +) + +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + ${SUBMODULE_BINARY}Version.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion +) |