From 5aeb4975d9bbbcea73eab014e92c69efa3da2f9f Mon Sep 17 00:00:00 2001 From: 0scar Date: Tue, 6 Feb 2024 13:00:42 +0100 Subject: Move engine compilation target to src dir --- src/CMakeLists.txt | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b474ff7..ff4e112 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,3 +1,4 @@ +# Set global include dirs set(DAW_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/core/include ${CMAKE_CURRENT_LIST_DIR}/ctrl/include @@ -8,9 +9,63 @@ set(DAW_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/include ) +# Add the engine modules add_subdirectory(core) add_subdirectory(ctrl) add_subdirectory(rendering) add_subdirectory(resources) add_subdirectory(ui) add_subdirectory(utils) + +# DAW Engine compilation spec +add_library(${PROJECT_NAME} + ${GLAD_HEADER} + ) + +set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE C) + +target_include_directories(${PROJECT_NAME} PUBLIC + include + ${CMAKE_BINARY_DIR}/include + ${ENGINE_INCLUDE}) + +target_link_libraries(${PROJECT_NAME} + glfw + OpenGL::GL + cglm + daw_core + daw_rendering + daw_ctrl + daw_resources + daw_ui + daw_utils + $<$>:m> + $<$:dl> + $<$>,$>:ubsan> +) + +target_compile_features(${PROJECT_NAME} PRIVATE c_std_99) +set_property(TARGET ${PROJECT_NAME} PROPERTY POSITION_INDEPENDENT_CODE ON) + +if(DAW_BUILD_ASAN AND NOT C_COMPILER_ID STREQUAL MSVC) + add_compile_options(-fsanitize=address -fsanitize=leak -fsanitize-address-use-after-scope) + add_link_options(-fsanitize=address -fsanitize=leak -fsanitize-address-use-after-scope) +endif() + +if(DAW_BUILD_UBSAN AND NOT C_COMPILER_ID STREQUAL MSVC) + add_compile_options(-fsanitize=undefined -fsanitize-undefined-trap-on-error -fno-sanitize-recover) + add_link_options(-fsanitize=undefined -fsanitize-undefined-trap-on-error -fno-sanitize-recover) +endif() + +target_compile_options(${PROJECT_NAME} PUBLIC + $<$>:-Wall -Wextra> + # Dont be pedantic when using hot reloading. + $<$>,$>>:-pedantic> + $<$:/W4> + # Debug related flags. sorry windows, you're just not that important. +) + +target_compile_definitions(${PROJECT_NAME} PUBLIC + $<$:_DEBUG> + $<$:DAW_BUILD_HOTRELOAD> +) -- cgit v1.3