Wireshark-dev: Re: [Wireshark-dev] plugins and C++
From: wsgd <wsgd@xxxxxxx>
Date: Wed, 13 Jan 2010 19:44:14 +0100
Hello, I have a C++ dissector which works on Windows. I try to generate it on Ubuntu 9.10.For testing purpose on Ubuntu 9.10, I removed everything except intantiating a C++ object :
ofstream ofs ("wireshark_generic_dissector_traces.txt");The makefile I use is a copy/paste of another dissector (not a C++ dissector), with only 3 modifications :
- change the source files ! - add .cpp into ".SUFFIXES: .c .cpp .lo .o .obj" - add .cpp rule ".cpp.lo: ..." which is copy/paste of ".c.lo:" The generation works, BUT ...When I launch wireshark, my dissector is NOT loaded with the following error :
Couldn't load module /home/olivier/.wireshark/plugins/generic.so: /home/olivier/.wireshark/plugins/generic.so: undefined symbol: _ZTTSt14basic_ofstreamIcSt11char_traitsIcEE Even if I remove the C++ object (C++ include still here) : undefined symbol: _ZNSt8ios_base4InitD1Ev I do not know which options are necessary to fix the problem. Any idea welcome. Olivier Lidwa, Eric (GSFC-582.0)[SGT INC] a écrit :
Good afternoon,I have written several dissectors so far, one for AOS (Space Data Link Protocol) and two for different versions of DEM (Data Exchange Message). The dissectors were implemented as plugins.I am now implementing dissectors for the payload part of one of the protocols. Without going into details, if I could call or even compile some existing C++ code into my dissector it would make my life a lot easier.So here is a question, has anybody been able to write a plugin dissector in C++? I thought I ask before diving into hacking the makefiles. One thing to mention is that I do not care for multi platform support as long as “my” Wireshark runs on the particular real time linux I am using.Regards, Eric Lidwa NASA,GSFC Greenbelt, MD ------------------------------------------------------------------------ ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev@xxxxxxxxxxxxx> Archives: http://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe
# Makefile.in generated by automake 1.10.2 from Makefile.am. # plugins/generic/Makefile. Generated from Makefile.in by configure. # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. # Makefile.am # Automake file for GENERIC plugin # # $Id: GENERIC.am 24488 2008-02-27 16:18:30Z stig $ # # Wireshark - Network traffic analyzer # By Gerald Combs <gerald@xxxxxxxxxxxxx> # 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. # # Makefile.common for GENERIC plugin # Contains the stuff from Makefile.am and Makefile.nmake that is # a) common to both files and # b) portable between both files # # $Id: Makefile.common 20379 2007-01-10 20:19:16Z jake $ # # Wireshark - Network traffic analyzer # By Gerald Combs <gerald@xxxxxxxxxxxxx> # 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. pkgdatadir = $(datadir)/wireshark pkglibdir = $(libdir)/wireshark pkgincludedir = $(includedir)/wireshark am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = i686-pc-linux-gnu host_triplet = i686-pc-linux-gnu DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.common \ $(srcdir)/Makefile.in AUTHORS COPYING INSTALL NEWS subdir = plugins/generic ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/aclocal-fallback/glib-2.0.m4 \ $(top_srcdir)/aclocal-fallback/gtk-2.0.m4 \ $(top_srcdir)/aclocal-fallback/libgcrypt.m4 \ $(top_srcdir)/aclocal-fallback/libsmi.m4 \ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(plugindir)" pluginLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(plugin_LTLIBRARIES) generic_la_DEPENDENCIES = am__objects_1 = packet-generic.lo am__objects_2 = am__objects_3 = generic.lo am__objects_4 = am_generic_la_OBJECTS = plugin.lo $(am__objects_1) $(am__objects_3) \ $(am__objects_4) generic_la_OBJECTS = $(am_generic_la_OBJECTS) generic_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(generic_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I. -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(generic_la_SOURCES) DIST_SOURCES = $(generic_la_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = ${SHELL} /home/olivier/wireshark/1.2.4/wireshark-1.2.4/missing --run aclocal-1.10 ADNS_LIBS = AMTAR = ${SHELL} /home/olivier/wireshark/1.2.4/wireshark-1.2.4/missing --run tar AR = ar AUTOCONF = ${SHELL} /home/olivier/wireshark/1.2.4/wireshark-1.2.4/missing --run autoconf AUTOHEADER = ${SHELL} /home/olivier/wireshark/1.2.4/wireshark-1.2.4/missing --run autoheader AUTOMAKE = ${SHELL} /home/olivier/wireshark/1.2.4/wireshark-1.2.4/missing --run automake-1.10 AWK = mawk CC = gcc CCDEPMODE = depmode=gcc3 CC_FOR_BUILD = gcc CFLAGS = -DINET6 -D_U_="__attribute__((unused))" -g -O2 -Wall -W -Wdeclaration-after-statement -Wendif-labels -Wpointer-arith -Wno-pointer-sign -Warray-bounds -Wcast-align -Wformat-security -I/usr/local/include -D_REENTRANT -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/directfb -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pcap CPP = gcc -E CPPFLAGS = -I/usr/local/include -I/usr/include/pcap '-DPLUGIN_DIR="$(plugindir)"' CYGPATH_W = echo C_ARES_LIBS = DEFS = -DHAVE_CONFIG_H DEPDIR = .deps DOXYGEN = DSYMUTIL = DUMPBIN = ECHO_C = ECHO_N = -n ECHO_T = EGREP = /bin/grep -E ENABLE_STATIC = EXEEXT = FGREP = /bin/grep -F FLEX_PATH = FOP = FRAMEWORKS = GEOIP_LIBS = GETOPT_C = GETOPT_O = GLIB_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include GLIB_GENMARSHAL = glib-genmarshal GLIB_LIBS = -Wl,--export-dynamic -lgmodule-2.0 -lglib-2.0 GLIB_MKENUMS = glib-mkenums GOBJECT_QUERY = gobject-query GREP = /bin/grep GTK_CFLAGS = -D_REENTRANT -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/directfb -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include GTK_LIBS = -pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lgio-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 HAVE_BLESS = no HAVE_DOXYGEN = no HAVE_DPKG_BUILDPACKAGE = yes HAVE_FOP = no HAVE_HDIUTIL = no HAVE_HHC = no HAVE_OSX_PACKAGING = no HAVE_PKGMK = no HAVE_PKGPROTO = no HAVE_PKGTRANS = no HAVE_RPM = HAVE_SVR4_PACKAGING = no HAVE_XCODEBUILD = no HAVE_XMLLINT = yes HAVE_XSLTPROC = yes HHC = HTML_VIEWER = /usr/bin/xdg-open INET_ATON_C = INET_ATON_LO = INET_ATON_O = INET_NTOP_C = INET_NTOP_LO = INET_NTOP_O = INET_PTON_C = INET_PTON_LO = INET_PTON_O = INSTALL = /usr/bin/install -c INSTALL_DATA = ${INSTALL} -m 644 INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = $(install_sh) -c -s KRB5_CONFIG = KRB5_LIBS = LD = /usr/bin/ld LDFLAGS = -L/usr/local/lib -L/usr/local/lib -L/usr/local/lib -L/usr/local/lib -L/usr/local/lib LDFLAGS_SHAREDLIB = LEX = /usr/bin/flex LEXDUMMY = /usr/bin/flex LEXLIB = -lfl LEX_OUTPUT_ROOT = lex.yy LIBCAP_LIBS = LIBGCRYPT_CFLAGS = LIBGCRYPT_CONFIG = no LIBGCRYPT_LIBS = LIBGNUTLS_CFLAGS = LIBGNUTLS_LIBS = LIBOBJS = # Libs must be cleared, or else libtool won't create a shared module. # If your module needs to be linked against any particular libraries, # add them here. LIBS = LIBSMI_CFLAGS = LIBSMI_LDFLAGS = LIBSMI_VERSION = LIBTOOL = $(SHELL) $(top_builddir)/libtool LIBTOOL_DEPS = ./ltmain.sh LIPO = LN_S = ln -s LTLIBOBJS = LUA_INCLUDES = LUA_LIBS = MAKEINFO = ${SHELL} /home/olivier/wireshark/1.2.4/wireshark-1.2.4/missing --run makeinfo MKDIR_P = /bin/mkdir -p NM = /usr/bin/nm -B NMEDIT = NSL_LIBS = OBJDUMP = objdump OBJEXT = o OTOOL = OTOOL64 = PACKAGE = wireshark PACKAGE_BUGREPORT = PACKAGE_NAME = wireshark PACKAGE_STRING = wireshark 1.2.4 PACKAGE_TARNAME = wireshark PACKAGE_URL = PACKAGE_VERSION = 1.2.4 PATH_SEPARATOR = : PCAP_CONFIG = PCAP_LIBS = -lpcap PCRE_LIBS = PERL = /usr/bin/perl PKG_CONFIG = /usr/bin/pkg-config PLUGIN_LIBS = POD2HTML = /usr/bin/pod2html POD2MAN = /usr/bin/pod2man PORTAUDIO_INCLUDES = PORTAUDIO_LIBS = PYTHON = /usr/bin/python RANLIB = ranlib SED = /bin/sed SET_MAKE = SHELL = /bin/bash SOCKET_LIBS = SSL_LIBS = STRCASECMP_C = STRCASECMP_O = STRERROR_C = STRERROR_O = STRIP = strip STRNCASECMP_C = STRNCASECMP_O = STRPTIME_C = STRPTIME_O = VERSION = 1.2.4 XMLLINT = /usr/bin/xmllint XSLTPROC = /usr/bin/xsltproc YACC = bison -y YACCDUMMY = /usr/bin/bison YFLAGS = abs_builddir = /home/olivier/wireshark/1.2.4/wireshark-1.2.4/plugins/generic abs_srcdir = /home/olivier/wireshark/1.2.4/wireshark-1.2.4/plugins/generic abs_top_builddir = /home/olivier/wireshark/1.2.4/wireshark-1.2.4 abs_top_srcdir = /home/olivier/wireshark/1.2.4/wireshark-1.2.4 ac_ct_CC = gcc ac_ct_DUMPBIN = ac_cv_wireshark_have_rpm = no am__include = include am__leading_dot = . am__quote = am__tar = tar --format=ustar -chf - "$$tardir" am__untar = tar -xf - bindir = ${exec_prefix}/bin build = i686-pc-linux-gnu build_alias = build_cpu = i686 build_os = linux-gnu build_vendor = pc builddir = . capinfos_bin = capinfos$(EXEEXT) capinfos_man = capinfos.1 datadir = ${datarootdir} datarootdir = ${prefix}/share dftest_bin = dftest$(EXEEXT) docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} dumpcap_bin = dumpcap$(EXEEXT) dumpcap_man = dumpcap.1 dvidir = ${docdir} editcap_bin = editcap$(EXEEXT) editcap_man = editcap.1 exec_prefix = ${prefix} host = i686-pc-linux-gnu host_alias = host_cpu = i686 host_os = linux-gnu host_vendor = pc htmldir = ${docdir} idl2wrs_bin = idl2wrs idl2wrs_man = idl2wrs.1 includedir = ${prefix}/include infodir = ${datarootdir}/info install_sh = $(SHELL) /home/olivier/wireshark/1.2.4/wireshark-1.2.4/install-sh libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localedir = ${datarootdir}/locale localstatedir = ${prefix}/var lt_ECHO = echo mandir = ${datarootdir}/man mergecap_bin = mergecap$(EXEEXT) mergecap_man = mergecap.1 mkdir_p = /bin/mkdir -p oldincludedir = /usr/include pdfdir = ${docdir} plugindir = ${libdir}/wireshark/plugins/${VERSION} prefix = /usr/local program_transform_name = s,x,x, psdir = ${docdir} randpkt_bin = randpkt$(EXEEXT) rawshark_bin = rawshark$(EXEEXT) rawshark_man = rawshark.1 sbindir = ${exec_prefix}/sbin sharedstatedir = ${prefix}/com srcdir = . sysconfdir = ${prefix}/etc target_alias = text2pcap_bin = text2pcap$(EXEEXT) text2pcap_man = text2pcap.1 top_build_prefix = ../../ top_builddir = ../.. top_srcdir = ../.. tshark_bin = tshark$(EXEEXT) tshark_man = tshark.1 wireshark_SUBDIRS = codecs gtk wireshark_bin = wireshark$(EXEEXT) wireshark_man = wireshark.1 wiresharkfilter_man = wireshark-filter.4 INCLUDES = -I$(top_srcdir) -I$(includedir) # the name of the plugin PLUGIN_NAME = generic # the dissector sources (without any helpers) DISSECTOR_SRC = \ packet-generic.c # corresponding headers DISSECTOR_INCLUDES = \ generic.h # Dissector core sources. # All files specified here do NOT depend of wireshark. DISSECTOR_CORE_SRC = \ byte_interpret.cpp \ byte_interpret_compute_expression.cpp \ T_interpret_data.cpp T_interpret_read_values.cpp T_interpret_value.cpp T_interpret_byte_order.cpp T_interpret_output.cpp \ T_attribute_value.cpp T_frame_data.cpp T_type_definitions.cpp \ byte_interpret_builder.cpp \ C_value.cpp \ byte_interpret_build_types_feeling.cpp \ byte_interpret_build_types_netpdl.cpp \ tinystr.cpp tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp \ byte_interpret_build_types.cpp \ byte_interpret_parse.cpp byte_interpret_common.cpp # Dissector helpers. They're included in the source files in this # directory, but they're not dissectors themselves, i.e. they're not # used to generate "register.c"). DISSECTOR_SUPPORT_SRC = generic.cpp #AM_CFLAGS = -Werror plugin_LTLIBRARIES = generic.la generic_la_SOURCES = \ plugin.c \ moduleinfo.h \ $(DISSECTOR_SRC) \ $(DISSECTOR_SUPPORT_SRC) \ $(DISSECTOR_INCLUDES) generic_la_LDFLAGS = -module -avoid-version generic_la_LIBADD = # # Currently plugin.c can be included in the distribution because # we always build all protocol dissectors. We used to have to check # whether or not to build the snmp dissector. If we again need to # variably build something, making plugin.c non-portable, uncomment # the dist-hook line below. # # Oh, yuk. We don't want to include "plugin.c" in the distribution, as # its contents depend on the configuration, and therefore we want it # to be built when the first "make" is done; however, Automake insists # on putting *all* source into the distribution. # # We work around this by having a "dist-hook" rule that deletes # "plugin.c", so that "dist" won't pick it up. # #dist-hook: # @rm -f $(distdir)/plugin.c CLEANFILES = \ generic \ *~ MAINTAINERCLEANFILES = \ Makefile.in \ plugin.c EXTRA_DIST = \ Makefile.common \ Makefile.nmake \ moduleinfo.nmake \ plugin.rc.in all: all-am # ICIOA 2010/01/12 add .cpp in SUFFIXES list .SUFFIXES: .SUFFIXES: .c .cpp .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.common $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/generic/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu plugins/generic/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(plugindir)" || $(MKDIR_P) "$(DESTDIR)$(plugindir)" @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(plugindir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(plugindir)/$$f"; \ else :; fi; \ done uninstall-pluginLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ p=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$p'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$p"; \ done clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done generic.la: $(generic_la_OBJECTS) $(generic_la_DEPENDENCIES) $(generic_la_LINK) -rpath $(plugindir) $(generic_la_OBJECTS) $(generic_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c include ./$(DEPDIR)/generic.Plo include ./$(DEPDIR)/packet-generic.Plo include ./$(DEPDIR)/plugin.Plo .c.o: $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po # source='$<' object='$@' libtool=no \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(COMPILE) -c $< .c.obj: $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po # source='$<' object='$@' libtool=no \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo # source='$<' object='$@' libtool=yes \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(LTCOMPILE) -c -o $@ $< # ICIOA 2010/01/12 add .cpp rules (copy/paste of .c rules) #.cpp.o: # $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< # mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po # source='$<' object='$@' libtool=no \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(COMPILE) -c $< #.cpp.obj: # $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` # mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po # source='$<' object='$@' libtool=no \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(COMPILE) -c `$(CYGPATH_W) '$<'` .cpp.lo: $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo # source='$<' object='$@' libtool=yes \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(plugindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-pluginLTLIBRARIES install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pluginLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pluginLTLIBRARIES \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-pluginLTLIBRARIES # # Build plugin.c, which contains the plugin version[] string, a # function plugin_register() that calls the register routines for all # protocols, and a function plugin_reg_handoff() that calls the handoff # registration routines for all protocols. # # We do this by scanning sources. If that turns out to be too slow, # maybe we could just require every .o file to have an register routine # of a given name (packet-aarp.o -> proto_register_aarp, etc.). # # Formatting conventions: The name of the proto_register_* routines an # proto_reg_handoff_* routines must start in column zero, or must be # preceded only by "void " starting in column zero, and must not be # inside #if. # # DISSECTOR_SRC is assumed to have all the files that need to be scanned. # # For some unknown reason, having a big "for" loop in the Makefile # to scan all the files doesn't work with some "make"s; they seem to # pass only the first few names in the list to the shell, for some # reason. # # Therefore, we have a script to generate the plugin.c file. # The shell script runs slowly, as multiple greps and seds are run # for each input file; this is especially slow on Windows. Therefore, # if Python is present (as indicated by PYTHON being defined), we run # a faster Python script to do that work instead. # # The first argument is the directory in which the source files live. # The second argument is "plugin", to indicate that we should build # a plugin.c file for a plugin. # All subsequent arguments are the files to scan. # plugin.c: $(DISSECTOR_SRC) $(top_srcdir)/tools/make-dissector-reg \ $(top_srcdir)/tools/make-dissector-reg.py @if test -n "$(PYTHON)"; then \ echo Making plugin.c with python ; \ $(PYTHON) $(top_srcdir)/tools/make-dissector-reg.py $(srcdir) \ plugin $(DISSECTOR_SRC) ; \ else \ echo Making plugin.c with shell script ; \ $(top_srcdir)/tools/make-dissector-reg $(srcdir) \ $(plugin_src) plugin $(DISSECTOR_SRC) ; \ fi checkapi: $(PERL) $(top_srcdir)/tools/checkAPIs.pl -g abort -g termoutput $(DISSECTOR_SRC) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT:
- Follow-Ups:
- Re: [Wireshark-dev] plugins and C++
- From: RUOFF LARS
- Re: [Wireshark-dev] plugins and C++
- References:
- [Wireshark-dev] plugins and C++
- From: Lidwa, Eric (GSFC-582.0)[SGT INC]
- [Wireshark-dev] plugins and C++
- Prev by Date: Re: [Wireshark-dev] Wireshark ProCurve ERSPAN Support
- Next by Date: [Wireshark-dev] buildbot failure in Wireshark (development) on OSX-10.5-x86
- Previous by thread: [Wireshark-dev] plugins and C++
- Next by thread: Re: [Wireshark-dev] plugins and C++
- Index(es):