aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArkadiy Shapkin <arkady.shapkin@gmail.com>2017-05-11 01:08:52 +0300
committerArkadiy Shapkin <arkady.shapkin@gmail.com>2017-05-11 14:44:13 +0300
commit083bfa14b0dd1481e08e1c6424dadd090fbb8bad (patch)
treeebce370e1af436adaab0f076f99ded3bff6466ad
parent6721b5337d00ea65cc8cb5fe1d8fa8c65e7a8246 (diff)
downloadvcpkg-083bfa14b0dd1481e08e1c6424dadd090fbb8bad.tar.gz
vcpkg-083bfa14b0dd1481e08e1c6424dadd090fbb8bad.zip
[c-ares] Initial commit for c-ares library
vcpkg_fixup_cmake_targets() support CONFIG_PATH parameter
-rw-r--r--ports/c-ares/CONTROL4
-rw-r--r--ports/c-ares/portfile.cmake42
-rw-r--r--scripts/cmake/vcpkg_fixup_cmake_targets.cmake47
3 files changed, 91 insertions, 2 deletions
diff --git a/ports/c-ares/CONTROL b/ports/c-ares/CONTROL
new file mode 100644
index 000000000..977066b4c
--- /dev/null
+++ b/ports/c-ares/CONTROL
@@ -0,0 +1,4 @@
+Source: c-ares
+Version: 1.12.1-dev-40eb41f
+Description: A C library for asynchronous DNS requests
+Build-Depends: \ No newline at end of file
diff --git a/ports/c-ares/portfile.cmake b/ports/c-ares/portfile.cmake
new file mode 100644
index 000000000..696bb0fbc
--- /dev/null
+++ b/ports/c-ares/portfile.cmake
@@ -0,0 +1,42 @@
+include(vcpkg_common_functions)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO c-ares/c-ares
+ REF 40eb41f522eb9a86f9397352f10d1e63c89f2c54
+ SHA512 901d7da97098f79d13ae8d72c85936bd15fbd6b65399c247462ad5367ac85ff32c90325998c21364f959e1bde2c8b7dbc9d9d7524ea34e6bc48dfb3854c199e1
+ HEAD_REF master
+)
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
+ set(CARES_STATIC ON)
+ set(CARES_SHARED OFF)
+else()
+ set(CARES_STATIC OFF)
+ set(CARES_SHARED ON)
+endif()
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS
+ -DCARES_STATIC=${CARES_STATIC}
+ -DCARES_SHARED=${CARES_SHARED}
+)
+
+vcpkg_install_cmake()
+
+vcpkg_fixup_cmake_targets(CONFIG_PATH "lib/cmake/c-ares")
+
+file(GLOB RELEASE_EXE_FILES "${CURRENT_PACKAGES_DIR}/bin/*.exe")
+file(REMOVE ${RELEASE_EXE_FILES})
+file(GLOB DEBUG_EXE_FILES "${CURRENT_PACKAGES_DIR}/debug/bin/*.exe")
+file(REMOVE ${DEBUG_EXE_FILES})
+
+vcpkg_copy_pdbs()
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+# Handle copyright
+file(COPY ${SOURCE_PATH}/LICENSE.md DESTINATION ${CURRENT_PACKAGES_DIR}/share/c-ares)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/c-ares/LICENSE.md ${CURRENT_PACKAGES_DIR}/share/c-ares/copyright)
diff --git a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake
index f753f6396..7c1891584 100644
--- a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake
+++ b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake
@@ -7,15 +7,58 @@
# Transform all references matching /bin/*.exe to /tools/<port>/*.exe
#
# ::
-# vcpkg_fixup_cmake_targets()
+# vcpkg_fixup_cmake_targets([CONFIG_PATH <config_path>])
+#
+# ``CONFIG_PATH``
+# *.cmake files subdirectory (like "lib/cmake/${PORT}").
#
function(vcpkg_fixup_cmake_targets)
- cmake_parse_arguments(_vfct "" "" "" ${ARGN})
+ cmake_parse_arguments(_vfct "" "CONFIG_PATH" "" ${ARGN})
set(DEBUG_SHARE ${CURRENT_PACKAGES_DIR}/debug/share/${PORT})
set(RELEASE_SHARE ${CURRENT_PACKAGES_DIR}/share/${PORT})
+ if(NOT ${_vfct_CONFIG_PATH} STREQUAL "")
+ set(DEBUG_CONFIG ${CURRENT_PACKAGES_DIR}/debug/${_vfct_CONFIG_PATH})
+ set(RELEASE_CONFIG ${CURRENT_PACKAGES_DIR}/${_vfct_CONFIG_PATH})
+
+ if(NOT EXISTS ${DEBUG_CONFIG})
+ message(FATAL_ERROR "'${DEBUG_CONFIG}' does not exist.")
+ endif()
+
+ file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/share)
+ file(RENAME ${DEBUG_CONFIG} ${DEBUG_SHARE})
+ file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share)
+ file(RENAME ${RELEASE_CONFIG} ${RELEASE_SHARE})
+
+ get_filename_component(DEBUG_CONFIG_DIR_NAME ${DEBUG_CONFIG} NAME)
+ string(TOLOWER "${DEBUG_CONFIG_DIR_NAME}" DEBUG_CONFIG_DIR_NAME)
+ if(${DEBUG_CONFIG_DIR_NAME} STREQUAL "cmake")
+ file(REMOVE_RECURSE ${DEBUG_CONFIG})
+ else()
+ get_filename_component(DEBUG_CONFIG_PARENT_DIR ${DEBUG_CONFIG} DIRECTORY)
+ get_filename_component(DEBUG_CONFIG_DIR_NAME ${DEBUG_CONFIG_PARENT_DIR} NAME)
+ string(TOLOWER "${DEBUG_CONFIG_DIR_NAME}" DEBUG_CONFIG_DIR_NAME)
+ if(${DEBUG_CONFIG_DIR_NAME} STREQUAL "cmake")
+ file(REMOVE_RECURSE ${DEBUG_CONFIG_PARENT_DIR})
+ endif()
+ endif()
+
+ get_filename_component(RELEASE_CONFIG_DIR_NAME ${RELEASE_CONFIG} NAME)
+ string(TOLOWER "${RELEASE_CONFIG_DIR_NAME}" RELEASE_CONFIG_DIR_NAME)
+ if(${RELEASE_CONFIG_DIR_NAME} STREQUAL "cmake")
+ file(REMOVE_RECURSE ${RELEASE_CONFIG})
+ else()
+ get_filename_component(RELEASE_CONFIG_PARENT_DIR ${RELEASE_CONFIG} DIRECTORY)
+ get_filename_component(RELEASE_CONFIG_DIR_NAME ${RELEASE_CONFIG_PARENT_DIR} NAME)
+ string(TOLOWER "${RELEASE_CONFIG_DIR_NAME}" RELEASE_CONFIG_DIR_NAME)
+ if(${RELEASE_CONFIG_DIR_NAME} STREQUAL "cmake")
+ file(REMOVE_RECURSE ${RELEASE_CONFIG_PARENT_DIR})
+ endif()
+ endif()
+ endif()
+
if(NOT EXISTS ${DEBUG_SHARE})
message(FATAL_ERROR "'${DEBUG_SHARE}' does not exist.")
endif()