# Initialize CMake ################################################################################

CMake_Minimum_Required            ( VERSION 3.12.0 FATAL_ERROR )

# Set CMAKE_BUILD_TYPE
If                                ( NOT CMAKE_BUILD_TYPE )
    Set                               ( CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build!" FORCE )
EndIf                             ( NOT CMAKE_BUILD_TYPE )
Set_Property                      ( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release RelWithDebInfo MinSizeRel )

# Set CMAKE_MODULE_PATH
If                                ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
    Set                               ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
                                                          "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
EndIf                             ( )
If                                ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
    Set                               ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
                                                          "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" )
EndIf                             ( )

# Project #########################################################################################

Include                           ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cppcurl-options.cmake )
Include                           ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cppcurl-var.cmake )
Project                           ( cppcurl
                                    DESCRIPTION "A simple library"
                                    VERSION "${CPPCURL_VERSION}" )
Include                           ( CTest )
Include                           ( GNUInstallDirs )

# Subdirectories
Add_SubDirectory                  ( ${CMAKE_CURRENT_SOURCE_DIR}/src )
Add_SubDirectory                  ( ${CMAKE_CURRENT_SOURCE_DIR}/test )

# Install
Include                           ( CMakePackageConfigHelpers )
Write_Basic_Package_Version_File  ( "${CMAKE_CURRENT_BINARY_DIR}/cmake/cppcurl-config-version.cmake"
                                    VERSION ${CPPCURL_VERSION}
                                    COMPATIBILITY AnyNewerVersion )
Configure_File                    ( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cppcurl-config.cmake"
                                    "${CMAKE_CURRENT_BINARY_DIR}/cmake/cppcurl-config.cmake"
                                    @ONLY )

Set                               ( ConfigPackageLocation "${CPPCURL_INSTALL_DIR_SHARE}/cmake" )
Install                           ( EXPORT
                                      cppcurl
                                    NAMESPACE
                                      cppcurl::
                                    DESTINATION
                                      ${ConfigPackageLocation} )
Install                           ( FILES
                                      "${CMAKE_CURRENT_BINARY_DIR}/cmake/cppcurl-config.cmake"
                                      "${CMAKE_CURRENT_BINARY_DIR}/cmake/cppcurl-config-version.cmake"
                                    DESTINATION
                                      ${ConfigPackageLocation}
                                    COMPONENT
                                      Devel )
