cmake_minimum_required (VERSION 3.30)
#include_directories("${PROJECT_SOURCE_DIR}/include")
#include_directories("${PROJECT_SOURCE_DIR}/lib/")
#include_directories("${PROJECT_SOURCE_DIR}/")
include_directories("include/")
include_directories("lib/")
include (CheckSymbolExists)
include (CheckFunctionExists)
include(CheckIPOSupported)
include(CheckCCompilerFlag)


set(CMAKE_OPTIMIZE_DEPENDENCIES TRUE)
find_package(Doxygen)
option(BUILD_DOCUMENTATION "Create and install the HTML based API documentation (requires Doxygen)" ${DOXYGEN_FOUND})
if(BUILD_DOCUMENTATION)
    if(NOT DOXYGEN_FOUND)
         message(FATAL_ERROR "Doxygen is needed to build the documentation.")
    endif()

    #doxygen_add_docs(targetName
    #${CMAKE_CURRENT_SOURCE_DIR}
    #)

    message("Doxygen build started.")

    add_custom_target(
  doc ALL
  #COMMAND $<$<CONFIG:Release>:${DOXYGEN_EXECUTABLE} ${doxyfile_in}>
  COMMAND $<$<CONFIG:Release>:${DOXYGEN_EXECUTABLE}>
  #WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc
  COMMENT "Generating API documentation with Doxygen"
  VERBATIM
)

    #    install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION     share/doc)
endif()

set(Boost_USE_STATIC_LIB ON)
set(Boost_VERBOSE ON)
find_package(Boost  COMPONENTS system filesystem REQUIRED)
message(status "** Boost Include: ${Boost_INCLUDE_DIRS}")
message(status "** Boost Library dir: ${Boost_LIBRARY_DIRS}")
message(status "** Boost Libraries: ${Boost_LIBRARIES}")
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})

find_package(OpenSSL REQUIRED)
message("OpenSSL include dir: ${OPENSSL_INCLUDE_DIR}")
message("OpenSSL libraries: ${OPENSSL_LIBRARIES}")
include_directories(${OPENSSL_INCLUDE_DIR})
link_directories(${OPENSSL_LIBRARIES})

#find_package(Poco COMPONENTS net)
#message("POCO include dir: ${POCO_INCLUDE_DIR}")
#message("POCO libraries: ${POCO_LIBRARIES}")
#include_directories(${POCO_INCLUDE_DIR})
#link_directories(${POCO_LIBRARIES})

file( GLOB libcbag_SOURCES_LIB
  "lib/*.cpp"
  )

file( GLOB libcbag_HEADERS "include/*.hpp" )

find_package(CURL REQUIRED)
message("Curl include dir: ${CURL_INCLUDE_DIR}")
message("Curl libraries: ${CURL_LIBRARIES}")
include_directories(${CURL_INCLUDE_DIR})
link_directories(${CURL_LIBRARIES})

#file( GLOB libcbag_SOURCES_LIB
#  "${PROJECT_SOURCE_DIR}/lib/*.cpp"
#  )

add_library(cbag ${libcbag_SOURCES_LIB} )
target_include_directories(cbag PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
set_target_properties(cbag PROPERTIES PUBLIC_HEADER ${libcbag_HEADERS})

if (STATIC)
    message(STATUS "linking libcbag statically with" ${OPENSSL_LIBRARIES} ${CURL_LIBRARIES})
    target_link_libraries(cbag ${OPENSSL_LIBRARIES} ${CURL_LIBRARIES})
else()
	message(STATUS "linking libcbag dynamically with" ${OPENSSL_LIBARIES} ${CURL_LIBRARIES})
	target_link_libraries(cbag ${OPENSSL_LIBRARIES} ${CURL_LIBRARIES})
endif()

#add_executable(test_payload ${PROJECT_SOURCE_DIR}/examples/test_payload.cpp ${libcbag_SOURCES_lib})
add_executable(test_payload examples/test_payload.cpp ${libcbag_SOURCES_lib})
TARGET_LINK_LIBRARIES(test_payload ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ${CURL_LIBRARIES} cbag)
#add_executable(test_bag ${PROJECT_SOURCE_DIR}/examples/test_bag.cpp ${libcbag_SOURCES_lib})

add_executable(validate_a_bag examples/validate_a_bag.cpp ${libcbag_SOURCES_lib})
#TARGET_LINK_LIBRARIES(test_bag ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ${POCO_NET_LIBRARIES} cbag)
TARGET_LINK_LIBRARIES(validate_a_bag ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ${CURL_LIBRARIES} cbag)

add_executable(create_a_bag examples/create_a_bag.cpp ${libcbag_SOURCES_lib})
#TARGET_LINK_LIBRARIES(test_bag ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ${POCO_NET_LIBRARIES} cbag)
TARGET_LINK_LIBRARIES(create_a_bag ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ${CURL_LIBRARIES} cbag)


