Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 1 | set(LIB_NAME libcurl) |
| 2 | |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 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 |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 11 | ) |
| 12 | |
| 13 | if(MSVC) |
| 14 | list(APPEND CSOURCES libcurl.rc) |
Elliott Hughes | 82be86d | 2017-09-20 17:00:17 -0700 | [diff] [blame] | 15 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4127") |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 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 | |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 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}) |
Bertrand SIMONNET | e6cd738 | 2015-07-01 15:39:44 -0700 | [diff] [blame] | 58 | if(USE_ARES) |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 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 | |
Bertrand SIMONNET | e6cd738 | 2015-07-01 15:39:44 -0700 | [diff] [blame] | 76 | if(MSVC AND CURL_STATICLIB) |
| 77 | set_target_properties(${LIB_NAME} PROPERTIES STATIC_LIBRARY_FLAGS ${CMAKE_EXE_LINKER_FLAGS}) |
| 78 | endif() |
| 79 | |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 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 | |
Elliott Hughes | cee0338 | 2017-06-23 12:17:18 -0700 | [diff] [blame] | 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 | |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 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 | |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 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") |
Elliott Hughes | 82be86d | 2017-09-20 17:00:17 -0700 | [diff] [blame] | 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 | ) |
Lucas Eckels | 9bd90e6 | 2012-08-06 15:07:02 -0700 | [diff] [blame] | 108 | endif() |
| 109 | endif() |
Bertrand SIMONNET | e6cd738 | 2015-07-01 15:39:44 -0700 | [diff] [blame] | 110 | |
Alex Deymo | 486467e | 2017-12-19 19:04:07 +0100 | [diff] [blame] | 111 | target_include_directories(${LIB_NAME} INTERFACE |
| 112 | $<INSTALL_INTERFACE:include>) |
| 113 | |
Bertrand SIMONNET | e6cd738 | 2015-07-01 15:39:44 -0700 | [diff] [blame] | 114 | install(TARGETS ${LIB_NAME} |
Alex Deymo | 486467e | 2017-12-19 19:04:07 +0100 | [diff] [blame] | 115 | EXPORT libcurl-target |
Bertrand SIMONNET | e6cd738 | 2015-07-01 15:39:44 -0700 | [diff] [blame] | 116 | ARCHIVE DESTINATION lib |
| 117 | LIBRARY DESTINATION lib |
Alex Deymo | 486467e | 2017-12-19 19:04:07 +0100 | [diff] [blame] | 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 | |