diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/libpcap | |
Diffstat (limited to 'vcpkg/ports/libpcap')
| -rw-r--r-- | vcpkg/ports/libpcap/install.diff | 53 | ||||
| -rw-r--r-- | vcpkg/ports/libpcap/mingw-dynamic-libname.diff | 15 | ||||
| -rw-r--r-- | vcpkg/ports/libpcap/portfile.cmake | 66 | ||||
| -rw-r--r-- | vcpkg/ports/libpcap/vcpkg.json | 14 |
4 files changed, 148 insertions, 0 deletions
diff --git a/vcpkg/ports/libpcap/install.diff b/vcpkg/ports/libpcap/install.diff new file mode 100644 index 0000000..839ada5 --- /dev/null +++ b/vcpkg/ports/libpcap/install.diff @@ -0,0 +1,53 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9012ef4..88179b0 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -798,6 +798,7 @@ if(WIN32) + cmake_pop_check_state() + if(LIBWS2_32_HAS_GETADDRINFO) + set(PCAP_LINK_LIBRARIES ws2_32 ${PCAP_LINK_LIBRARIES}) ++ set(LIBS "-lws2_32 ${LIBS}") + else(LIBWS2_32_HAS_GETADDRINFO) + message(FATAL_ERROR "getaddrinfo is required, but wasn't found") + endif(LIBWS2_32_HAS_GETADDRINFO) +@@ -3405,7 +3406,8 @@ set(MANMISC_EXPAND + ) + + if(BUILD_SHARED_LIBS) +- set(LIBRARIES_TO_INSTALL "${LIBRARY_NAME}" "${LIBRARY_NAME_STATIC}") ++ set(LIBRARIES_TO_INSTALL "${LIBRARY_NAME}") ++ set_target_properties(${LIBRARY_NAME_STATIC} PROPERTIES EXCLUDE_FROM_ALL 1) + else(BUILD_SHARED_LIBS) + set(LIBRARIES_TO_INSTALL "${LIBRARY_NAME_STATIC}") + endif(BUILD_SHARED_LIBS) +@@ -3416,7 +3418,7 @@ if(WIN32 OR CYGWIN OR MSYS) + # the target is Windows; would there ever be a case where + # CYGWIN or MSYS are set but WIN32 *isn't* set? + # +- if(MSVC AND CMAKE_SIZEOF_VOID_P EQUAL 8) ++ if(0) + # + # Install 64-bit code built with MSVC in the x64 subdirectories, + # as that's where it expects it to be. +@@ -3463,7 +3465,10 @@ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pcap-namedb.h DESTINATION ${CMAKE_INST + + # On UN*X, and on Windows when not using MSVC, generate libpcap.pc and + # pcap-config and process man pages and arrange that they be installed. +-if(NOT MSVC) ++if(1) ++ if(MSVC AND NOT BUILD_SHARED_LIBS) ++ string(APPEND PACKAGE_NAME "_static") ++ endif() + set(prefix ${CMAKE_INSTALL_PREFIX}) + set(exec_prefix "\${prefix}") + set(includedir "\${prefix}/include") +@@ -3533,8 +3538,8 @@ if(NOT MSVC) + endif() + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/pcap-config.in ${CMAKE_CURRENT_BINARY_DIR}/pcap-config @ONLY) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpcap.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libpcap.pc @ONLY) +- install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/pcap-config DESTINATION bin) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpcap.pc DESTINATION lib/pkgconfig) ++elseif(0) + + # + # Man pages. diff --git a/vcpkg/ports/libpcap/mingw-dynamic-libname.diff b/vcpkg/ports/libpcap/mingw-dynamic-libname.diff new file mode 100644 index 0000000..2a0b61a --- /dev/null +++ b/vcpkg/ports/libpcap/mingw-dynamic-libname.diff @@ -0,0 +1,15 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 88179b0..51a2732 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -3222,10 +3222,6 @@ if(WIN32) + # For compatibility, build the shared library without the "lib" prefix on + # MinGW as well. + # +- set_target_properties(${LIBRARY_NAME} PROPERTIES +- PREFIX "" +- OUTPUT_NAME "${LIBRARY_NAME}" +- ) + set_target_properties(${LIBRARY_NAME}_static PROPERTIES + OUTPUT_NAME "${LIBRARY_NAME}" + ) diff --git a/vcpkg/ports/libpcap/portfile.cmake b/vcpkg/ports/libpcap/portfile.cmake new file mode 100644 index 0000000..3607218 --- /dev/null +++ b/vcpkg/ports/libpcap/portfile.cmake @@ -0,0 +1,66 @@ +if(EXISTS "${CURRENT_INSTALLED_DIR}/share/winpcap") + message(FATAL_ERROR "FATAL ERROR: winpcap and libpcap are incompatible.") +endif() + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO the-tcpdump-group/libpcap + REF "libpcap-${VERSION}" + SHA512 bb8ba3a589425d71531312285a3c7ded4abdff5ea157b88195e06a2b4f8c93b4db0bca122e9ac853cff14cd16e9519dca30b6bdf0311e7749038fdce57325726 + HEAD_REF master + PATCHES + install.diff + mingw-dynamic-libname.diff +) + +vcpkg_find_acquire_program(BISON) +vcpkg_find_acquire_program(FLEX) + +string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" USE_STATIC_RT) + +SET(options "") +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_CMAKE_CONFIGURE_OPTIONS MATCHES "Packet_ROOT") + list(APPEND options "-DPCAP_TYPE=null") + message(STATUS [[Attention: + +This build does not include packet capture capabilities. +In order to enable such capabilities, install the Npcap SDK or the WinPcap SDK, +and pass '-DPacket_ROOT=<path of SDK>' via VCPKG_CMAKE_CONFIGURE_OPTIONS +in a custom triplet file. +]]) +endif() + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + ${options} + -DBUILD_WITH_LIBNL=OFF + -DDISABLE_AIRPCAP=ON + -DDISABLE_BLUETOOTH=ON + -DDISABLE_DAG=ON + -DDISABLE_DBUS=ON + -DDISABLE_DPDK=ON + -DDISABLE_NETMAP=ON + -DDISABLE_RDMA=ON + -DDISABLE_SEPTEL=ON + -DDISABLE_SNF=ON + -DDISABLE_TC=ON + -DENABLE_REMOTE=OFF + "-DLEX_EXECUTABLE=${FLEX}" + "-DYACC_EXECUTABLE=${BISON}" + -DUSE_STATIC_RT=${USE_STATIC_RT} + MAYBE_UNUSED_VARIABLES + BUILD_WITH_LIBNL # linux only + CMAKE_DISABLE_FIND_PACKAGE_Packet # windows only +) + +vcpkg_cmake_install() +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/debug/share") +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") +endif() + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/vcpkg/ports/libpcap/vcpkg.json b/vcpkg/ports/libpcap/vcpkg.json new file mode 100644 index 0000000..1ec9cd1 --- /dev/null +++ b/vcpkg/ports/libpcap/vcpkg.json @@ -0,0 +1,14 @@ +{ + "name": "libpcap", + "version-semver": "1.10.5", + "description": "A portable C/C++ library for network traffic capture", + "homepage": "https://www.tcpdump.org/", + "license": "BSD-3-Clause", + "supports": "!uwp", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + } + ] +} |