aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libuv
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/libuv')
-rw-r--r--vcpkg/ports/libuv/fix-build-type.patch44
-rw-r--r--vcpkg/ports/libuv/portfile.cmake40
-rw-r--r--vcpkg/ports/libuv/ssize_t.patch14
-rw-r--r--vcpkg/ports/libuv/usage4
-rw-r--r--vcpkg/ports/libuv/vcpkg.json18
5 files changed, 120 insertions, 0 deletions
diff --git a/vcpkg/ports/libuv/fix-build-type.patch b/vcpkg/ports/libuv/fix-build-type.patch
new file mode 100644
index 0000000..f6ef653
--- /dev/null
+++ b/vcpkg/ports/libuv/fix-build-type.patch
@@ -0,0 +1,44 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 5e8e016..b3c3f18 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -465,7 +465,7 @@ if(LIBUV_BUILD_SHARED)
+ endif()
+ target_link_libraries(uv ${uv_libraries})
+ set_target_properties(uv PROPERTIES OUTPUT_NAME "uv")
+-endif()
++else()
+
+ add_library(uv_a STATIC ${uv_sources})
+ target_compile_definitions(uv_a PRIVATE ${uv_defines})
+@@ -485,6 +485,7 @@ set_target_properties(uv_a PROPERTIES OUTPUT_NAME "uv")
+ if(WIN32)
+ set_target_properties(uv_a PROPERTIES PREFIX "lib")
+ endif()
++endif()
+
+ if(LIBUV_BUILD_TESTS)
+ # Small hack: use ${uv_test_sources} now to get the runner skeleton,
+@@ -755,10 +756,6 @@ configure_file(libuv-static.pc.in libuv-static.pc @ONLY)
+ install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+ install(FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR})
+ install(FILES LICENSE-extra DESTINATION ${CMAKE_INSTALL_DOCDIR})
+-install(FILES ${PROJECT_BINARY_DIR}/libuv-static.pc
+- DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+-install(TARGETS uv_a EXPORT libuvConfig
+- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ install(EXPORT libuvConfig
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libuv
+ NAMESPACE libuv::)
+@@ -775,6 +772,11 @@ if(LIBUV_BUILD_SHARED)
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
++else()
++install(FILES ${PROJECT_BINARY_DIR}/libuv-static.pc
++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
++install(TARGETS uv_a EXPORT libuvConfig
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ endif()
+
+ if(MSVC)
diff --git a/vcpkg/ports/libuv/portfile.cmake b/vcpkg/ports/libuv/portfile.cmake
new file mode 100644
index 0000000..297d052
--- /dev/null
+++ b/vcpkg/ports/libuv/portfile.cmake
@@ -0,0 +1,40 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO libuv/libuv
+ REF "v${VERSION}"
+ SHA512 cf3ca916fc3a762a194dac86718a5a7fe24f230e34172a48f9b3401ad72fbc1cf21b46ceaba956cdf6783d323e518d40f8632fff965943869819a1c26992a3c1
+ HEAD_REF v1.x
+ PATCHES
+ fix-build-type.patch
+ ssize_t.patch
+)
+
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" LIBUV_BUILD_SHARED)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DLIBUV_BUILD_TESTS=OFF
+ -DLIBUV_BUILD_BENCH=OFF
+ -DLIBUV_BUILD_SHARED=${LIBUV_BUILD_SHARED}
+ -DQEMU=OFF
+ -DASAN=OFF
+ -DTSAN=OFF
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/libuv)
+vcpkg_fixup_pkgconfig()
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/uv.h" "defined(USING_UV_SHARED)" "1")
+else()
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/uv.h" "defined(USING_UV_SHARED)" "0")
+endif()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share" "${CURRENT_PACKAGES_DIR}/debug/include")
+
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
diff --git a/vcpkg/ports/libuv/ssize_t.patch b/vcpkg/ports/libuv/ssize_t.patch
new file mode 100644
index 0000000..aae8d66
--- /dev/null
+++ b/vcpkg/ports/libuv/ssize_t.patch
@@ -0,0 +1,14 @@
+diff --git a/include/uv/win.h b/include/uv/win.h
+index 12ac53b4..6e1abd5b 100644
+--- a/include/uv/win.h
++++ b/include/uv/win.h
+@@ -24,7 +24,9 @@
+ #endif
+
+ #if !defined(_SSIZE_T_) && !defined(_SSIZE_T_DEFINED)
++# ifndef ssize_t
+ typedef intptr_t ssize_t;
++# endif
+ # define SSIZE_MAX INTPTR_MAX
+ # define _SSIZE_T_
+ # define _SSIZE_T_DEFINED
diff --git a/vcpkg/ports/libuv/usage b/vcpkg/ports/libuv/usage
new file mode 100644
index 0000000..60de86a
--- /dev/null
+++ b/vcpkg/ports/libuv/usage
@@ -0,0 +1,4 @@
+libuv provides CMake targets:
+
+ find_package(libuv CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE $<IF:$<TARGET_EXISTS:libuv::uv_a>,libuv::uv_a,libuv::uv>)
diff --git a/vcpkg/ports/libuv/vcpkg.json b/vcpkg/ports/libuv/vcpkg.json
new file mode 100644
index 0000000..ec74ccc
--- /dev/null
+++ b/vcpkg/ports/libuv/vcpkg.json
@@ -0,0 +1,18 @@
+{
+ "name": "libuv",
+ "version-semver": "1.51.0",
+ "description": "libuv is a multi-platform support library with a focus on asynchronous I/O.",
+ "homepage": "https://github.com/libuv/libuv",
+ "license": "BSD-3-Clause",
+ "supports": "!uwp",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ]
+}