aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Hague <jim.hague@acm.org>2020-07-07 01:22:17 +0100
committerGitHub <noreply@github.com>2020-07-06 17:22:17 -0700
commite1285b4a280b540c191fed5fbfbcd3626de1fc30 (patch)
tree36e80b1d48a60de19ac96475df789cf0619f469f
parent6a41626eaf33d2f3392e06d98a94c630bfc30977 (diff)
downloadvcpkg-e1285b4a280b540c191fed5fbfbcd3626de1fc30.tar.gz
vcpkg-e1285b4a280b540c191fed5fbfbcd3626de1fc30.zip
[getdns] Add new port. (#12090)
* [getdns] Add new port. * Add support for vcpkg static library builds. * Convert libevent and libuv libraries to features. * Use ${PORT} in copyright install. * getdns does not currently support UWP. * Add failing port on UWP to portfile. * Remove optional FEATURES keyword.
-rw-r--r--ports/getdns/CONTROL14
-rw-r--r--ports/getdns/ignore_copying.patch12
-rw-r--r--ports/getdns/install_dlls.patch24
-rw-r--r--ports/getdns/openssl_depend_libs.patch13
-rw-r--r--ports/getdns/portfile.cmake45
5 files changed, 108 insertions, 0 deletions
diff --git a/ports/getdns/CONTROL b/ports/getdns/CONTROL
new file mode 100644
index 000000000..d7f45b301
--- /dev/null
+++ b/ports/getdns/CONTROL
@@ -0,0 +1,14 @@
+Source: getdns
+Version: 1.6.0
+Build-Depends: libidn2, openssl
+Description: GetDNS is a modern asynchronous DNS API
+Homepage: https://getdnsapi.net/
+Supports: !uwp
+
+Feature: libevent
+Description: libevent event loop integration
+Build-Depends: libevent
+
+Feature: libuv
+Description: libuv event loop integration
+Build-Depends: libuv
diff --git a/ports/getdns/ignore_copying.patch b/ports/getdns/ignore_copying.patch
new file mode 100644
index 000000000..87dc5c6d5
--- /dev/null
+++ b/ports/getdns/ignore_copying.patch
@@ -0,0 +1,12 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 10d10b99..fda6fa3c 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1087,6 +1087,6 @@ install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/getdns DESTINATION include)
+ install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man3 DESTINATION share/man)
+
+ set(docdir share/doc/getdns)
+-install(FILES AUTHORS ChangeLog COPYING LICENSE NEWS README.md DESTINATION ${docdir})
++install(FILES AUTHORS ChangeLog LICENSE NEWS README.md DESTINATION ${docdir})
+ install(FILES spec/index.html DESTINATION ${docdir}/spec)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/getdns.pc DESTINATION lib/pkgconfig)
diff --git a/ports/getdns/install_dlls.patch b/ports/getdns/install_dlls.patch
new file mode 100644
index 000000000..8c3024b25
--- /dev/null
+++ b/ports/getdns/install_dlls.patch
@@ -0,0 +1,24 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 10d10b99..35761647 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1065,15 +1065,15 @@ if (ENABLE_STATIC)
+ endif ()
+ endif ()
+ if (ENABLE_SHARED)
+- install(TARGETS getdns_shared LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
++ install(TARGETS getdns_shared LIBRARY DESTINATION lib ARCHIVE DESTINATION lib RUNTIME DESTINATION bin)
+ if (USE_LIBEV)
+- install(TARGETS getdns_ex_ev_shared LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
++ install(TARGETS getdns_ex_ev_shared LIBRARY DESTINATION lib ARCHIVE DESTINATION lib RUNTIME DESTINATION bin)
+ endif ()
+ if (USE_LIBEVENT2)
+- install(TARGETS getdns_ex_event_shared LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
++ install(TARGETS getdns_ex_event_shared LIBRARY DESTINATION lib ARCHIVE DESTINATION lib RUNTIME DESTINATION bin)
+ endif ()
+ if (USE_LIBUV)
+- install(TARGETS getdns_ex_uv_shared LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
++ install(TARGETS getdns_ex_uv_shared LIBRARY DESTINATION lib ARCHIVE DESTINATION lib RUNTIME DESTINATION bin)
+ endif ()
+ endif ()
+ if (BUILD_GETDNS_QUERY)
diff --git a/ports/getdns/openssl_depend_libs.patch b/ports/getdns/openssl_depend_libs.patch
new file mode 100644
index 000000000..6969b4319
--- /dev/null
+++ b/ports/getdns/openssl_depend_libs.patch
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 7d22d3ca..7784ab58 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -335,7 +335,7 @@ check_include_file(openssl/rand.h HAVE_OPENSSL_RAND_H)
+ check_include_file(openssl/conf.h HAVE_OPENSSL_CONF_H)
+ check_include_file(openssl/engine.h HAVE_OPENSSL_ENGINE_H)
+
+-set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
++set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES} ${getdns_system_libs})
+ check_function_exists(DSA_SIG_set0 HAVE_DSA_SIG_SET0)
+ check_function_exists(DSA_set0_pqg HAVE_DSA_SET0_PQG)
+ check_function_exists(DSA_set0_key HAVE_DSA_SET0_KEY)
diff --git a/ports/getdns/portfile.cmake b/ports/getdns/portfile.cmake
new file mode 100644
index 000000000..6c9a85e56
--- /dev/null
+++ b/ports/getdns/portfile.cmake
@@ -0,0 +1,45 @@
+vcpkg_fail_port_install(ON_TARGET "uwp")
+
+set(GETDNS_VERSION 1.6.0)
+set(GETDNS_HASH 4d3a67cd76e7ce53a31c9b92607d7768381a1f916e7950fe4e69368fa585d38dbfc04975630fbe8d8bd14f4bebf83a3516e063b5b54e0922548edc0952ee7b4e)
+
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" GETDNS_ENABLE_STATIC)
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" GETDNS_ENABLE_SHARED)
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://getdnsapi.net/dist/getdns-${GETDNS_VERSION}.tar.gz"
+ FILENAME "getdns-${GETDNS_VERSION}.tar.gz"
+ SHA512 ${GETDNS_HASH}
+)
+
+vcpkg_extract_source_archive_ex(
+ OUT_SOURCE_PATH SOURCE_PATH
+ ARCHIVE ${ARCHIVE}
+ REF ${GETDNS_VERSION}
+ PATCHES
+ "openssl_depend_libs.patch"
+ "ignore_copying.patch"
+ "install_dlls.patch"
+)
+
+vcpkg_check_features(
+ OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ libevent BUILD_LIBEVENT2
+ libuv BUILD_LIBUV
+)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS
+ -DBUILD_GETDNS_QUERY=OFF
+ -DBUILD_GETDNS_SERVER_MON=OFF
+ -DENABLE_STATIC=${GETDNS_ENABLE_STATIC}
+ -DENABLE_SHARED=${GETDNS_ENABLE_SHARED}
+ ${FEATURE_OPTIONS}
+)
+vcpkg_install_cmake()
+file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
+vcpkg_copy_pdbs()
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")