]>
Commit | Line | Data |
---|---|---|
1e59de90 TL |
1 | vcpkg_fail_port_install(MESSAGE "${PORT} currently only supports x64-windows, x86-windows and Linux" ON_TARGET "UWP" "OSX" ON_ARCH "arm64") |
2 | ||
3 | if(EXISTS "${CURRENT_INSTALLED_DIR}/share/winpcap") | |
4 | message(FATAL_ERROR "FATAL ERROR: winpcap and libpcap are incompatible.") | |
5 | endif() | |
6 | ||
7 | if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") | |
8 | message( | |
9 | "libpcap currently requires the following libraries from the system package manager: | |
10 | flex | |
11 | libbison-dev | |
12 | These can be installed on Ubuntu systems via sudo apt install flex libbison-dev" | |
13 | ) | |
14 | endif() | |
15 | ||
16 | list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) | |
17 | ||
18 | vcpkg_download_distfile( | |
19 | SOURCE_ARCHIVE_PATH | |
20 | URLS http://www.tcpdump.org/release/libpcap-1.9.1.tar.gz | |
21 | FILENAME libpcap-1.9.1.tar.gz | |
22 | SHA512 ae0d6b0ad8253e7e059336c0f4ed3850d20d7d2f4dc1d942c2951f99a5443a690f0cc42c6f8fdc4a0ccb19e9e985192ba6f399c4bde2c7076e420f547fddfb08 | |
23 | ) | |
24 | ||
25 | vcpkg_extract_source_archive_ex( | |
26 | OUT_SOURCE_PATH SOURCE_PATH | |
27 | ARCHIVE ${SOURCE_ARCHIVE_PATH} | |
28 | REF 1.9.1 | |
29 | PATCHES | |
30 | 0001-fix-package-name.patch | |
31 | install-pc-on-msvc.patch | |
32 | add-disable-packet-option.patch | |
33 | ) | |
34 | ||
35 | # Only dynamic builds are currently supported on Windows | |
36 | if(VCPKG_TARGET_IS_WINDOWS) | |
37 | vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY) | |
38 | endif() | |
39 | ||
40 | vcpkg_find_acquire_program(BISON) | |
41 | get_filename_component(BISON_PATH ${BISON} DIRECTORY) | |
42 | vcpkg_add_to_path(${BISON_PATH}) | |
43 | vcpkg_find_acquire_program(FLEX) | |
44 | get_filename_component(FLEX_PATH ${FLEX} DIRECTORY) | |
45 | vcpkg_add_to_path(${FLEX_PATH}) | |
46 | ||
47 | vcpkg_configure_cmake( | |
48 | SOURCE_PATH ${SOURCE_PATH} | |
49 | PREFER_NINJA | |
50 | OPTIONS | |
51 | -DDISABLE_USB=ON | |
52 | -DDISABLE_NETMAP=ON | |
53 | -DDISABLE_BLUETOOTH=ON | |
54 | -DDISABLE_DBUS=ON | |
55 | -DDISABLE_RDMA=ON | |
56 | -DDISABLE_DAG=ON | |
57 | -DDISABLE_SEPTEL=ON | |
58 | -DDISABLE_SNF=ON | |
59 | -DDISABLE_TC=ON | |
60 | -DDISABLE_PACKET=ON | |
61 | -DENABLE_REMOTE=OFF | |
62 | ) | |
63 | ||
64 | vcpkg_install_cmake() | |
65 | file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) | |
66 | ||
67 | # On Windows 64-bit, libpcap 1.9.1 installs the libraries in a amd64 subdirectory of the usual directories | |
68 | if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") | |
69 | set(libsubdir "amd64") | |
70 | file(GLOB_RECURSE FILES_TO_MOVE ${CURRENT_PACKAGES_DIR}/lib/${libsubdir}/*) | |
71 | file(COPY ${FILES_TO_MOVE} DESTINATION ${CURRENT_PACKAGES_DIR}/lib) | |
72 | file(GLOB_RECURSE FILES_TO_MOVE ${CURRENT_PACKAGES_DIR}/debug/lib/${libsubdir}/*) | |
73 | file(COPY ${FILES_TO_MOVE} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib) | |
74 | file(GLOB_RECURSE FILES_TO_MOVE ${CURRENT_PACKAGES_DIR}/bin/${libsubdir}/*) | |
75 | file(COPY ${FILES_TO_MOVE} DESTINATION ${CURRENT_PACKAGES_DIR}/bin) | |
76 | file(GLOB_RECURSE FILES_TO_MOVE ${CURRENT_PACKAGES_DIR}/debug/bin/${libsubdir}/*) | |
77 | file(COPY ${FILES_TO_MOVE} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin) | |
78 | file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/lib/${libsubdir} | |
79 | ${CURRENT_PACKAGES_DIR}/debug/lib/${libsubdir} | |
80 | ${CURRENT_PACKAGES_DIR}/bin/${libsubdir} | |
81 | ${CURRENT_PACKAGES_DIR}/debug/bin/${libsubdir}) | |
82 | endif() | |
83 | ||
84 | # Even if compiled with BUILD_SHARED_LIBS=ON, pcap also install a pcap_static library | |
85 | if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) | |
86 | file(REMOVE ${CURRENT_PACKAGES_DIR}/lib/pcap_static.lib ${CURRENT_PACKAGES_DIR}/debug/lib/pcap_static.lib) | |
87 | endif() | |
88 | ||
89 | vcpkg_fixup_pkgconfig(SYSTEM_LIBRARIES ws2_32) | |
90 | ||
91 | if(VCPKG_LIBRARY_LINKAGE STREQUAL static) | |
92 | file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin) | |
93 | endif() | |
94 | file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR}/debug/share ${CURRENT_PACKAGES_DIR}/share/man) | |
95 |