aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/Makefile.am.inc
diff options
context:
space:
mode:
authorJoão Valverde <joao.valverde@tecnico.ulisboa.pt>2016-02-19 07:15:26 +0000
committerJoão Valverde <j@v6e.pt>2016-02-20 14:26:39 +0000
commit5eafa903f64ceb0dc3390bd47f8325070299b04f (patch)
tree4372008f3347e08e33135202f1f7164356c47b99 /plugins/Makefile.am.inc
parent01444ab46b2d8fb839b76ab778f3fdccbbb2272f (diff)
autotools: Move common automake code for plugins to an include file
Change-Id: Icac1eb17ff78ae5ae54b61820618bf3c5733bd96 Reviewed-on: https://code.wireshark.org/review/14003 Reviewed-by: João Valverde <j@v6e.pt>
Diffstat (limited to 'plugins/Makefile.am.inc')
-rw-r--r--plugins/Makefile.am.inc81
1 files changed, 81 insertions, 0 deletions
diff --git a/plugins/Makefile.am.inc b/plugins/Makefile.am.inc
new file mode 100644
index 0000000000..7513ca7912
--- /dev/null
+++ b/plugins/Makefile.am.inc
@@ -0,0 +1,81 @@
+# Makefile.am.inc
+# Include file with common automake definitions for plugins
+#
+# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+
+LIBS = @PLUGIN_LIBS@
+
+PLUGIN_LDFLAGS = -module -avoid-version
+
+#
+# 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.
+#
+# REGISTER_SRC_FILES 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 use a script to generate the register.c file.
+# 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: $(REGISTER_SRC_FILES) Makefile.common $(top_srcdir)/tools/make-dissector-reg.py
+ @echo Making plugin.c
+ @$(PYTHON) $(top_srcdir)/tools/make-dissector-reg.py $(srcdir) \
+ plugin $(REGISTER_SRC_FILES)
+
+#
+# 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
+
+checkapi:
+ $(PERL) $(top_srcdir)/tools/checkAPIs.pl -g abort -g termoutput -build \
+ -sourcedir=$(srcdir) \
+ $(CLEAN_SRC_FILES) $(CLEAN_HEADER_FILES)