# CMakeLists.txt # # Wireshark - Network traffic analyzer # By Gerald Combs # Copyright 1998 Gerald Combs # # SPDX-License-Identifier: GPL-2.0-or-later # if (HAVE_HFI_SECTION_INIT) add_definitions( -DHAVE_HFI_SECTION_INIT ) endif() add_definitions( ${LIBXML2_DEFINITIONS} ${KERBEROS_DEFINITIONS} ) add_subdirectory(crypt) add_subdirectory(dfilter) add_subdirectory(dissectors) add_subdirectory(ftypes) if(LUA_FOUND) add_subdirectory(wslua) endif() add_custom_command( OUTPUT ps.c COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/rdps.py ${CMAKE_CURRENT_SOURCE_DIR}/print.ps ps.c DEPENDS ${CMAKE_SOURCE_DIR}/tools/rdps.py ${CMAKE_CURRENT_SOURCE_DIR}/print.ps ) set(LIBWIRESHARK_PUBLIC_HEADERS addr_resolv.h address.h address_types.h afn.h aftypes.h app_mem_usage.h arcnet_pids.h arptypes.h asn1.h ax25_pids.h bridged_pids.h capture_dissectors.h charsets.h chdlctypes.h cisco_pid.h color_filters.h column.h column-info.h column-utils.h conversation.h conversation_debug.h conversation_table.h conv_id.h crc10-tvb.h crc16-tvb.h crc32-tvb.h crc6-tvb.h crc8-tvb.h decode_as.h diam_dict.h disabled_protos.h conversation_filter.h dccpservicecodes.h dtd.h dtd_parse.h dvb_chartbl.h eap.h eapol_keydes_types.h epan.h epan_dissect.h etypes.h ex-opt.h except.h exceptions.h expert.h export_object.h exported_pdu.h fifo_string_cache.h filter_expressions.h follow.h frame_data.h frame_data_sequence.h funnel.h #geoip_db.h golay.h guid-utils.h iana_charsets.h iax2_codec_type.h in_cksum.h introspection.h iana-ip.h ip_opts.h ipproto.h lapd_sapi.h llcsaps.h maxmind_db.h media_params.h next_tvb.h nghttp2_hd_huffman.h nlpid.h oids.h osi-utils.h oui.h packet.h packet_info.h params.h pci-ids.h plugin_if.h ppptypes.h print.h print_stream.h prefs.h prefs-int.h proto.h proto_data.h ps.h ptvcursor.h range.h reassemble.h reedsolomon.h register.h req_resp_hdrs.h rtd_table.h rtp_pt.h sctpppids.h secrets.h show_exception.h slow_protocol_subtypes.h sminmpec.h srt_table.h stat_tap_ui.h stat_groups.h stats_tree.h stats_tree_priv.h stream.h strutil.h t35.h tap.h tap-voip.h timestamp.h timestats.h tfs.h to_str.h tvbparse.h tvbuff.h tvbuff-int.h uat.h uat-int.h unit_strings.h value_string.h wmem_scopes.h wscbor.h x264_prt_id.h xdlc.h ) set(LIBWIRESHARK_HEADER_FILES ${LIBWIRESHARK_PUBLIC_HEADERS} ) set(LIBWIRESHARK_NONGENERATED_FILES addr_resolv.c address_types.c afn.c aftypes.c app_mem_usage.c asn1.c capture_dissectors.c charsets.c color_filters.c column.c column-utils.c conversation.c conversation_table.c crc10-tvb.c crc16-tvb.c crc32-tvb.c crc6-tvb.c crc8-tvb.c decode_as.c disabled_protos.c conversation_filter.c dvb_chartbl.c enterprises.c epan.c ex-opt.c except.c expert.c export_object.c exported_pdu.c fifo_string_cache.c filter_expressions.c follow.c frame_data.c frame_data_sequence.c funnel.c #geoip_db.c golay.c guid-utils.c iana_charsets.c iana-ip.c in_cksum.c introspection.c ipproto.c manuf.c maxmind_db.c media_params.c next_tvb.c nghttp2_hd_huffman_data.c oids.c osi-utils.c packet.c pci-ids.c plugin_if.c print.c print_stream.c prefs.c proto.c proto_data.c range.c reassemble.c reedsolomon.c register.c req_resp_hdrs.c rtd_table.c sctpppids.c secrets.c sequence_analysis.c services.c show_exception.c srt_table.c stat_tap_ui.c stats_tree.c strutil.c stream.c t35.c tap.c timestamp.c timestats.c tfs.c to_str.c tvbparse.c tvbuff.c tvbuff_base64.c tvbuff_brotli.c tvbuff_composite.c tvbuff_hpackhuff.c tvbuff_real.c tvbuff_subset.c tvbuff_zlib.c tvbuff_zstd.c tvbuff_lz77.c tvbuff_lz77huff.c tvbuff_lznt1.c tvbuff_rdp.c uat.c value_string.c wscbor.c unit_strings.c wmem_scopes.c xdlc.c protobuf-helper.c protobuf_lang_tree.c ${CMAKE_CURRENT_BINARY_DIR}/ps.c ) set(LIBWIRESHARK_FILES ${LIBWIRESHARK_NONGENERATED_FILES}) add_lex_files(LEX_FILES LIBWIRESHARK_FILES diam_dict.l dtd_parse.l dtd_preparse.l radius_dict.l uat_load.l protobuf_lang_scanner.l ) add_lemon_files(LEMON_FILES LIBWIRESHARK_FILES dtd_grammar.lemon protobuf_lang_parser.lemon ) set_source_files_properties( ${LIBWIRESHARK_NONGENERATED_FILES} PROPERTIES COMPILE_FLAGS "${WERROR_COMMON_FLAGS}" ) add_library(epan #Included so that Visual Studio can properly put header files in solution ${LIBWIRESHARK_HEADER_FILES} ${LIBWIRESHARK_FILES} $ $ $ $ $ $ $<$:$> ${CMAKE_BINARY_DIR}/resources/libwireshark.rc ) set_target_properties(epan PROPERTIES COMPILE_DEFINITIONS "WS_BUILD_DLL" LINK_FLAGS "${WS_LINK_FLAGS}" VERSION "0.0.0" SOVERSION 0 INSTALL_RPATH "${LIBRARY_INSTALL_RPATH}" # By default the name for a library with target name epan will be libepan, # but Ethereal is now named Wireshark OUTPUT_NAME "wireshark" PREFIX "lib" FOLDER "DLLs" ) if(MSVC) set_target_properties(epan PROPERTIES LINK_FLAGS_DEBUG "${WS_MSVC_DEBUG_LINK_FLAGS}") endif() target_link_libraries(epan PUBLIC wsutil ${GLIB2_LIBRARIES} PRIVATE wiretap ${BROTLI_LIBRARIES} ${CARES_LIBRARIES} ${GCRYPT_LIBRARIES} ${GIO2_LIBRARIES} ${GNUTLS_LIBRARIES} ${KERBEROS_LIBRARIES} ${LIBXML2_LIBRARIES} ${LUA_LIBRARIES} ${LZ4_LIBRARIES} ${M_LIBRARIES} ${NGHTTP2_LIBRARIES} ${NGHTTP3_LIBRARIES} ${SMI_LIBRARIES} ${SNAPPY_LIBRARIES} ${WIN_PSAPI_LIBRARY} ${WIN_WS2_32_LIBRARY} ${ZLIB_LIBRARIES} ${ZSTD_LIBRARIES} $<$:lrexlib> ) target_include_directories(epan SYSTEM PUBLIC ${GLIB2_INCLUDE_DIRS} ) target_include_directories(epan INTERFACE $ $ ) target_include_directories(epan SYSTEM PRIVATE ${BROTLI_INCLUDE_DIRS} ${CARES_INCLUDE_DIRS} ${GCRYPT_INCLUDE_DIRS} ${GLIB2_INCLUDE_DIRS} ${GNUTLS_INCLUDE_DIRS} ${LIBXML2_INCLUDE_DIRS} ${LUA_INCLUDE_DIRS} ${LZ4_INCLUDE_DIRS} ${NGHTTP2_INCLUDE_DIRS} ${NGHTTP3_INCLUDE_DIRS} ${SMI_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS} ${ZSTD_INCLUDE_DIRS} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ) add_dependencies(epan lemon) install(TARGETS epan EXPORT WiresharkTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) install(FILES ${LIBWIRESHARK_PUBLIC_HEADERS} DESTINATION "${PROJECT_INSTALL_INCLUDEDIR}/epan" COMPONENT "Development" EXCLUDE_FROM_ALL ) add_executable(exntest EXCLUDE_FROM_ALL exntest.c except.c) target_link_libraries(exntest epan) set_target_properties(exntest PROPERTIES FOLDER "Tests" EXCLUDE_FROM_DEFAULT_BUILD True COMPILE_DEFINITIONS "WS_BUILD_DLL" COMPILE_FLAGS "${WERROR_COMMON_FLAGS}" ) add_executable(fifo_string_cache_test EXCLUDE_FROM_ALL fifo_string_cache_test.c) target_link_libraries(fifo_string_cache_test epan) set_target_properties(fifo_string_cache_test PROPERTIES FOLDER "Tests" EXCLUDE_FROM_DEFAULT_BUILD True COMPILE_DEFINITIONS "WS_BUILD_DLL" COMPILE_FLAGS "${WERROR_COMMON_FLAGS}" ) add_executable(oids_test EXCLUDE_FROM_ALL oids_test.c) target_link_libraries(oids_test epan) set_target_properties(oids_test PROPERTIES FOLDER "Tests" EXCLUDE_FROM_DEFAULT_BUILD True COMPILE_DEFINITIONS "WS_BUILD_DLL" COMPILE_FLAGS "${WERROR_COMMON_FLAGS}" ) add_executable(reassemble_test EXCLUDE_FROM_ALL reassemble_test.c) target_link_libraries(reassemble_test epan) set_target_properties(reassemble_test PROPERTIES FOLDER "Tests" EXCLUDE_FROM_DEFAULT_BUILD True COMPILE_FLAGS "${WERROR_COMMON_FLAGS}" ) add_executable(tvbtest EXCLUDE_FROM_ALL tvbtest.c) target_link_libraries(tvbtest epan) set_target_properties(tvbtest PROPERTIES FOLDER "Tests" EXCLUDE_FROM_DEFAULT_BUILD True COMPILE_DEFINITIONS "WS_BUILD_DLL" COMPILE_FLAGS "${WERROR_COMMON_FLAGS}" ) add_executable(wscbor_test EXCLUDE_FROM_ALL wscbor_test.c) target_link_libraries(wscbor_test epan) set_target_properties(wscbor_test PROPERTIES FOLDER "Tests" EXCLUDE_FROM_DEFAULT_BUILD True COMPILE_FLAGS "${WERROR_COMMON_FLAGS}" ) add_executable(test_epan EXCLUDE_FROM_ALL test_epan.c) target_link_libraries(test_epan epan) set_target_properties(test_epan PROPERTIES FOLDER "Tests" EXCLUDE_FROM_DEFAULT_BUILD True COMPILE_FLAGS "${WERROR_COMMON_FLAGS}" ) CHECKAPI( NAME epan SWITCHES SOURCES ${LIBWIRESHARK_NONGENERATED_FILES} ) # # Editor modelines - https://www.wireshark.org/tools/modelines.html # # Local variables: # c-basic-offset: 8 # tab-width: 8 # indent-tabs-mode: t # End: # # vi: set shiftwidth=8 tabstop=8 noexpandtab: # :indentSize=8:tabSize=8:noTabs=false: #