3 # Wireshark - Network traffic analyzer
4 # By Gerald Combs <gerald@wireshark.org>
5 # Copyright 1998 Gerald Combs
7 # SPDX-License-Identifier: GPL-2.0-or-later
12 if (HAVE_HFI_SECTION_INIT)
14 -DHAVE_HFI_SECTION_INIT
18 add_subdirectory(crypt)
19 add_subdirectory(dfilter)
20 add_subdirectory(dissectors)
21 add_subdirectory(ftypes)
22 add_subdirectory(wmem)
24 add_subdirectory(wslua)
28 ${CMAKE_CURRENT_BINARY_DIR}
29 ${CMAKE_CURRENT_SOURCE_DIR}
34 COMMAND ${PYTHON_EXECUTABLE}
35 ${CMAKE_SOURCE_DIR}/tools/rdps.py
36 ${CMAKE_CURRENT_SOURCE_DIR}/print.ps
39 ${CMAKE_SOURCE_DIR}/tools/rdps.py
40 ${CMAKE_CURRENT_SOURCE_DIR}/print.ps
43 set(LIBWIRESHARK_PUBLIC_HEADERS
137 slow_protocol_subtypes.h
165 set(LIBWIRESHARK_NONGENERATED_FILES
198 frame_data_sequence.c
248 ${CMAKE_CURRENT_BINARY_DIR}/ps.c
249 ${CMAKE_SOURCE_DIR}/version_info.c
252 set(LIBWIRESHARK_FILES ${LIBWIRESHARK_NONGENERATED_FILES})
254 add_lex_files(LEX_FILES LIBWIRESHARK_FILES
262 add_lemon_files(LEMON_FILES LIBWIRESHARK_FILES
266 set_source_files_properties(
267 ${LIBWIRESHARK_FILES}
269 COMPILE_FLAGS "${WERROR_COMMON_FLAGS}"
273 ${LIBWIRESHARK_FILES}
274 $<TARGET_OBJECTS:crypt>
275 $<TARGET_OBJECTS:dfilter>
276 $<TARGET_OBJECTS:dissectors>
277 $<TARGET_OBJECTS:dissectors-corba>
278 $<TARGET_OBJECTS:ftypes>
279 $<TARGET_OBJECTS:wmem>
280 $<$<BOOL:${HAVE_LIBLUA}>:$<TARGET_OBJECTS:wslua>>
281 ${CMAKE_BINARY_DIR}/image/libwireshark.rc
284 add_dependencies(epan version)
287 target_compile_definitions(epan PUBLIC HAVE_PLUGINS)
290 set_target_properties(epan PROPERTIES
291 COMPILE_DEFINITIONS "WS_BUILD_DLL"
292 LINK_FLAGS "${WS_LINK_FLAGS}"
293 VERSION "0.0.0" SOVERSION 0
296 if(ENABLE_APPLICATION_BUNDLE)
297 if(NOT CMAKE_CFG_INTDIR STREQUAL ".")
299 set_target_properties(epan PROPERTIES
300 LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/run/$<CONFIG>/Wireshark.app/Contents/Frameworks
303 set_target_properties(epan PROPERTIES
304 LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/run/Wireshark.app/Contents/Frameworks
309 ABICHECK(libwireshark)
311 set(TOP_LEVEL_HEADERS ${CMAKE_BINARY_DIR}/config.h)
312 file(GLOB CRYPT_HEADERS crypt/*.h)
313 file(GLOB DFILTER_HEADERS dfilter/*.h ../tools/lemon/cppmagic.h)
314 file(GLOB D_HEADERS dissectors/*.h)
315 file(GLOB FTYPES_HEADERS ftypes/*.h)
316 file(GLOB WMEM_HEADERS wmem/*.h)
318 add_custom_command(OUTPUT libwireshark.abi.tar.gz
319 COMMAND ${CMAKE_COMMAND} -E remove_directory ${ABICHECK_TMPDIR}
320 COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}
321 COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/epan
322 COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/crypt
323 COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/dfilter
324 COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/dissectors
325 COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/ftypes
326 COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/wmem
327 COMMAND ${ABI_COPY_COMMAND} ${TOP_LEVEL_HEADERS} ${ABICHECK_TMPDIR} ${ABI_COPY_FLAGS}
328 COMMAND ${ABI_COPY_COMMAND} ${ABICHECK_HEADERS} ${ABICHECK_TMPDIR}/epan ${ABI_COPY_FLAGS}
329 COMMAND ${ABI_COPY_COMMAND} ${CRYPT_HEADERS} ${ABICHECK_TMPDIR}/crypt ${ABI_COPY_FLAGS}
330 COMMAND ${ABI_COPY_COMMAND} ${DFILTER_HEADERS} ${ABICHECK_TMPDIR}/dfilter ${ABI_COPY_FLAGS}
331 COMMAND ${ABI_COPY_COMMAND} ${D_HEADERS} ${ABICHECK_TMPDIR}/dissectors ${ABI_COPY_FLAGS}
332 COMMAND ${ABI_COPY_COMMAND} ${FTYPES_HEADERS} ${ABICHECK_TMPDIR}/ftypes ${ABI_COPY_FLAGS}
333 COMMAND ${ABI_COPY_COMMAND} ${WMEM_HEADERS} ${ABICHECK_TMPDIR}/wmem ${ABI_COPY_FLAGS}
334 COMMAND rm -f ${ABICHECK_TMPDIR}/dissectors/x11-extension-implementation.h
335 ${ABICHECK_TMPDIR}/dissectors/packet-rtps.h
336 ${ABICHECK_TMPDIR}/dissectors/x11-glx-render-enum.h
337 ${ABICHECK_TMPDIR}/dissectors/x11-register-info.h
338 ${ABICHECK_TMPDIR}/dissectors/packet-idmp.h
339 COMMAND ${ABICHECK_COMMAND}
340 COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps/libwireshark/libwireshark_* ${CMAKE_CURRENT_BINARY_DIR}/libwireshark.abi.tar.gz
341 COMMAND rm -rf ${ABICHECK_TMPDIR} ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps
342 # COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps ${ABICHECK_TMPDIR}/config.h
343 # ${ABICHECK_TMPDIR}/epan/* ${ABICHECK_TMPDIR}/crypt/*
344 # ${ABICHECK_TMPDIR}/dfilter/* ${ABICHECK_TMPDIR}/dissectors/*
345 # ${ABICHECK_TMPDIR}/ftypes/* ${ABICHECK_TMPDIR}/wmem/*
347 ${CRYPT_HEADERS} ${DFILTER_HEADERS} ${D_HEADERS}
348 ${FTYPES_HEADERS} ${WMEM_HEADERS} epan)
350 # By default the name for a library with target name epan will be libepan,
351 # but Ethereal is now named Wireshark
352 set_target_properties(epan PROPERTIES
353 OUTPUT_NAME "wireshark"
358 target_link_libraries(epan
367 ${GTHREAD2_LIBRARIES}
369 ${KERBEROS_LIBRARIES}
379 ${JSONGLIB_LIBRARIES}
382 target_include_directories(epan
384 $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}>
385 $<INSTALL_INTERFACE:include/wireshark>
387 ${GLIB2_INCLUDE_DIRS}
390 add_dependencies(epan lemon)
393 EXPORT WiresharkTargets
394 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
395 RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}
396 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
400 install(FILES ${LIBWIRESHARK_PUBLIC_HEADERS}
401 DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${CPACK_PACKAGE_NAME}/epan"
405 add_executable(exntest EXCLUDE_FROM_ALL exntest.c except.c)
406 target_link_libraries(exntest ${GLIB2_LIBRARIES})
407 set_target_properties(exntest PROPERTIES
409 EXCLUDE_FROM_DEFAULT_BUILD True
410 COMPILE_DEFINITIONS "WS_BUILD_DLL"
413 add_executable(oids_test EXCLUDE_FROM_ALL oids_test.c)
414 target_link_libraries(oids_test epan ${ZLIB_LIBRARIES})
415 set_target_properties(oids_test PROPERTIES
417 EXCLUDE_FROM_DEFAULT_BUILD True
418 COMPILE_DEFINITIONS "WS_BUILD_DLL"
421 add_executable(reassemble_test EXCLUDE_FROM_ALL reassemble_test.c)
422 target_link_libraries(reassemble_test epan)
423 set_target_properties(reassemble_test PROPERTIES
425 EXCLUDE_FROM_DEFAULT_BUILD True
428 add_executable(tvbtest EXCLUDE_FROM_ALL tvbtest.c)
429 target_link_libraries(tvbtest epan)
430 set_target_properties(tvbtest PROPERTIES
432 EXCLUDE_FROM_DEFAULT_BUILD True
433 COMPILE_DEFINITIONS "WS_BUILD_DLL"
440 --group termoutput:10 --summary-group termoutput --build
442 ${LIBWIRESHARK_NONGENERATED_FILES}
446 # Editor modelines - http://www.wireshark.org/tools/modelines.html
451 # indent-tabs-mode: t
454 # vi: set shiftwidth=8 tabstop=8 noexpandtab:
455 # :indentSize=8:tabSize=8:noTabs=false: