diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e6aa9a0213..5d7c975740 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -757,9 +757,7 @@ Windows Build: - cmake -G "Visual Studio 17 2022" -A x64 -DENABLE_LTO=off .. - msbuild /verbosity:minimal /maxcpucount /property:Configuration=Debug Wireshark.sln - msbuild /verbosity:minimal /maxcpucount /property:Configuration=Debug test-programs.vcxproj - # - C:\Windows\py.exe -m pytest --disable-gui --build-type=Debug - - $dlls = Get-ChildItem "run\debug\*.exe", "run\debug\*.dll" - - foreach ($dll in $dlls) { dumpbin /dependents $dll } + - C:\Windows\py.exe -m pytest --disable-gui --build-type=Debug Windows Qt5 Build: diff --git a/CMakeLists.txt b/CMakeLists.txt index df1872586c..50d696e6e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2152,6 +2152,15 @@ if(USE_REPOSITORY) COMMAND_EXPAND_LISTS ) + add_custom_command(TARGET copy_cli_dlls PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "$,${PCRE2_DEBUG_DLL},${PCRE2_RELEASE_DLL}>" + "$,${PCRE2_DEBUG_PDB},${PCRE2_RELEASE_PDB}>" + "${_dll_output_dir}" + WORKING_DIRECTORY $,${PCRE2_DEBUG_DLL_DIR},${PCRE2_RELEASE_DLL_DIR}> + COMMAND_EXPAND_LISTS + ) + if (MSVC AND VLD_FOUND) add_custom_command(TARGET copy_cli_dlls PRE_BUILD COMMAND ${CMAKE_COMMAND} -E "$,copy_if_different,true>" @@ -2207,10 +2216,6 @@ if(USE_REPOSITORY) list (APPEND THIRD_PARTY_DLLS "${NGHTTP3_DLL_DIR}/${NGHTTP3_DLL}") list (APPEND THIRD_PARTY_PDBS "${NGHTTP3_DLL_DIR}/${NGHTTP3_PDB}") endif(NGHTTP3_FOUND) - if (PCRE2_FOUND) - list (APPEND THIRD_PARTY_DLLS "${PCRE2_DLL_DIR}/${PCRE2_DLL}") - list (APPEND THIRD_PARTY_PDBS "${PCRE2_DLL_DIR}/${PCRE2_PDB}") - endif(PCRE2_FOUND) if (SBC_FOUND) list (APPEND THIRD_PARTY_DLLS "${SBC_DLL_DIR}/${SBC_DLL}") endif(SBC_FOUND) diff --git a/cmake/modules/FindGLIB2.cmake b/cmake/modules/FindGLIB2.cmake index 79e8abd29a..6b3876b528 100644 --- a/cmake/modules/FindGLIB2.cmake +++ b/cmake/modules/FindGLIB2.cmake @@ -142,11 +142,6 @@ if( GLIB2_FOUND ) # "${GLIB2_DLL_DIR_RELEASE}/libffi.dll" "${GLIB2_DLL_DIR_RELEASE}/iconv-2.dll" "${GLIB2_DLL_DIR_RELEASE}/intl-8.dll" - "${GLIB2_DLL_DIR_RELEASE}/pcre.dll" - # "${GLIB2_DLL_DIR_RELEASE}/pcre16.dll" - # "${GLIB2_DLL_DIR_RELEASE}/pcre32.dll" - # "${GLIB2_DLL_DIR_RELEASE}/pcrecpp.dll" - # "${GLIB2_DLL_DIR_RELEASE}/pcreposix.dll" ) set ( GLIB2_DLLS_RELEASE ${_glib2_dlls_release} # We're storing filenames only. Should we use STRING instead? @@ -163,11 +158,6 @@ if( GLIB2_FOUND ) # "${GLIB2_DLL_DIR_DEBUG}/libffi.dll" "${GLIB2_DLL_DIR_DEBUG}/iconv-2.dll" "${GLIB2_DLL_DIR_DEBUG}/intl-8.dll" - "${GLIB2_DLL_DIR_DEBUG}/pcred.dll" - # "${GLIB2_DLL_DIR_DEBUG}/pcre16d.dll" - # "${GLIB2_DLL_DIR_DEBUG}/pcre32d.dll" - # "${GLIB2_DLL_DIR_DEBUG}/pcrecppd.dll" - # "${GLIB2_DLL_DIR_DEBUG}/pcreposixd.dll" ) set ( GLIB2_DLLS_DEBUG ${_glib2_dlls_debug} # We're storing filenames only. Should we use STRING instead? @@ -181,7 +171,6 @@ if( GLIB2_FOUND ) # "${GLIB2_DLL_DIR_RELEASE}/libcharset.pdb" # "${GLIB2_DLL_DIR_RELEASE}/libiconv.pdb" # "${GLIB2_DLL_DIR_RELEASE}/libintl.pdb" - "${GLIB2_DLL_DIR_RELEASE}/pcre.pdb" ) set ( GLIB2_PDBS_RELEASE ${_glib2_pdbs_release} CACHE FILEPATH "GLib2 debug release PDB list" @@ -193,7 +182,6 @@ if( GLIB2_FOUND ) # "${GLIB2_DLL_DIR_DEBUG}/libcharset.pdb" # "${GLIB2_DLL_DIR_DEBUG}/libiconv.pdb" # "${GLIB2_DLL_DIR_DEBUG}/libintl.pdb" - "${GLIB2_DLL_DIR_DEBUG}/pcre.pdb" ) set ( GLIB2_PDBS_DEBUG ${_glib2_pdbs_debug} CACHE FILEPATH "GLib2 debug debug PDB list" diff --git a/cmake/modules/FindPCRE2.cmake b/cmake/modules/FindPCRE2.cmake index fb9b827d24..a7d80792b5 100644 --- a/cmake/modules/FindPCRE2.cmake +++ b/cmake/modules/FindPCRE2.cmake @@ -1,17 +1,20 @@ # # - Find PCRE2 libraries # -# PCRE2_INCLUDE_DIRS - where to find PCRE2 headers. -# PCRE2_LIBRARIES - List of libraries when using PCRE2. -# PCRE2_FOUND - True if PCRE2 is found. -# PCRE2_DLL_DIR - (Windows) Path to the PCRE2 DLL -# PCRE2_DLL - (Windows) Name of the PCRE2 DLL +# PCRE2_INCLUDE_DIRS - where to find PCRE2 headers. +# PCRE2_LIBRARIES - List of libraries when using PCRE2. +# PCRE2_FOUND - True if PCRE2 is found. +# PCRE2_RELEASE_DLL_DIR - (Windows) Path to the PCRE2 release DLL +# PCRE2_RELEASE_DLL - (Windows) Name of the PCRE2 release DLL +# PCRE2_DEBUG_DLL_DIR - (Windows) Path to the PCRE2 debug DLL +# PCRE2_DEBUG_DLL - (Windows) Name of the PCRE2 debug DLL # Note that the "8" in "libpcre2-8" refers to "PCRE library version 2 with # support for 8-bit code units". include( FindWSWinLibs ) -FindWSWinLibs( "pcre2-.*" "PCRE2_HINTS" ) +# PCRE2 is included with GLib2 +FindWSWinLibs( "vcpkg-export-.*" "PCRE2_HINTS" ) if( NOT USE_REPOSITORY) find_package(PkgConfig QUIET) @@ -28,12 +31,23 @@ find_path(PCRE2_INCLUDE_DIR find_library(PCRE2_LIBRARY NAMES - "pcre2-8" + pcre2-8 HINTS ${PC_PCRE2_LIBRARY_DIRS} ${PCRE2_HINTS}/lib ) +if (USE_REPOSITORY) + find_library(PCRE2_DEBUG_LIBRARY + NAMES + pcre2-8d + HINTS + ${PCRE2_HINTS}/debug/lib + ) +else() + set (PCRE2_DEBUG_LIBRARY ${PCRE2_LIBRARY} CACHE FILEPATH "PCRE2 library") +endif() + include(FindPackageHandleStandardArgs) find_package_handle_standard_args(PCRE2 REQUIRED_VARS PCRE2_LIBRARY PCRE2_INCLUDE_DIR @@ -42,27 +56,45 @@ find_package_handle_standard_args(PCRE2 if(PCRE2_FOUND) set(PCRE2_LIBRARIES ${PCRE2_LIBRARY}) + set(PCRE2_DEBUG_LIBRARIES ${PCRE2_DEBUG_LIBRARY}) set(PCRE2_INCLUDE_DIRS ${PCRE2_INCLUDE_DIR}) - if (WIN32) - set (PCRE2_DLL_DIR "${PCRE2_HINTS}/bin" - CACHE PATH "Path to PCRE2 DLL" - ) - file(GLOB _pcre2_dll RELATIVE "${PCRE2_DLL_DIR}" - "${PCRE2_DLL_DIR}/pcre2-8*.dll" - ) - set (PCRE2_DLL ${_pcre2_dll} - # We're storing filenames only. Should we use STRING instead? - CACHE FILEPATH "PCRE2 DLL file name" - ) - file(GLOB _pcre2_pdb RELATIVE "${PCRE2_DLL_DIR}" - "${PCRE2_DLL_DIR}/pcre2-8*.pdb" - ) - set (PCRE2_PDB ${_pcre2_pdb} - CACHE FILEPATH "PCRE2 PDB file name" - ) - mark_as_advanced(PCRE2_DLL_DIR PCRE2_DLL PCRE2_PDB) - endif() - else() + if (USE_REPOSITORY) + set (PCRE2_RELEASE_DLL_DIR "${PCRE2_HINTS}/bin" + CACHE PATH "Path to PCRE2 release DLL" + ) + file(GLOB _pcre2_release_dll RELATIVE "${PCRE2_RELEASE_DLL_DIR}" + "${PCRE2_RELEASE_DLL_DIR}/pcre2-8*.dll" + ) + set (PCRE2_RELEASE_DLL ${_pcre2_release_dll} + # We're storing filenames only. Should we use STRING instead? + CACHE FILEPATH "PCRE2 release DLL file name" + ) + file(GLOB _pcre2_release_pdb RELATIVE "${PCRE2_RELEASE_DLL_DIR}" + "${PCRE2_RELEASE_DLL_DIR}/pcre2-8*.pdb" + ) + set (PCRE2_RELEASE_PDB ${_pcre2_release_pdb} + CACHE FILEPATH "PCRE2 release PDB file name" + ) + + set (PCRE2_DEBUG_DLL_DIR "${PCRE2_HINTS}/debug/bin" + CACHE PATH "Path to PCRE2 debug DLL" + ) + file(GLOB _pcre2_debug_dll RELATIVE "${PCRE2_DEBUG_DLL_DIR}" + "${PCRE2_DEBUG_DLL_DIR}/pcre2-8d*.dll" + ) + set (PCRE2_DEBUG_DLL ${_pcre2_debug_dll} + # We're storing filenames only. Should we use STRING instead? + CACHE FILEPATH "PCRE2 debug DLL file name" + ) + file(GLOB _pcre2_debug_pdb RELATIVE "${PCRE2_DEBUG_DLL_DIR}" + "${PCRE2_DEBUG_DLL_DIR}/pcre2-8d*.pdb" + ) + set (PCRE2_DEBUG_PDB ${_pcre2_debug_pdb} + CACHE FILEPATH "PCRE2 debug PDB file name" + ) + mark_as_advanced(PCRE2_RELEASE_DLL_DIR PCRE2_RELEASE_DLL PCRE2_PDB PCRE2_DEBUG_DLL_DIR PCRE2_DEBUG_DLL) + endif() +else() set(PCRE2_LIBRARIES) set(PCRE2_INCLUDE_DIRS) endif() diff --git a/epan/wslua/lrexlib/CMakeLists.txt b/epan/wslua/lrexlib/CMakeLists.txt index da4654cea7..2f7231efe3 100644 --- a/epan/wslua/lrexlib/CMakeLists.txt +++ b/epan/wslua/lrexlib/CMakeLists.txt @@ -9,7 +9,7 @@ add_library(lrexlib STATIC ${REX_SRC}) target_link_libraries(lrexlib PRIVATE ${LUA_LIBRARIES} - ${PCRE2_LIBRARIES} + $,${PCRE2_DEBUG_LIBRARIES},${PCRE2_LIBRARIES}> ) target_include_directories(lrexlib SYSTEM PRIVATE diff --git a/tools/win-setup.ps1 b/tools/win-setup.ps1 index 87f0ccef84..be5830e272 100644 --- a/tools/win-setup.ps1 +++ b/tools/win-setup.ps1 @@ -89,7 +89,6 @@ $X64Archives = @{ "nghttp2/nghttp2-1.57.0-1-x64-windows-ws.zip" = "94afb12d63d0830dc25e5605c30a6a91fe1f7284c1e6ddfff177d961d5b52bbd"; "nghttp3/nghttp3-1.0.0-1-x64-windows-ws.zip" = "219a0024b79627c00fa1c134085678edbfac72b7b5eaf45db84f36e2553e1638"; "opus/opus-1.3.1-3-win64ws.zip" = "1f7a55a6d2d7215dffa4a43bca8ca05024bd4ba1ac3d0d0c405fd38b09cc2205"; - "pcre2/pcre2-10.40-1-win64ws.zip" = "17eee615990b23bc859a862c19f5ac10c61776587603bc452285abe073a0fad9"; "sbc/sbc-2.0-1-x64-windows-ws.zip" = "d1a58f977dcffa168b11b280bd10228191582d263b7c901e50cde7c1c43d9c04"; "snappy/snappy-1.1.9-1-win64ws.zip" = "fa907724be019bcc55d27ebe88257ba8898b5c38b719099b8164ac78600d81cc"; "spandsp/spandsp-0.0.6-5-x64-windows-ws.zip" = "cbb18310876ec6f081662253a2d37f5174ac60c58b0b7cd6759852fbcfaa7d7f"; @@ -117,7 +116,6 @@ $Arm64Archives = @{ "nghttp2/nghttp2-1.57.0-1-arm64-windows-ws.zip" = "3f264dc0ccb48850e07ec136dede5b0ad0e39e31ff2d2e6ab215348ce2d9e570"; "nghttp3/nghttp3-1.0.0-1-arm64-windows-ws.zip" = "cf53090b514d3193d75b81562235ae1e7a8a9d462e37f515f9a9a29c6b469236"; "opus/opus-1.4-1-win64armws.zip" = "51d10381360d5691b2022dde5b284266d9b0ce9a3c9bd7e86f9a4ff1a4f7d904"; - "pcre2/pcre2-10.40-1-win64armws.zip" = "e8fc7542845900e7dbecfa4a10d7ec17edf72bc0e8d433268bee111f1d4947d3"; "sbc/sbc-2.0-1-arm64-windows-ws.zip" = "83cfe4a8b6fa5bae253ecacc1c02e6e4c61b4ad9ad0e5e63f0f30422fb6eac96"; "snappy/snappy-1.1.9-1-win64armws.zip" = "f3f6ec841024d18df06934ff70f44068a4e8f1008eca1f363257645647f74d4a"; "spandsp/spandsp-0.0.6-5-arm64-windows-ws.zip" = "fdf01e3c33e739ff9399b7d42cd8230c97cb27ce51865a0f06285a8f68206b6c"; diff --git a/wsutil/CMakeLists.txt b/wsutil/CMakeLists.txt index 89ae745239..d04e3a13d4 100644 --- a/wsutil/CMakeLists.txt +++ b/wsutil/CMakeLists.txt @@ -372,7 +372,7 @@ target_link_libraries(wsutil ${GCRYPT_LIBRARIES} ${GNUTLS_LIBRARIES} ${ZLIB_LIBRARIES} - ${PCRE2_LIBRARIES} + $,${PCRE2_DEBUG_LIBRARIES},${PCRE2_LIBRARIES}> ${WIN_IPHLPAPI_LIBRARY} ${WIN_WS2_32_LIBRARY} ) @@ -426,7 +426,7 @@ target_link_libraries(wsutil_static ${GCRYPT_LIBRARIES} ${GNUTLS_LIBRARIES} ${ZLIB_LIBRARIES} - ${PCRE2_LIBRARIES} + $,${PCRE2_DEBUG_LIBRARIES},${PCRE2_LIBRARIES}> ${WIN_IPHLPAPI_LIBRARY} ${WIN_WS2_32_LIBRARY} )