3 # Wireshark - Network traffic analyzer
4 # By Gerald Combs <gerald@wireshark.org>
5 # Copyright 1998 Gerald Combs
7 # This program is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU General Public License
9 # as published by the Free Software Foundation; either version 2
10 # of the License, or (at your option) any later version.
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24 if (HAVE_HFI_SECTION_INIT)
26 -DHAVE_HFI_SECTION_INIT
30 add_subdirectory(crypt)
31 add_subdirectory(dfilter)
32 add_subdirectory(dissectors)
33 add_subdirectory(ftypes)
34 add_subdirectory(nghttp2)
35 add_subdirectory(wmem)
37 add_subdirectory(wslua)
41 ${CMAKE_CURRENT_BINARY_DIR}
42 ${CMAKE_CURRENT_SOURCE_DIR}
48 source_group(compress FILES ${COMPRESS_FILES})
50 set(LIBWIRESHARK_ASM_FILES
54 # asm_utils_win32_x86.obj: asm_utils_win32_x86.asm
55 # $(NASM) -f $(WIRESHARK_TARGET_PLATFORM) -o $@ $?
58 # !IF defined(NASM) && "$(WIRESHARK_TARGET_PLATFORM)" == "win32"
59 # asm_utils_win32_x86.obj
67 COMMAND ${PERL_EXECUTABLE}
68 ${CMAKE_SOURCE_DIR}/tools/make-sminmpec.pl
71 ${CMAKE_SOURCE_DIR}/tools/make-sminmpec.pl
73 set_target_properties(update-sminmpec PROPERTIES FOLDER "tools")
77 COMMAND ${PYTHON_EXECUTABLE}
78 ${CMAKE_SOURCE_DIR}/tools/rdps.py
79 ${CMAKE_CURRENT_SOURCE_DIR}/print.ps
82 ${CMAKE_SOURCE_DIR}/tools/rdps.py
83 ${CMAKE_CURRENT_SOURCE_DIR}/print.ps
86 set(LIBWIRESHARK_FILES
121 frame_data_sequence.c
123 g_int64_hash_routines.c
171 ${CMAKE_SOURCE_DIR}/ws_version_info.c
174 set(LIBWIRESHARK_CLEAN_FILES
175 ${LIBWIRESHARK_FILES}
178 add_lex_files(LEX_FILES GENERATED_FILES
186 add_lemon_files(LEMON_FILES GENERATED_FILES
196 ${KERBEROS_LIBRARIES}
207 ${LIBWIRESHARK_CLEAN_FILES}
209 ${LIBWIRESHARK_ASM_FILES}
212 if (WERROR_COMMON_FLAGS)
213 set_source_files_properties(
216 COMPILE_FLAGS ${WERROR_COMMON_FLAGS}
220 # Cannot use $<$<BOOL:${HAVE_LIBLUA}>:$<TARGET_OBJECTS:wslua>> as that breaks
221 # get_target_property(_libwireshark_location epan LOCATION).
223 set(wslua_sources $<TARGET_OBJECTS:wslua>)
227 add_library(epan ${LINK_MODE_LIB}
228 ${LIBWIRESHARK_FILES}
231 ${LIBWIRESHARK_ASM_FILES}
232 $<TARGET_OBJECTS:crypt>
233 $<TARGET_OBJECTS:dfilter>
234 $<TARGET_OBJECTS:dissectors>
235 $<TARGET_OBJECTS:ftypes>
236 $<TARGET_OBJECTS:nghttp2>
237 $<TARGET_OBJECTS:wmem>
239 ${CMAKE_BINARY_DIR}/image/libwireshark.rc
242 add_dependencies(epan version)
244 set(FULL_SO_VERSION "0.0.0")
246 set_target_properties(epan PROPERTIES COMPILE_DEFINITIONS "WS_BUILD_DLL")
247 set_target_properties(epan PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
248 set_target_properties(epan PROPERTIES VERSION ${FULL_SO_VERSION} SOVERSION 0)
250 if(ENABLE_APPLICATION_BUNDLE)
251 set_target_properties(epan PROPERTIES
252 LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/run/Wireshark.app/Contents/Frameworks
256 ABICHECK(libwireshark)
258 set(TOP_LEVEL_HEADERS ${CMAKE_BINARY_DIR}/config.h ${CMAKE_SOURCE_DIR}/register.h)
259 file(GLOB CRYPT_HEADERS crypt/*.h)
260 file(GLOB COMPRESS_HEADERS compress/*.h)
261 file(GLOB DFILTER_HEADERS dfilter/*.h ../tools/lemon/cppmagic.h)
262 file(GLOB D_HEADERS dissectors/*.h)
263 file(GLOB FTYPES_HEADERS ftypes/*.h)
264 file(GLOB WMEM_HEADERS wmem/*.h)
265 file(GLOB NGHTTP2_HEADERS nghttp2/*.h)
267 add_custom_command(OUTPUT libwireshark.abi.tar.gz
268 COMMAND ${CMAKE_COMMAND} -E remove_directory ${ABICHECK_TMPDIR}
269 COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}
270 COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/epan
271 COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/crypt
272 COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/compress
273 COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/dfilter
274 COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/dissectors
275 COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/ftypes
276 COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/wmem
277 COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/nghttp2
278 COMMAND ${ABI_COPY_COMMAND} ${TOP_LEVEL_HEADERS} ${ABICHECK_TMPDIR} ${ABI_COPY_FLAGS}
279 COMMAND ${ABI_COPY_COMMAND} ${ABICHECK_HEADERS} ${ABICHECK_TMPDIR}/epan ${ABI_COPY_FLAGS}
280 COMMAND ${ABI_COPY_COMMAND} ${CRYPT_HEADERS} ${ABICHECK_TMPDIR}/crypt ${ABI_COPY_FLAGS}
281 COMMAND ${ABI_COPY_COMMAND} ${COMPRESS_HEADERS} ${ABICHECK_TMPDIR}/compress ${ABI_COPY_FLAGS}
282 COMMAND ${ABI_COPY_COMMAND} ${DFILTER_HEADERS} ${ABICHECK_TMPDIR}/dfilter ${ABI_COPY_FLAGS}
283 COMMAND ${ABI_COPY_COMMAND} ${D_HEADERS} ${ABICHECK_TMPDIR}/dissectors ${ABI_COPY_FLAGS}
284 COMMAND ${ABI_COPY_COMMAND} ${FTYPES_HEADERS} ${ABICHECK_TMPDIR}/ftypes ${ABI_COPY_FLAGS}
285 COMMAND ${ABI_COPY_COMMAND} ${WMEM_HEADERS} ${ABICHECK_TMPDIR}/wmem ${ABI_COPY_FLAGS}
286 COMMAND ${ABI_COPY_COMMAND} ${NGHTTP2_HEADERS} ${ABICHECK_TMPDIR}/nghttp2 ${ABI_COPY_FLAGS}
287 COMMAND rm -f ${ABICHECK_TMPDIR}/dissectors/x11-extension-implementation.h
288 ${ABICHECK_TMPDIR}/dissectors/packet-rtps.h
289 ${ABICHECK_TMPDIR}/dissectors/x11-glx-render-enum.h
290 ${ABICHECK_TMPDIR}/dissectors/x11-register-info.h
291 ${ABICHECK_TMPDIR}/dissectors/packet-idmp.h
292 COMMAND ${ABICHECK_COMMAND}
293 COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps/libwireshark/libwireshark_* ${CMAKE_CURRENT_BINARY_DIR}/libwireshark.abi.tar.gz
294 COMMAND rm -rf ${ABICHECK_TMPDIR} ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps
295 # COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps ${ABICHECK_TMPDIR}/config.h
296 # ${ABICHECK_TMPDIR}/epan/* ${ABICHECK_TMPDIR}/crypt/*
297 # ${ABICHECK_TMPDIR}/epan/* ${ABICHECK_TMPDIR}/compress/*
298 # ${ABICHECK_TMPDIR}/dfilter/* ${ABICHECK_TMPDIR}/dissectors/*
299 # ${ABICHECK_TMPDIR}/ftypes/* ${ABICHECK_TMPDIR}/wmem/*
300 # ${ABICHECK_TMPDIR}/nghttp2/*
302 ${CRYPT_HEADERS} ${COMPRESS_HEADERS} ${DFILTER_HEADERS} ${D_HEADERS}
303 ${FTYPES_HEADERS} ${WMEM_HEADERS} ${NGHTTP2_HEADERS} epan)
305 # By default the name for a library with target name epan will be libepan,
306 # but Ethereal is now named Wireshark
307 set_target_properties(epan PROPERTIES
308 OUTPUT_NAME "wireshark"
313 target_link_libraries(epan ${epan_LIBS})
315 add_dependencies(epan lemon)
317 if(NOT ${ENABLE_STATIC})
319 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
320 RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}
321 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
325 add_executable(exntest EXCLUDE_FROM_ALL exntest.c except.c)
326 target_link_libraries(exntest ${GLIB2_LIBRARIES})
327 set_target_properties(exntest PROPERTIES
329 COMPILE_DEFINITIONS "WS_BUILD_DLL"
332 add_executable(oids_test EXCLUDE_FROM_ALL oids_test.c)
333 target_link_libraries(oids_test epan ${ZLIB_LIBRARIES})
334 set_target_properties(oids_test PROPERTIES
336 COMPILE_DEFINITIONS "WS_BUILD_DLL"
339 add_executable(reassemble_test EXCLUDE_FROM_ALL reassemble_test.c)
340 target_link_libraries(reassemble_test epan)
341 set_target_properties(reassemble_test PROPERTIES
345 add_executable(tvbtest EXCLUDE_FROM_ALL tvbtest.c)
346 target_link_libraries(tvbtest epan)
347 set_target_properties(tvbtest PROPERTIES
349 COMPILE_DEFINITIONS "WS_BUILD_DLL"
358 ${LIBWIRESHARK_FILES}
362 # Editor modelines - http://www.wireshark.org/tools/modelines.html
367 # indent-tabs-mode: t
370 # vi: set shiftwidth=8 tabstop=8 noexpandtab:
371 # :indentSize=8:tabSize=8:noTabs=false: