cmake_minimum_required(VERSION 3.5)
project(ap-cpp-tests)

enable_testing()

find_package(GTest REQUIRED)

if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
    add_definitions("/source-charset:utf-8")
    set(CMAKE_CXX_FLAGS_DEBUG "/MTd")
    set(CMAKE_CXX_FLAGS_RELEASE "/MT")
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
    # enable static analysis for gcc
    add_compile_options(-fanalyzer -Werror)
    # disable stuff that gets triggered by googletest
    add_compile_options(-Wno-analyzer-malloc-leak)
    # enable asan for gcc
    add_compile_options(-fsanitize=address)
    add_link_options(-fsanitize=address)
endif ()

add_executable(test_default)

target_include_directories(test_default
        PRIVATE
        ${GTEST_INCLUDE_DIRS}
)

target_link_libraries(test_default
        ${GTEST_BOTH_LIBRARIES}
)

add_test(
        NAME test_default
        COMMAND  test_default
)

set_property(
        TEST test_default
        PROPERTY ENVIRONMENT "ASAN_OPTIONS=allocator_may_return_null=1"
)

file(GLOB ITEMS *)
foreach(item ${ITEMS})
    if(IS_DIRECTORY ${item} AND EXISTS ${item}/CMakeLists.txt)
        message(${item})
        add_subdirectory(${item})
    endif()
endforeach()
