cmake_minimum_required(VERSION 3.7.2)

if ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
    message(FATAL_ERROR "In-source builds are disabled.
    Please create a subfolder called build and use `cmake ..` inside it.
    NOTE: cmake will now create CMakeCache.txt and CMakeFiles/*.
          You must delete them, or cmake will refuse to work.")
endif()
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "bin" "doc" "CMakeFiles" "lib" "include")


set(CMAKE_C_COMPILER "clang")
set(CMAKE_CXX_COMPILER "clang++")

project(Demo)
set(CMAKE_CXX_STANDARD 14)


# enable clang_tidy
set(CMAKE_CXX_CLANG_TIDY clang-tidy;-header-filter=.;)

file(GLOB_RECURSE SOURCES src/*.cpp)
file(GLOB_RECURSE HEADERS src/*.hpp)
file(GLOB_RECURSE TESTS test/*.cpp)

set(LIB_PATH "${CMAKE_SOURCE_DIR}/../library")

include_directories(${LIB_PATH}/include)
add_executable(Demo ${SOURCES} ${HEADERS} main/main.cpp)

target_link_libraries(Demo ${LIB_PATH}/lib/liblibrary.a)


enable_testing()
find_package(Catch2 REQUIRED)
add_executable(UnitTests ${SOURCES} ${HEADERS} ${TESTS})
target_link_libraries(UnitTests ${LIB_PATH}/lib/liblibrary.a)
target_link_libraries(UnitTests Catch2::Catch2)

include(CTest)
include(Catch)
catch_discover_tests(UnitTests)
