Beginnings of getting cmake to build stuff in epan.
authorJörg Mayer <jmayer@loplof.de>
Wed, 2 Sep 2009 16:33:01 +0000 (16:33 -0000)
committerJörg Mayer <jmayer@loplof.de>
Wed, 2 Sep 2009 16:33:01 +0000 (16:33 -0000)
It's only beginnings, so epan is commented out in
the subdirs statement.

This is more a synch to avoid duplicate work and creating
conflicting patches to the cmake stuff.

svn path=/trunk/; revision=29666

CMakeLists.txt
cmake/modules/UseLemon.cmake [new file with mode: 0644]
epan/CMakeLists.txt [new file with mode: 0644]
wiretap/CMakeLists.txt

index 8b1b3c2c5ed4bb375d80f21110f346f9d2393a75..2de0e59dbd406ed00e99b3152904e1ab8f7a4fcd 100644 (file)
@@ -26,12 +26,14 @@ project(wireshark C)
 cmake_minimum_required(VERSION 2.6)
 
 subdirs(
-  wiretap
-  wsutil
+#      epan
+       wiretap
+       wsutil
 )
 
 #Where to find local cmake scripts
 set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
+INCLUDE(UseLemon)
 
 # Under linux the release mode (CMAKE_BUILD_TYPE=release) defines NDEBUG
 
@@ -44,17 +46,17 @@ set(BUILD_SHARED_LIBS ON)
 include(CMakeInstallDirs)
 
 include_directories(
-  ${CMAKE_BINARY_DIR}
-  ${CMAKE_SOURCE_DIR}
-  ${CMAKE_SOURCE_DIR}/include
-  ${CMAKE_SOURCE_DIR}/wiretap
-  ${CMAKE_SOURCE_DIR}/wsutil
+       ${CMAKE_BINARY_DIR}
+       ${CMAKE_SOURCE_DIR}
+#      ${CMAKE_SOURCE_DIR}/include
+       ${CMAKE_SOURCE_DIR}/wiretap
+       ${CMAKE_SOURCE_DIR}/wsutil
 )
 
 #Where to put libraries
 if(NOT LIBRARY_OUTPUT_PATH)
-  set(LIBRARY_OUTPUT_PATH ${wireshark_BINARY_DIR}/lib CACHE INTERNAL
-       "Single output directory for building all libraries.")
+       set(LIBRARY_OUTPUT_PATH ${wireshark_BINARY_DIR}/lib CACHE INTERNAL
+                  "Single output directory for building all libraries.")
 endif()
 
 option(BUILD_wireshark   "Build the GUI version of Wireshark" ON)
@@ -72,54 +74,54 @@ option(ENABLE_ADNS       "Build with adns support" ON)
 option(ENABLE_EXTRA_GCC_CHECKS "Do additional -W checks in GCC" OFF)
 
 if(ENABLE_EXTRA_GCC_CHECKS)
-  set(WIRESHARK_EXTRA_GCC_FLAGS -Wcast-qual -Wcast-align -Wbad-function-cast
-      -pedantic -Wstrict-prototypes -Wmissing-declarations -Wwrite-strings)
+       set(WIRESHARK_EXTRA_GCC_FLAGS -Wcast-qual -Wcast-align -Wbad-function-cast
+                 -pedantic -Wstrict-prototypes -Wmissing-declarations -Wwrite-strings)
 endif()
 
 if(CMAKE_COMPILER_IS_GNUCC)
-  add_definitions(
-    -DHAVE_CONFIG_H
-    -D_U_=__attribute__\(\(unused\)\)
-    -Wall -Wpointer-arith -W
-    ${WIRESHARK_EXTRA_GCC_FLAGS}
-  )
+       add_definitions(
+               -DHAVE_CONFIG_H
+               -D_U_=__attribute__\(\(unused\)\)
+               -Wall -Wpointer-arith -W
+               ${WIRESHARK_EXTRA_GCC_FLAGS}
+       )
 else()
-  add_definitions(-DHAVE_CONFIG_H -D_U_=\"\")
+       add_definitions(-DHAVE_CONFIG_H -D_U_=\"\")
 endif()
 
 #The minimum package list
 if(WIN32)
-  set(PACKAGELIST WSWIN32 LEX YACC Perl ${PACKAGELIST})
+       set(PACKAGELIST WSWIN32 LEX YACC Perl ${PACKAGELIST})
 else()
-  set(PACKAGELIST GLIB2 PCAP LEX YACC Perl ${PACKAGELIST})
+       set(PACKAGELIST GLIB2 PCAP LEX YACC Perl ${PACKAGELIST})
 endif()
 
-#build the gui ?
+#Build the gui ?
 if(BUILD_wireshark)
-  set(PACKAGELIST GTK2 ${PACKAGELIST})
+       set(PACKAGELIST GTK2 ${PACKAGELIST})
 endif()
 
-#Gnu asynchronous dns
+#Gnu asynchronous DNS
 if(ENABLE_ADNS)
-  set(PACKAGELIST ADNS ${PACKAGELIST})
-  set(HAVE_GNU_ADNS 1)
+       set(PACKAGELIST ADNS ${PACKAGELIST})
+       set(HAVE_GNU_ADNS 1)
 endif()
 
 set(PROGLIST text2pcap mergecap capinfos editcap dumpcap)
 
 #Let's loop the package list
 foreach(PACKAGE ${PACKAGELIST})
-  find_package(${PACKAGE} REQUIRED)
-  message(${PACKAGE}_FOUND)
-  if (${PACKAGE}_FOUND)
-    set(HAVE_LIB${PACKAGE} "1")
-    include_directories(${${PACKAGE}_INCLUDE_DIRS})
-    message(STATUS "${PACKAGE} include ${${PACKAGE}_INCLUDE_DIRS}")
-    foreach(PROG ${PROGLIST})
-#      set(${PROG}_LIBS ${${PROG}_LIBS} ${${PACKAGE}_LIBRARIES})
-    endforeach()
-    message(STATUS "${PACKAGE} lib ${${PACKAGE}_LIBRARIES}")
-  endif()
+       find_package(${PACKAGE} REQUIRED)
+       message(${PACKAGE}_FOUND)
+       if (${PACKAGE}_FOUND)
+               set(HAVE_LIB${PACKAGE} "1")
+               include_directories(${${PACKAGE}_INCLUDE_DIRS})
+               message(STATUS "${PACKAGE} include ${${PACKAGE}_INCLUDE_DIRS}")
+               foreach(PROG ${PROGLIST})
+#              set(${PROG}_LIBS ${${PROG}_LIBS} ${${PACKAGE}_LIBRARIES})
+               endforeach()
+               message(STATUS "${PACKAGE} lib ${${PACKAGE}_LIBRARIES}")
+       endif()
 endforeach()
 
 #packaging
@@ -148,50 +150,62 @@ set(DATAFILE_DIR "${CMAKE_INSTALL_PREFIX}/share/${CPACK_PACKAGE_NAME}")
 
 #Platform specific
 if(UNIX)
-  set(WS_VAR_IMPORT "extern")
+       set(WS_VAR_IMPORT "extern")
 endif()
 
 if(APPLE)
 #TODO verify that APPLE implies HAVE_OS_X_FRAMEWORKS
-  set(HAVE_OS_X_FRAMEWORKS 1)
+       set(HAVE_OS_X_FRAMEWORKS 1)
 endif()
 
 if(WIN32)
-  add_definitions(-DHAVE_WIN32_LIBWIRESHARK_LIB -D_NEED_VAR_IMPORT_)
-  set(WS_VAR_IMPORT "__declspec(dllimport) extern")
+       add_definitions(-DHAVE_WIN32_LIBWIRESHARK_LIB -D_NEED_VAR_IMPORT_)
+       set(WS_VAR_IMPORT "__declspec(dllimport) extern")
 
-  # Disable deprecation
-  if(MSVC80 OR MSVC90)
-    add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
-  endif()
+       # Disable deprecation
+       if(MSVC80 OR MSVC90)
+               add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
+       endif()
 endif()
 
 
 configure_file(${CMAKE_SOURCE_DIR}/cmakeconfig.h.in ${CMAKE_BINARY_DIR}/config.h)
 
 link_directories(
-  wiretap
-  wsutil
+       wiretap
+       wsutil
+       epan
 )
 
 ADD_CUSTOM_COMMAND(
-   OUTPUT ${CMAKE_BINARY_DIR}/svnversion.h
-   COMMAND ${PERL} ${CMAKE_SOURCE_DIR}/make-version.pl
-   ARGS
-   ${CMAKE_SOURCE_DIR}
+       OUTPUT ${CMAKE_BINARY_DIR}/svnversion.h
+       COMMAND ${PERL} ${CMAKE_SOURCE_DIR}/make-version.pl
+       ARGS
+       ${CMAKE_SOURCE_DIR}
 )
 SET_SOURCE_FILES_PROPERTIES(${CMAKE_BINARY_DIR}/svnversion.h GENERATED)
 
+# Create the necessary tools
+set(lemon_FILES
+       tools/lemon/lemon.c
+)
+set(lemon_LIBS
+       # Do we need something here on any platform?
+)
+add_executable(lemon ${lemon_FILES})
+target_link_libraries(lemon ${lemon_LIBS})
+# but don't install them
+
 if(UNIX)
-  set(PLATFORM_SRC
-    capture-pcap-util-unix.c
-  )
+       set(PLATFORM_SRC
+               capture-pcap-util-unix.c
+       )
 endif()
 
 if(WIN32)
-  set(PLATFORM_SRC
-    capture-wpcap.c capture_wpcap_packet.c
-  )
+       set(PLATFORM_SRC
+               capture-wpcap.c capture_wpcap_packet.c
+       )
 endif()
 
 if(BUILD_wireshark)
@@ -215,91 +229,91 @@ if(BUILD_dftest)
 endif()
 
 if(BUILD_text2pcap)
-  set(text2pcap_LIBS
-    wiretap
-    wsutil
-    ${GLIB2_LIBRARIES}
-  )
-  set(text2pcap_FILES
-    text2pcap.c
-  )
-  add_lex_files(text2pcap_FILES
-    text2pcap-scanner.l
-  )
-  add_executable(text2pcap ${text2pcap_FILES})
-  target_link_libraries(text2pcap ${text2pcap_LIBS})
-  install(TARGETS text2pcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+       set(text2pcap_LIBS
+               wiretap
+               wsutil
+               ${GLIB2_LIBRARIES}
+       )
+       set(text2pcap_FILES
+               text2pcap.c
+       )
+       add_lex_files(text2pcap_FILES
+               text2pcap-scanner.l
+       )
+       add_executable(text2pcap ${text2pcap_FILES})
+       target_link_libraries(text2pcap ${text2pcap_LIBS})
+       install(TARGETS text2pcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
 endif()
 
 if(BUILD_mergecap)
-  set(mergecap_LIBS
-    wiretap
-    wsutil
-    ${GLIB2_LIBRARIES}
-  )
-  set(mergecap_FILES
-    mergecap.c
-    merge.c
-    svnversion.h
-  )
-  add_executable(mergecap ${mergecap_FILES})
-  target_link_libraries(mergecap ${mergecap_LIBS})
-  install(TARGETS mergecap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+       set(mergecap_LIBS
+               wiretap
+               wsutil
+               ${GLIB2_LIBRARIES}
+       )
+       set(mergecap_FILES
+               mergecap.c
+               merge.c
+               svnversion.h
+       )
+       add_executable(mergecap ${mergecap_FILES})
+       target_link_libraries(mergecap ${mergecap_LIBS})
+       install(TARGETS mergecap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
 endif()
 
 if(BUILD_capinfos)
-  set(capinfos_LIBS
-    wiretap
-    wsutil
-    ${GLIB2_LIBRARIES}
-  )
-  set(capinfos_FILES
-    capinfos.c
-  )
-  add_executable(capinfos ${capinfos_FILES})
-  target_link_libraries(capinfos ${capinfos_LIBS})
-  install(TARGETS capinfos RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+       set(capinfos_LIBS
+               wiretap
+               wsutil
+               ${GLIB2_LIBRARIES}
+       )
+       set(capinfos_FILES
+               capinfos.c
+       )
+       add_executable(capinfos ${capinfos_FILES})
+       target_link_libraries(capinfos ${capinfos_LIBS})
+       install(TARGETS capinfos RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
 endif()
 
 if(BUILD_editcap)
-  set(editcap_LIBS
-    wiretap
-    wsutil
-    ${GLIB2_LIBRARIES}
-  )
-  set(editcap_FILES
-    editcap.c
-    epan/crypt/crypt-md5.c
-    epan/nstime.c
-  )
-  add_executable(editcap ${editcap_FILES})
-  target_link_libraries(editcap ${editcap_LIBS})
-  install(TARGETS editcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+       set(editcap_LIBS
+               wiretap
+               wsutil
+               ${GLIB2_LIBRARIES}
+       )
+       set(editcap_FILES
+               editcap.c
+               epan/crypt/crypt-md5.c
+               epan/nstime.c
+       )
+       add_executable(editcap ${editcap_FILES})
+       target_link_libraries(editcap ${editcap_LIBS})
+       install(TARGETS editcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
 endif()
 
 if(BUILD_dumpcap)
-  set(dumpcap_LIBS
-    wiretap
-    wsutil
-    ${GLIB2_LIBRARIES}
-    ${PCAP_LIBRARIES}
-  )
-  set(dumpcap_FILES
-       svnversion.h
-       capture_opts.c
-       capture-pcap-util.c
-       capture_stop_conditions.c
-       clopts_common.c
-       conditions.c
-       dumpcap.c
-       pcapio.c
-       ringbuffer.c
-       sync_pipe_write.c
-       tempfile.c
-       version_info.c
-       ${PLATFORM_SRC}
-  )
-  add_executable(dumpcap ${dumpcap_FILES})
-  target_link_libraries(dumpcap ${dumpcap_LIBS})
-  install(TARGETS dumpcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+       set(dumpcap_LIBS
+               wiretap
+               wsutil
+               ${GLIB2_LIBRARIES}
+               ${PCAP_LIBRARIES}
+       )
+       set(dumpcap_FILES
+               svnversion.h
+               capture_opts.c
+               capture-pcap-util.c
+               capture_stop_conditions.c
+               clopts_common.c
+               conditions.c
+               dumpcap.c
+               pcapio.c
+               ringbuffer.c
+               sync_pipe_write.c
+               tempfile.c
+               version_info.c
+               ${PLATFORM_SRC}
+       )
+       add_executable(dumpcap ${dumpcap_FILES})
+       target_link_libraries(dumpcap ${dumpcap_LIBS})
+       install(TARGETS dumpcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
 endif()
diff --git a/cmake/modules/UseLemon.cmake b/cmake/modules/UseLemon.cmake
new file mode 100644 (file)
index 0000000..706ef3d
--- /dev/null
@@ -0,0 +1,21 @@
+MACRO(ADD_LEMON_FILES _sources )
+    set(_lemonpardir ${CMAKE_SOURCE_DIR}/tools/lemon)
+    FOREACH (_current_FILE ${ARGN})
+      GET_FILENAME_COMPONENT(_in ${_current_FILE} ABSOLUTE)
+      GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE)
+
+      SET(_out ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.c)
+
+      ADD_CUSTOM_COMMAND(
+         OUTPUT ${_out}
+         COMMAND ${CMAKE_BINARY_DIR}/lemon
+         ARGS
+         t=${_lemonpardir}/lempar.c
+         ${srcdir}/${_in}
+         DEPENDS ${_in}
+      )
+
+      SET(${_sources} ${${_sources}} ${_out} )
+   ENDFOREACH (_current_FILE)
+ENDMACRO(ADD_LEMON_FILES)
+
diff --git a/epan/CMakeLists.txt b/epan/CMakeLists.txt
new file mode 100644 (file)
index 0000000..cdaad74
--- /dev/null
@@ -0,0 +1,135 @@
+# CMakeLists.txt
+#
+# $Id$
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+
+subdirs(
+       dissectors
+)
+
+ADD_CUSTOM_COMMAND(
+    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/sminmpec.c
+    COMMAND ${PERL_EXECUTABLE}
+    ARGS
+    ${CMAKE_CURRENT_SOURCE_DIR}/make-sminmpec.pl
+    ${CMAKE_CURRENT_SOURCE_DIR}/enterprise-numbers
+    ${CMAKE_CURRENT_BINARY_DIR}/sminmpec.c
+    DEPENDS enterprise-numbers
+)
+
+set(LIBWIRESHARK_FILES
+       addr_and_mask.c
+       addr_resolv.c
+       adler32.c
+       afn.c
+       asn1.c
+       atalk-utils.c
+       base64.c
+       bitswap.c
+       camel-persistentdata.c
+       charsets.c
+       circuit.c
+       codecs.c
+       column.c
+       column-utils.c
+       conversation.c
+       crc10.c
+       crc16.c
+       crc32.c
+       crc6.c
+       crcdrm.c
+       dissector_filters.c
+       emem.c
+       epan.c
+       ex-opt.c
+       except.c
+       expert.c
+       filesystem.c
+       follow.c
+       frame_data.c
+       frequency-utils.c
+       funnel.c
+       gcp.c
+       geoip_db.c
+       golay.c
+       guid-utils.c
+       h225-persistentdata.c
+       in_cksum.c
+       ipproto.c
+       ipv4.c
+       next_tvb.c
+       nstime.c
+       oids.c
+       osi-utils.c
+       packet.c
+       plugins.c
+       prefs.c
+       proto.c
+       range.c
+       reassemble.c
+       reedsolomon.c
+       report_err.c
+       req_resp_hdrs.c
+       sigcomp_state_hdlr.c
+       sigcomp-udvm.c
+       sminmpec.c
+       sna-utils.c
+       stat_cmd_args.c
+       stats_tree.c
+       strutil.c
+       stream.c
+       t35.c
+       tap.c
+       tcap-persistentdata.c
+       timestamp.c
+       tfs.c
+       to_str.c
+       tvbparse.c
+       tvbuff.c
+       uat.c
+       value_string.c
+       xdlc.c
+)
+
+add_lex_files(LIBWIRESHARK_FILES
+       diam_dict.l
+       dtd_parse.l
+       dtd_preparse.l
+       radius_dict.l
+       uat_load.l
+)
+
+add_lemon_files(LIBWIRESHARK_FILES
+       dtd_grammar.lemon
+)
+
+# add_dependency(ascend.c ascend_scanner_lex.h)
+
+add_library(libwireshark SHARED
+       ${LIBWIRESHARK_FILES}
+)
+
+install(TARGETS libwireshark
+       LIBRARY DESTINATION lib
+       RUNTIME DESTINATION lib
+       ARCHIVE DESTINATION lib
+)
+
index 3936e3896b31c8b115a7a140f446f4cc844b73bd..ce4d658e36adc6b984b7282960816032def508f1 100644 (file)
@@ -86,6 +86,8 @@ add_library(wiretap SHARED
 )
 
 install(TARGETS wiretap
-    LIBRARY DESTINATION lib
-    RUNTIME DESTINATION lib
-    ARCHIVE DESTINATION lib)
+       LIBRARY DESTINATION lib
+       RUNTIME DESTINATION lib
+       ARCHIVE DESTINATION lib
+)
+