Home | History | Annotate | Download | only in lib
      1 set(LIB_NAME libcurl)
      2 
      3 configure_file(curl_config.h.cmake
      4   ${CMAKE_CURRENT_BINARY_DIR}/curl_config.h)
      5 
      6 transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
      7 include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake)
      8 
      9 list(APPEND HHEADERS
     10   ${CMAKE_CURRENT_BINARY_DIR}/curl_config.h
     11   )
     12 
     13 if(MSVC)
     14   list(APPEND CSOURCES libcurl.rc)
     15   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4127")
     16 endif()
     17 
     18 # SET(CSOURCES
     19 # #  memdebug.c -not used
     20 # # nwlib.c - Not used
     21 # # strtok.c - specify later
     22 # # strtoofft.c - specify later
     23 # )
     24 
     25 # # if we have Kerberos 4, right now this is never on
     26 # #OPTION(CURL_KRB4 "Use Kerberos 4" OFF)
     27 # IF(CURL_KRB4)
     28 # SET(CSOURCES ${CSOURCES}
     29 # krb4.c
     30 # security.c
     31 # )
     32 # ENDIF(CURL_KRB4)
     33 
     34 # #OPTION(CURL_MALLOC_DEBUG "Debug mallocs in Curl" OFF)
     35 # MARK_AS_ADVANCED(CURL_MALLOC_DEBUG)
     36 # IF(CURL_MALLOC_DEBUG)
     37 # SET(CSOURCES ${CSOURCES}
     38 # memdebug.c
     39 # )
     40 # ENDIF(CURL_MALLOC_DEBUG)
     41 
     42 # # only build compat strtoofft if we need to
     43 # IF(NOT HAVE_STRTOLL AND NOT HAVE__STRTOI64)
     44 # SET(CSOURCES ${CSOURCES}
     45 # strtoofft.c
     46 # )
     47 # ENDIF(NOT HAVE_STRTOLL AND NOT HAVE__STRTOI64)
     48 
     49 
     50 # The rest of the build
     51 
     52 include_directories(${CMAKE_CURRENT_BINARY_DIR}/../include)
     53 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..)
     54 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../include)
     55 include_directories(${CMAKE_CURRENT_BINARY_DIR}/..)
     56 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
     57 include_directories(${CMAKE_CURRENT_BINARY_DIR})
     58 if(USE_ARES)
     59   include_directories(${CARES_INCLUDE_DIR})
     60 endif()
     61 
     62 if(CURL_STATICLIB)
     63   # Static lib
     64   set(CURL_USER_DEFINED_DYNAMIC_OR_STATIC STATIC)
     65 else()
     66   # DLL / so dynamic lib
     67   set(CURL_USER_DEFINED_DYNAMIC_OR_STATIC SHARED)
     68 endif()
     69 
     70 add_library(
     71   ${LIB_NAME}
     72   ${CURL_USER_DEFINED_DYNAMIC_OR_STATIC}
     73   ${HHEADERS} ${CSOURCES}
     74   )
     75 
     76 if(MSVC AND CURL_STATICLIB)
     77   set_target_properties(${LIB_NAME} PROPERTIES STATIC_LIBRARY_FLAGS ${CMAKE_EXE_LINKER_FLAGS})
     78 endif()
     79 
     80 target_link_libraries(${LIB_NAME} ${CURL_LIBS})
     81 
     82 if(WIN32)
     83   add_definitions( -D_USRDLL )
     84 endif()
     85 
     86 set_target_properties(${LIB_NAME} PROPERTIES COMPILE_DEFINITIONS BUILDING_LIBCURL)
     87 
     88 if(HIDES_CURL_PRIVATE_SYMBOLS)
     89   set_property(TARGET ${LIB_NAME} APPEND PROPERTY COMPILE_DEFINITIONS "CURL_HIDDEN_SYMBOLS")
     90   set_property(TARGET ${LIB_NAME} APPEND PROPERTY COMPILE_FLAGS ${CURL_CFLAG_SYMBOLS_HIDE})
     91 endif()
     92 
     93 # Remove the "lib" prefix since the library is already named "libcurl".
     94 set_target_properties(${LIB_NAME} PROPERTIES PREFIX "")
     95 set_target_properties(${LIB_NAME} PROPERTIES IMPORT_PREFIX "")
     96 
     97 if(WIN32)
     98   if(NOT CURL_STATICLIB)
     99     # Add "_imp" as a suffix before the extension to avoid conflicting with the statically linked "libcurl.lib"
    100     set_target_properties(${LIB_NAME} PROPERTIES IMPORT_SUFFIX "_imp.lib")
    101 
    102     set_target_properties (${LIB_NAME} PROPERTIES
    103        DEBUG_POSTFIX "-d"
    104        # Note: no postfix for release variants, let user choose what style of release he wants
    105        # MINSIZEREL_POSTFIX "-z"
    106        # RELWITHDEBINFO_POSTFIX "-g"
    107        )
    108   endif()
    109 endif()
    110 
    111 target_include_directories(${LIB_NAME} INTERFACE
    112 	$<INSTALL_INTERFACE:include>)
    113 
    114 install(TARGETS ${LIB_NAME}
    115   EXPORT libcurl-target
    116   ARCHIVE DESTINATION lib
    117   LIBRARY DESTINATION lib
    118   RUNTIME DESTINATION bin
    119 )
    120 
    121 export(TARGETS ${LIB_NAME}
    122        APPEND FILE ${PROJECT_BINARY_DIR}/libcurl-target.cmake
    123        NAMESPACE CURL::
    124 )
    125 
    126 install(EXPORT libcurl-target
    127         FILE libcurl-target.cmake
    128         NAMESPACE CURL::
    129         DESTINATION ${CURL_INSTALL_CMAKE_DIR}
    130 )
    131 
    132