aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormyd7349 <myd7349@gmail.com>2019-02-23 04:10:29 +0800
committerVictor Romero <romerosanchezv@gmail.com>2019-02-22 12:10:29 -0800
commit63265da7779324bf871ca01813f9a892ddae73b1 (patch)
treef2b0ce4483a98c88779b0e55dfca29cee8cfc5f4
parent233c4c358a6156913ef635be7717ca83c1c34b3e (diff)
downloadvcpkg-63265da7779324bf871ca01813f9a892ddae73b1.tar.gz
vcpkg-63265da7779324bf871ca01813f9a892ddae73b1.zip
[curlpp] Add new port to fix #5352 (#5381)
-rw-r--r--ports/curlpp/CONTROL4
-rw-r--r--ports/curlpp/fix-cmake.patch52
-rw-r--r--ports/curlpp/portfile.cmake47
-rw-r--r--ports/curlpp/vcpkg-cmake-wrapper.cmake35
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()