# CMakeLists.txt
#
# Author: Vojtěch Dvořák


# ----------------------------- Fetching dependencies -------------------------

FetchContent_Declare(
    googletest
    GIT_REPOSITORY https://github.com/google/googletest.git
    GIT_TAG b796f7d44681514f58a683a3a71ff17c94edb0c1
    GIT_PROGRESS TRUE
    FIND_PACKAGE_ARGS NAMES GTest
)

# For Windows: Prevent overriding the parent project's compiler/linker settings
# (see googletest doc https://google.github.io/googletest/quickstart-cmake.html)
if(CMAKE_SYSTEM_NAME EQUAL "Windows")
    set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
endif()
FetchContent_MakeAvailable(googletest)


file(COPY "${CMAKE_LIST_DIR}/${MODULE_DIR}" DESTINATION ${CMAKE_CURRENT_BINARY_DIR})

# ------------------------------ Building unit tests ---------------------------

add_executable(test_yaramod_yarasource yaramod_yarasource.cpp)
target_link_libraries(test_yaramod_yarasource PRIVATE gtest_main ${LIBRARY_NAME})


add_executable(test_global_symbol_management global_symbol_management.cpp)
target_link_libraries(test_global_symbol_management PRIVATE gtest_main ${LIBRARY_NAME})


add_executable(test_local_symbol_management local_symbol_management.cpp)
target_link_libraries(test_local_symbol_management PRIVATE gtest_main ${LIBRARY_NAME})


add_executable(test_condition_management condition_management.cpp)
target_link_libraries(test_condition_management PRIVATE gtest_main ${LIBRARY_NAME})


# ------------------------------ Running unit tests ---------------------------

add_custom_target(unit_tests 
    COMMAND ./test_yaramod_yarasource &&
        ./test_global_symbol_management &&
        ./test_local_symbol_management &&
        ./test_condition_management
)
add_dependencies(unit_tests 
    test_yaramod_yarasource
    test_global_symbol_management
    test_local_symbol_management
    test_condition_management
)