# Set global include dirs set(DAW_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/include ${CMAKE_CURRENT_LIST_DIR}/rendering/include ${CMAKE_BINARY_DIR}/include ) add_custom_command( OUTPUT ${GLAD_HEADER} COMMAND glad --api gl:core=4.6 --out-path ${CMAKE_BINARY_DIR} --reproducible c --header-only --mx ) # DAW Engine compilation spec add_library(${PROJECT_NAME} # User facing API api/daw.h # Types and (internal) interfaces include/daw/platform.h include/daw/types.h # Utility algorithms & datastructures include/daw/utils.h include/daw/utils/list.h btree.c include/daw/utils/btree.h fov.c include/daw/utils/fov.h hashmap.c include/daw/utils/hashmap.h misc.c stack.c include/daw/utils/stack.h # Core functionality daw.c include/daw/daw.h dltools.c include/daw/dltools.h logging.c include/daw/logging.h memory.c include/daw/memory.h state.c include/daw/state.h # Peripheral IO input.c include/daw/input.h include/daw/keycodes.h include/daw/scancodes.h # The rendering & presentation mess gl.c platform_glfw.c include/daw/platform_glfw.h rendering.c include/daw/rendering.h textures.c include/daw/texture.h window.c include/daw/window.h # Resource handling model.c include/daw/model.h resources.c include/daw/resources.h # Autogenerated header ${GLAD_HEADER} ) set_property(SOURCE src/window.c APPEND PROPERTY OBJECT_DEPENDS ${GLAD_HEADER}) set_property(SOURCE src/rendering.c APPEND PROPERTY OBJECT_DEPENDS ${GLAD_HEADER}) set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE C C_STANDARD 99 ) target_include_directories(${PROJECT_NAME} PUBLIC include ${CMAKE_BINARY_DIR}/include ) target_link_libraries(${PROJECT_NAME} glfw OpenGL::GL assimp cglm $<$>:m> $<$:dl> $<$>,$>:ubsan> ) target_compile_features(${PROJECT_NAME} PRIVATE c_std_99) 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> )