![João Valverde](/assets/img/avatar_default.png)
To reduce startup external file parsing replce the manuf file with static arrays compiled into the binary. Add 3 tables for MA-L, MA-M and MA-S. Add a fourth table to direct a 24-bit MAC prefix (OUI) to one of these tables. Adapt the make-manuf.py script to generate the static C data instead of the text file. The arrays are sorted and a binary search is performed to map an OUI (24bit/28bit/36bit) to a short and long name.
480 lines
8.6 KiB
CMake
480 lines
8.6 KiB
CMake
# CMakeLists.txt
|
|
#
|
|
# Wireshark - Network traffic analyzer
|
|
# By Gerald Combs <gerald@wireshark.org>
|
|
# 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_and_mask.h
|
|
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
|
|
ip_opts.h
|
|
ipproto.h
|
|
ipv4.h
|
|
ipv6.h
|
|
lapd_sapi.h
|
|
llcsaps.h
|
|
maxmind_db.h
|
|
media_params.h
|
|
next_tvb.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_and_mask.c
|
|
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
|
|
in_cksum.c
|
|
introspection.c
|
|
ipproto.c
|
|
manuf.c
|
|
maxmind_db.c
|
|
media_params.c
|
|
next_tvb.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_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}
|
|
$<TARGET_OBJECTS:crypt>
|
|
$<TARGET_OBJECTS:dfilter>
|
|
$<TARGET_OBJECTS:dissectors>
|
|
$<TARGET_OBJECTS:dissectors-corba>
|
|
$<TARGET_OBJECTS:dissector-registration>
|
|
$<TARGET_OBJECTS:ftypes>
|
|
$<$<BOOL:${LUA_FOUND}>:$<TARGET_OBJECTS:wslua>>
|
|
${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}
|
|
${SMI_LIBRARIES}
|
|
${SNAPPY_LIBRARIES}
|
|
${WIN_PSAPI_LIBRARY}
|
|
${WIN_WS2_32_LIBRARY}
|
|
${ZLIB_LIBRARIES}
|
|
${ZSTD_LIBRARIES}
|
|
$<$<BOOL:${LUA_FOUND}>:lrexlib>
|
|
)
|
|
|
|
target_include_directories(epan
|
|
SYSTEM PUBLIC
|
|
${GLIB2_INCLUDE_DIRS}
|
|
)
|
|
|
|
target_include_directories(epan
|
|
INTERFACE
|
|
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}>
|
|
$<INSTALL_INTERFACE:include/wireshark>
|
|
)
|
|
|
|
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}
|
|
${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:
|
|
#
|