project(${CATCH2_LIBRARY})

set(CATCH2_MAJOR_VERSION 3 PARENT_SCOPE)
set(CATCH2_MINOR_VERSION 7 PARENT_SCOPE)
set(CATCH2_PATCH_VERSION 1 PARENT_SCOPE)

vp_include_directories(${CMAKE_CURRENT_SOURCE_DIR})

file(GLOB lib_srcs *.cpp)
file(GLOB lib_hdrs *.hpp)

add_library(${CATCH2_LIBRARY} STATIC ${lib_srcs} ${lib_hdrs})
target_compile_definitions(${CATCH2_LIBRARY} PRIVATE "CATCH_AMALGAMATED_CUSTOM_MAIN")

if(UNIX)
  if(CMAKE_COMPILER_IS_GNUCXX OR CV_ICC)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
  endif()
endif()

if((VISP_CXX_STANDARD EQUAL VISP_CXX_STANDARD_11) AND CXX11_CXX_FLAGS)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX11_CXX_FLAGS}")
elseif((VISP_CXX_STANDARD EQUAL VISP_CXX_STANDARD_14) AND CXX14_CXX_FLAGS)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX14_CXX_FLAGS}")
elseif((VISP_CXX_STANDARD EQUAL VISP_CXX_STANDARD_17) AND CXX17_CXX_FLAGS)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX17_CXX_FLAGS}")
endif()

if(ENABLE_SOLUTION_FOLDERS)
  set_target_properties(${CATCH2_LIBRARY} PROPERTIES FOLDER "3rdparty")
endif()

set_target_properties(${CATCH2_LIBRARY}
  PROPERTIES OUTPUT_NAME ${CATCH2_LIBRARY}
  DEBUG_POSTFIX "${VISP_DEBUG_POSTFIX}"
  COMPILE_PDB_NAME ${CATCH2_LIBRARY}
  COMPILE_PDB_NAME_DEBUG "${CATCH2_LIBRARY}${VISP_DEBUG_POSTFIX}"
  ARCHIVE_OUTPUT_DIRECTORY ${VISP_3P_LIBRARY_OUTPUT_PATH}
  )

if(NOT BUILD_SHARED_LIBS)
  vp_install_target(${CATCH2_LIBRARY} EXPORT VISPModules ARCHIVE DESTINATION ${VISP_3P_LIB_INSTALL_PATH} COMPONENT dev)
endif()
