win32: fix ethernet and bip6 (#774)

Switch from WinPcap ton npcap.
Include npcap sdk in cmake
add libs for ipv6 in cmake
fix ethernet uninitialized var
This commit is contained in:
Patrick Grimm
2024-10-04 20:46:34 +02:00
committed by GitHub
parent 442f0bdf1c
commit 90dcd9dca1
3 changed files with 202 additions and 53 deletions
+31 -3
View File
@@ -673,8 +673,8 @@ elseif(WIN32)
target_link_libraries(${PROJECT_NAME} PRIVATE
winmm
$<$<BOOL:${BACDL_BIP}>:ws2_32>
$<$<BOOL:${BACDL_BIP}>:iphlpapi>)
$<$<BOOL:${BACDL_BIP} OR BOOL:${BACDL_BIP6}>:ws2_32>
$<$<BOOL:${BACDL_BIP} OR BOOL:${BACDL_BIP6}>:iphlpapi>)
target_sources(${PROJECT_NAME} PRIVATE
ports/win32/bacport.h
@@ -683,10 +683,38 @@ elseif(WIN32)
ports/win32/datetime-init.c
$<$<BOOL:${BACDL_MSTP}>:ports/win32/dlmstp.c>
# ports/win32/dlmstp-mm.c
$<$<BOOL:${BACDL_ETHERNET}>:ports/win32/ethernet.c>
ports/win32/mstimer-init.c
$<$<BOOL:${BACDL_MSTP}>:ports/win32/rs485.c>
$<$<BOOL:${BACDL_MSTP}>:ports/win32/rs485.h>)
if(BACDL_ETHERNET)
include(ExternalProject)
set(PCAP_LIB_DIR ${CMAKE_CURRENT_BINARY_DIR}/npcap/Lib/x64)
set(PCAP_LIB_WPCAP ${PCAP_LIB_DIR}/wpcap.lib)
set(PCAP_LIB_PACKET ${PCAP_LIB_DIR}/Packet.lib)
set(PCAP_INCLUDE ${CMAKE_CURRENT_BINARY_DIR}/npcap/Include)
message(STATUS "BACNET: npcap Include:..................\"${PCAP_INCLUDE}\"")
message(STATUS "BACNET: npcap Lib wpcap:................\"${PCAP_LIB_WPCAP}\"")
message(STATUS "BACNET: npcap Lib Packet:...............\"${PCAP_LIB_PACKET}\"")
ExternalProject_Add(npcap
URL https://npcap.com/dist/npcap-sdk-1.13.zip
URL_HASH SHA1=8d5bb6f3adb813374402344a8d2a12b9cb725197
DOWNLOAD_EXTRACT_TIMESTAMP true
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/npcap
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/npcap/Lib/x64
UPDATE_COMMAND ""
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
BUILD_BYPRODUCTS ${PCAP_LIB_WPCAP}
BUILD_BYPRODUCTS ${PCAP_LIB_PACKET})
include_directories(${PCAP_INCLUDE})
target_link_libraries(${PROJECT_NAME} PRIVATE ${PCAP_LIB_WPCAP})
target_link_libraries(${PROJECT_NAME} PRIVATE ${PCAP_LIB_PACKET})
target_sources(${PROJECT_NAME} PRIVATE
ports/win32/ethernet.c)
endif()
elseif(APPLE)
message(STATUS "BACNET: building for APPLE")
set(BACNET_PORT_DIRECTORY_PATH ${CMAKE_CURRENT_LIST_DIR}/ports/bsd)