
get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)

if(NOT CURL_FIND_COMPONENTS)
    set(CURL_FIND_COMPONENTS curl libcurl)
    if(CURL_FIND_REQUIRED)
        set(CURL_FIND_REQUIRED_curl TRUE)
        set(CURL_FIND_REQUIRED_libcurl TRUE)
    endif()
endif()

set(_curl_missing_components)
foreach(_comp ${CURL_FIND_COMPONENTS})
    if(EXISTS "${_DIR}/${_comp}-target.cmake")
        include("${_DIR}/${_comp}-target.cmake")
        set(CURL_${_comp}_FOUND TRUE)
    else()
        set(CURL_${_comp}_FOUND FALSE)
        if(CURL_FIND_REQUIRED_${_comp})
            set(CURL_FOUND FALSE)
            list(APPEND _curl_missing_components ${_comp})
        endif()
    endif()
endforeach()

if(_curl_missing_components)
    set(CURL_NOT_FOUND_MESSAGE "Following required components not found: " ${_curl_missing_components})
else()
    if(TARGET CURL::libcurl)
        string(TOUPPER "${CMAKE_BUILD_TYPE}" _curl_current_config)
        if(NOT _curl_current_config)
            set(_curl_current_config "NOCONFIG")
        endif()
        get_target_property(_curl_configurations CURL::libcurl IMPORTED_CONFIGURATIONS)
        list(FIND _curl_configurations "${_curl_current_config}" _i)
        if(_i LESS 0)
            set(_curl_config "RELEASE")
            list(FIND _curl_configurations "${_curl_current_config}" _i)
            if(_i LESS 0)
                set(_curl_config "NOCONFIG")
                list(FIND _curl_configurations "${_curl_current_config}" _i)
            endif()
        endif()

        if(_i LESS 0)
            set(_curl_current_config "") # let CMake pick config at random
        else()
	    set(_curl_current_config "_${_curl_current_config}")
        endif()

        get_target_property(CURL_INCLUDE_DIRS CURL::libcurl INTERFACE_INCLUDE_DIRECTORIES)
        get_target_property(CURL_LIBRARIES CURL::libcurl "LOCATION${_curl_current_config}")
        set(_curl_current_config)
        set(_curl_configurations)
        set(_i)
    endif()
endif()

unset(_curl_missing_components)
