# SPDX-License-Identifier: MPL-2.0

# Download catch2 if configured to do so
if(AARE_FETCH_CATCH)
  FetchContent_Declare(
    Catch2
    GIT_SHALLOW TRUE
    GIT_REPOSITORY https://github.com/catchorg/Catch2.git
    GIT_TAG v3.5.3)
  FetchContent_MakeAvailable(Catch2)
else()
  # Otherwise look for installed catch2
  find_package(Catch2 3 REQUIRED)
endif()

list(APPEND CMAKE_MODULE_PATH ${Catch2_SOURCE_DIR}/extras)

add_executable(tests test.cpp)
target_link_libraries(tests PRIVATE Catch2::Catch2WithMain aare_core
                                    aare_compiler_flags)
# target_compile_options(tests PRIVATE -fno-omit-frame-pointer
# -fsanitize=address)
set_target_properties(
  tests PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} OUTPUT_NAME
                                                                run_tests)

include(CTest)
include(Catch)
catch_discover_tests(tests)

set(TestSources ${CMAKE_CURRENT_SOURCE_DIR}/test.cpp)
target_sources(tests PRIVATE ${TestSources})

# Work around to remove, this is not the way to do it =)
# target_link_libraries(tests PRIVATE aare_core aare_compiler_flags)

# configure a header to pass test file paths
get_filename_component(TEST_FILE_PATH ${PROJECT_SOURCE_DIR}/data ABSOLUTE)
configure_file(test_config.hpp.in test_config.hpp)
target_include_directories(tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
                                         ${CMAKE_CURRENT_BINARY_DIR})
