# Initialize ######################################################################################

Include                     ( cotire        OPTIONAL RESULT_VARIABLE HAS_COTIRE )
Include                     ( pedantic      OPTIONAL RESULT_VARIABLE HAS_PEDANTIC )
Include                     ( strip_symbols OPTIONAL RESULT_VARIABLE HAS_STRIP_SYMBOLS )

Find_Package                ( CURL REQUIRED)
Find_Package                ( cppcore QUIET )
If                          ( cppcore_FOUND )
    Set                         ( CPPCURL_HAS_CPPCORE true )
EndIf                       ( )

# Interface Library ###############################################################################

Set                         ( CPPCURL_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include )
Set                         ( CPPCURL_GENERATED_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated/include )
Configure_File              ( ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/config.h.in
                              ${CPPCURL_GENERATED_INCLUDE_DIR}/cppcurl/config.h )
Add_Library                 ( cppcurl INTERFACE )
Target_Include_Directories  ( cppcurl
                              INTERFACE
                                $<BUILD_INTERFACE:${CPPCURL_INCLUDE_DIR}>
                                $<BUILD_INTERFACE:${CPPCURL_GENERATED_INCLUDE_DIR}>
                                $<INSTALL_INTERFACE:${CPPCURL_INSTALL_DIR_INCLUDE}> )
If                          ( CPPCURL_HAS_CPPCORE )
    Target_Link_Libraries       ( cppcurl
                                  INTERFACE
                                    cppcore
                                    CURL::libcurl )
EndIf                       ( )

# Install #########################################################################################

# Header
Install                     ( FILES ${CPPCURL_INCLUDE_DIR}/cppcurl.h
                              DESTINATION ${CPPCURL_INSTALL_DIR_INCLUDE} )
Install                     ( DIRECTORY ${CPPCURL_INCLUDE_DIR}/cppcurl
                              DESTINATION ${CPPCURL_INSTALL_DIR_INCLUDE} )
Install                     ( DIRECTORY ${CPPCURL_GENERATED_INCLUDE_DIR}/cppcurl
                              DESTINATION ${CPPCURL_INSTALL_DIR_INCLUDE} )
Install                     ( TARGETS cppcurl
                              EXPORT cppcurl
                              DESTINATION ${CPPCURL_INSTALL_DIR_INCLUDE} )
