#compile with warnings
if(WIN32)
    add_compile_options(/W4 /WX)
    set_property(PROPERTY
        MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
else()
    add_compile_options(-Wall -Wextra -pedantic -Werror)
endif()

#enable asan in debug
if(WIN32)
    add_compile_options("$<$<CONFIG:DEBUG>:-fsanitize=address>")
else()
    add_compile_options("$<$<CONFIG:DEBUG>:-fsanitize=address>")
    add_link_options("$<$<CONFIG:DEBUG>:-fsanitize=address>")
endif()

#enable ubsan in debug
if(NOT WIN32)
    add_compile_options("$<$<CONFIG:DEBUG>:-fsanitize=undefined>"
                        "$<$<CONFIG:DEBUG>:-fno-omit-frame-pointer>")
    add_link_options("$<$<CONFIG:DEBUG>:-fsanitize=undefined>")
endif()