aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/winpcap/portfile.cmake
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/winpcap/portfile.cmake
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/winpcap/portfile.cmake')
-rw-r--r--vcpkg/ports/winpcap/portfile.cmake134
1 files changed, 134 insertions, 0 deletions
diff --git a/vcpkg/ports/winpcap/portfile.cmake b/vcpkg/ports/winpcap/portfile.cmake
new file mode 100644
index 0000000..f693025
--- /dev/null
+++ b/vcpkg/ports/winpcap/portfile.cmake
@@ -0,0 +1,134 @@
+if(EXISTS "${CURRENT_INSTALLED_DIR}/share/libpcap")
+ message(FATAL_ERROR "FATAL ERROR: libpcap and winpcap are incompatible.")
+endif()
+
+set(WINPCAP_VERSION 4_1_3)
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://www.winpcap.org/install/bin/WpcapSrc_${WINPCAP_VERSION}.zip"
+ FILENAME "WpcapSrc_${WINPCAP_VERSION}.zip"
+ SHA512 89a5109ed17f8069f7a43497f6fec817c58620dbc5fa506e52069b9113c5bc13f69c307affe611281cb727cfa0f8529d07044d41427e350b24468ccc89a87f33
+)
+
+if(VCPKG_CRT_LINKAGE STREQUAL "static")
+ set(CRT_LINKAGE "MT")
+elseif(VCPKG_CRT_LINKAGE STREQUAL "dynamic")
+ set(CRT_LINKAGE "MD")
+endif()
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ set(LIBRARY_LINKAGE "4")
+ set(lib_type StaticLibrary)
+elseif(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
+ set(LIBRARY_LINKAGE "2")
+ set(lib_type DynamicLibrary)
+endif()
+
+configure_file("${CMAKE_CURRENT_LIST_DIR}/packetNtx.patch.in" "${CURRENT_BUILDTREES_DIR}/src/packetNtx.patch" @ONLY)
+configure_file("${CMAKE_CURRENT_LIST_DIR}/wpcap.patch.in" "${CURRENT_BUILDTREES_DIR}/src/wpcap.patch" @ONLY)
+
+vcpkg_extract_source_archive(
+ SOURCE_PATH
+ ARCHIVE "${ARCHIVE}"
+ SOURCE_BASE ${WINPCAP_VERSION}
+ PATCHES
+ "${CURRENT_BUILDTREES_DIR}/src/packetNtx.patch"
+ "${CURRENT_BUILDTREES_DIR}/src/wpcap.patch"
+ "bison-flex.patch"
+)
+
+file(REMOVE_RECURSE "${SOURCE_PATH}/wpcap/libpcap/rpcapd/win32-pthreads") # avoid copying pthreadVC.lib; TODO: maybe should also use libpcap headers instead of this vendored stuff
+
+vcpkg_replace_string("${SOURCE_PATH}/wpcap/PRJ/wpcap.vcproj" "DebugInformationFormat=\"4\"" "")
+vcpkg_replace_string("${SOURCE_PATH}/wpcap/PRJ/wpcap.vcproj" "DebugInformationFormat=\"3\"" "")
+
+if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
+ set(PLATFORM Win32)
+elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ set(PLATFORM x64)
+endif()
+
+vcpkg_find_acquire_program(BISON)
+cmake_path(GET BISON PARENT_PATH BISON_DIR)
+vcpkg_add_to_path("${BISON_DIR}")
+
+vcpkg_find_acquire_program(FLEX)
+cmake_path(GET FLEX PARENT_PATH FLEX_DIR)
+vcpkg_add_to_path("${FLEX_DIR}")
+
+vcpkg_execute_required_process(
+ COMMAND "devenv.exe"
+ "Packet.sln"
+ /Upgrade
+ WORKING_DIRECTORY "${SOURCE_PATH}/packetNtx/Dll/Project"
+ LOGNAME upgrade-Packet-${TARGET_TRIPLET}
+)
+
+vcpkg_msbuild_install(
+ SOURCE_PATH "${SOURCE_PATH}"
+ PROJECT_SUBPATH "packetNtx/Dll/Project/Packet.sln"
+ RELEASE_CONFIGURATION "Release"
+ DEBUG_CONFIGURATION "Debug"
+ PLATFORM ${PLATFORM}
+)
+
+message(STATUS "Building Scanner/Parser")
+
+vcpkg_execute_required_process(
+ COMMAND "${SOURCE_PATH}/wpcap/PRJ/build_scanner_parser.bat"
+ WORKING_DIRECTORY "${SOURCE_PATH}/wpcap/PRJ"
+ LOGNAME build_scanner_parser-${TARGET_TRIPLET}
+)
+
+message(STATUS "Building wpcap")
+
+vcpkg_execute_required_process(
+ COMMAND "devenv.exe"
+ "wpcap.sln"
+ /Upgrade
+ WORKING_DIRECTORY "${SOURCE_PATH}/wpcap/PRJ"
+ LOGNAME upgrade-wpcap-${TARGET_TRIPLET}
+)
+
+configure_file("${CURRENT_PORT_DIR}/wpcap.vcxproj.in" "${SOURCE_PATH}/wpcap/PRJ/wpcap.vcxproj" @ONLY)
+
+
+vcpkg_msbuild_install(
+ SOURCE_PATH "${SOURCE_PATH}"
+ PROJECT_SUBPATH "wpcap/PRJ/wpcap.sln"
+ RELEASE_CONFIGURATION "Release - No AirPcap"
+ DEBUG_CONFIGURATION "Debug - No AirPcap"
+ PLATFORM ${PLATFORM}
+)
+
+vcpkg_execute_required_process(
+ COMMAND "${SOURCE_PATH}/create_include.bat"
+ WORKING_DIRECTORY "${SOURCE_PATH}"
+ LOGNAME create_include-${TARGET_TRIPLET}
+)
+
+file(INSTALL
+ "${SOURCE_PATH}/WpdPack/Include/bittypes.h"
+ "${SOURCE_PATH}/WpdPack/Include/ip6_misc.h"
+ "${SOURCE_PATH}/WpdPack/Include/Packet32.h"
+ "${SOURCE_PATH}/WpdPack/Include/pcap.h"
+ "${SOURCE_PATH}/WpdPack/Include/pcap-bpf.h"
+ "${SOURCE_PATH}/WpdPack/Include/pcap-namedb.h"
+ "${SOURCE_PATH}/WpdPack/Include/pcap-stdinc.h"
+ "${SOURCE_PATH}/WpdPack/Include/remote-ext.h"
+ "${SOURCE_PATH}/WpdPack/Include/Win32-Extensions.h"
+ DESTINATION "${CURRENT_PACKAGES_DIR}/include")
+
+file(INSTALL
+ "${SOURCE_PATH}/WpdPack/Include/pcap/bluetooth.h"
+ "${SOURCE_PATH}/WpdPack/Include/pcap/bpf.h"
+ "${SOURCE_PATH}/WpdPack/Include/pcap/namedb.h"
+ "${SOURCE_PATH}/WpdPack/Include/pcap/pcap.h"
+ "${SOURCE_PATH}/WpdPack/Include/pcap/sll.h"
+ "${SOURCE_PATH}/WpdPack/Include/pcap/usb.h"
+ "${SOURCE_PATH}/WpdPack/Include/pcap/vlan.h"
+ DESTINATION "${CURRENT_PACKAGES_DIR}/include/pcap")
+
+vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/pcap-stdinc.h" "#define inline __inline" "#ifndef __cplusplus\n#define inline __inline\n#endif")
+
+file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" "The latest license is available in https://www.winpcap.org/misc/copyright.htm and in the header files.")