diff options
| author | myd7349 <myd7349@gmail.com> | 2019-02-23 04:10:29 +0800 |
|---|---|---|
| committer | Victor Romero <romerosanchezv@gmail.com> | 2019-02-22 12:10:29 -0800 |
| commit | 63265da7779324bf871ca01813f9a892ddae73b1 (patch) | |
| tree | f2b0ce4483a98c88779b0e55dfca29cee8cfc5f4 | |
| parent | 233c4c358a6156913ef635be7717ca83c1c34b3e (diff) | |
| download | vcpkg-63265da7779324bf871ca01813f9a892ddae73b1.tar.gz vcpkg-63265da7779324bf871ca01813f9a892ddae73b1.zip | |
[curlpp] Add new port to fix #5352 (#5381)
| -rw-r--r-- | ports/curlpp/CONTROL | 4 | ||||
| -rw-r--r-- | ports/curlpp/fix-cmake.patch | 52 | ||||
| -rw-r--r-- | ports/curlpp/portfile.cmake | 47 | ||||
| -rw-r--r-- | ports/curlpp/vcpkg-cmake-wrapper.cmake | 35 |
4 files changed, 138 insertions, 0 deletions
diff --git a/ports/curlpp/CONTROL b/ports/curlpp/CONTROL new file mode 100644 index 000000000..1c6c07f32 --- /dev/null +++ b/ports/curlpp/CONTROL @@ -0,0 +1,4 @@ +Source: curlpp +Version: 2018-06-15 +Description: C++ wrapper around libcURL +Build-Depends: curl diff --git a/ports/curlpp/fix-cmake.patch b/ports/curlpp/fix-cmake.patch new file mode 100644 index 000000000..3930b65c2 --- /dev/null +++ b/ports/curlpp/fix-cmake.patch @@ -0,0 +1,52 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8b183a0..a801ae8 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -85,11 +85,12 @@ endif() + + file(GLOB_RECURSE HeaderFileList "${CMAKE_CURRENT_SOURCE_DIR}/include/*") + file(GLOB_RECURSE SourceFileList "${CMAKE_CURRENT_SOURCE_DIR}/src/*") ++if(BUILD_SHARED_LIBS) + add_library(${PROJECT_NAME} SHARED ${HeaderFileList} ${SourceFileList}) + target_link_libraries(${PROJECT_NAME} ${CURL_LIBRARIES} ${CONAN_LIBS}) + set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION 1 VERSION 1.0.0) +- +-add_library(${PROJECT_NAME}_static STATIC ${HeaderFileList} ${SourceFileList}) ++else() ++add_library(${PROJECT_NAME} STATIC ${HeaderFileList} ${SourceFileList}) + + # Make sure that on unix-platforms shared and static libraries have + # the same root name, but different suffixes. +@@ -97,19 +98,28 @@ add_library(${PROJECT_NAME}_static STATIC ${HeaderFileList} ${SourceFileList}) + # (solution taken from https://cmake.org/Wiki/CMake_FAQ#How_do_I_make_my_shared_and_static_libraries_have_the_same_root_name.2C_but_different_suffixes.3F) + # + # Making shared and static libraries have the same root name, but different suffixes +-SET_TARGET_PROPERTIES(${PROJECT_NAME}_static PROPERTIES OUTPUT_NAME ${PROJECT_NAME}) ++SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES OUTPUT_NAME ${PROJECT_NAME}) + # Now the library target "curlpp_static" will be named "curlpp.lib" with MS tools. + # This conflicts with the "curlpp.lib" import library corresponding to "curlpp.dll", + # so we add a "lib" prefix (which is default on other platforms anyway): +-SET_TARGET_PROPERTIES(${PROJECT_NAME}_static PROPERTIES PREFIX "lib") +-target_link_libraries(${PROJECT_NAME}_static ${CURL_LIBRARIES} ${CONAN_LIBS}) ++SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES PREFIX "lib") ++target_link_libraries(${PROJECT_NAME} ${CURL_LIBRARIES} ${CONAN_LIBS}) ++endif() ++ ++target_include_directories(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>) + + # install headers + install(DIRECTORY include/utilspp/ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/utilspp") + install(DIRECTORY include/curlpp/ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/curlpp") + +-install(TARGETS ${PROJECT_NAME} ${PROJECT_NAME}_static ++install(TARGETS ${PROJECT_NAME} ++ EXPORT ${PROJECT_NAME}-config + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + ++install(EXPORT ${PROJECT_NAME}-config ++ FILE unofficial-${PROJECT_NAME}-config.cmake ++ NAMESPACE unofficial::${PROJECT_NAME}:: ++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} ++) diff --git a/ports/curlpp/portfile.cmake b/ports/curlpp/portfile.cmake new file mode 100644 index 000000000..aaa9c51ab --- /dev/null +++ b/ports/curlpp/portfile.cmake @@ -0,0 +1,47 @@ +include(vcpkg_common_functions) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO jpbarrette/curlpp + REF 8810334c830faa3b38bcd94f5b1ab695a4f05eb9 + SHA512 47eb0738d7cd2d4262c455f9472a21535343bcf08bda6de19771dab9204e068272b41782c87057d50e3781683a29e79d6387577be68d175a7fa890367f15d0d2 + HEAD_REF master + PATCHES + fix-cmake.patch +) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA +) + +vcpkg_install_cmake() + +vcpkg_fixup_cmake_targets( + CONFIG_PATH lib/cmake/${PORT} + TARGET_PATH share/unofficial-${PORT} +) + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) + +if(VCPKG_LIBRARY_LINKAGE STREQUAL static) + file(REMOVE_RECURSE + ${CURRENT_PACKAGES_DIR}/bin + ${CURRENT_PACKAGES_DIR}/debug/bin + ) + + configure_file( + ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake + ${CURRENT_PACKAGES_DIR}/share/unofficial-${PORT} + @ONLY + ) +endif() + +# Handle copyright +configure_file(${SOURCE_PATH}/doc/LICENSE + ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright COPYONLY) + +vcpkg_copy_pdbs() + +# CMake integration test +#vcpkg_test_cmake(PACKAGE_NAME ${PORT}) diff --git a/ports/curlpp/vcpkg-cmake-wrapper.cmake b/ports/curlpp/vcpkg-cmake-wrapper.cmake new file mode 100644 index 000000000..0bffdc6b4 --- /dev/null +++ b/ports/curlpp/vcpkg-cmake-wrapper.cmake @@ -0,0 +1,35 @@ +_find_package(${ARGS})
+
+if("@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static")
+ if(TARGET unofficial::curlpp::curlpp)
+ # Fix CURL dependencies. See:
+ # https://github.com/Microsoft/vcpkg/issues/4312
+
+ set(_libs "")
+
+ find_package(CURL REQUIRED)
+
+ set(ZLIB_ROOT ${CMAKE_PREFIX_PATH}) # Prefer Zlib installed via `vcpkg`
+ find_package(ZLIB)
+ unset(ZLIB_ROOT)
+
+ list(APPEND _libs ${CURL_LIBRARIES} ZLIB::ZLIB)
+
+ find_package(OpenSSL QUIET)
+ if(OPENSSL_FOUND)
+ list(APPEND _libs OpenSSL::SSL OpenSSL::Crypto)
+ endif()
+
+ find_package(Threads REQUIRED)
+ list(APPEND _libs Threads::Threads)
+
+ if(CMAKE_SYSTEM_NAME STREQUAL "Windows" OR CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+ list(APPEND _libs Ws2_32 Crypt32)
+ endif()
+
+ set_target_properties(
+ unofficial::curlpp::curlpp
+ PROPERTIES INTERFACE_LINK_LIBRARIES "${_libs}"
+ )
+ endif()
+endif()
|
