4 # Finds the Curl library
6 # This will define the following variables::
8 # CURL_FOUND - system has Curl
9 # CURL_INCLUDE_DIRS - the Curl include directory
10 # CURL_LIBRARIES - the Curl libraries
11 # CURL_DEFINITIONS - the Curl definitions
13 # and the following imported targets::
15 # Curl::Curl - The Curl library
18 pkg_check_modules(PC_CURL libcurl QUIET)
21 find_path(CURL_INCLUDE_DIR NAMES curl/curl.h
22 PATHS ${PC_CURL_INCLUDEDIR})
23 find_library(CURL_LIBRARY NAMES curl libcurl libcurl_imp
24 PATHS ${PC_CURL_LIBDIR})
26 set(CURL_VERSION ${PC_CURL_VERSION})
28 set(CURL_LIB_TYPE SHARED)
29 set(CURL_LDFLAGS ${PC_CURL_LDFLAGS})
31 # check if curl is statically linked
32 if(${CURL_LIBRARY} MATCHES ".+\.a$" AND PC_CURL_STATIC_LDFLAGS)
33 set(CURL_LIB_TYPE STATIC)
34 set(CURL_LDFLAGS ${PC_CURL_STATIC_LDFLAGS})
36 pkg_check_modules(PC_NGHTTP2 libnghttp2 QUIET)
37 find_library(NGHTTP2_LIBRARY NAMES libnghttp2 nghttp2
38 PATHS ${PC_NGHTTP2_LIBDIR})
41 include(FindPackageHandleStandardArgs)
42 find_package_handle_standard_args(Curl
43 REQUIRED_VARS CURL_LIBRARY CURL_INCLUDE_DIR
44 VERSION_VAR CURL_VERSION)
47 set(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIR})
48 set(CURL_LIBRARIES ${CURL_LIBRARY} ${NGHTTP2_LIBRARY})
50 if(NOT TARGET Curl::Curl)
51 add_library(Curl::Curl ${CURL_LIB_TYPE} IMPORTED)
52 set_target_properties(Curl::Curl PROPERTIES
53 IMPORTED_LOCATION "${CURL_LIBRARY}"
54 INTERFACE_INCLUDE_DIRECTORIES "${CURL_INCLUDE_DIR}")
56 set_target_properties(Curl::Curl PROPERTIES
57 INTERFACE_COMPILE_DEFINITIONS HAS_CURL_STATIC=1)
62 mark_as_advanced(CURL_INCLUDE_DIR CURL_LIBRARY CURL_LDFLAGS)