Ethereal-dev: Re: [Ethereal-dev] Please test: shared libs (v3)

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Joerg Mayer <jmayer@xxxxxxxxx>
Date: Mon, 9 Feb 2004 18:17:49 +0100
On Mon, Feb 09, 2004 at 02:27:31AM +0100, Joerg Mayer wrote:
> Ah, OK, I'll try to fix this later on Monday or Tuesday.

Ok, attached is a new version. For now, I create libdfilter and
libftypes as dynamic libs. Once things are working and have settled
down a bit, I'll try to integrate them into libethereal again.
Other changes: Move make-register stuff to epan.

 Ciao
   Jï¿œrg

-- 
Joerg Mayer                                           <jmayer@xxxxxxxxx>
We are stuck with technology when what we really want is just stuff that
works. Some say that should read Microsoft instead of technology.
Index: .cvsignore
===================================================================
RCS file: /usr/local/cvsroot/ethereal/.cvsignore,v
retrieving revision 1.30
diff -p -u -r1.30 .cvsignore
--- .cvsignore	7 Feb 2004 04:35:48 -0000	1.30
+++ .cvsignore	9 Feb 2004 09:43:28 -0000
@@ -50,8 +50,6 @@ packet-ncp2222.c
 ps.c
 randpkt
 rdps
-register-static.c
-register.c
 stamp-h
 stamp-h.in
 stamp-h1
Index: Makefile.am
===================================================================
RCS file: /usr/local/cvsroot/ethereal/Makefile.am,v
retrieving revision 1.706
diff -p -u -r1.706 Makefile.am
--- Makefile.am	1 Feb 2004 10:07:20 -0000	1.706
+++ Makefile.am	9 Feb 2004 09:43:31 -0000
@@ -231,11 +231,9 @@ ethereal_optional_objects = @SNPRINTF_O@
 # Additional libs that I know how to build. These will be
 # linked into the ethereal executable.
 ethereal_additional_libs = \
-	wiretap/libwiretap.a	\
+	wiretap/libwiretap.la	\
 	gtk/libui.a		\
-	epan/libethereal.a	\
-	epan/ftypes/libftypes.a \
-	epan/dfilter/libdfilter.a
+	epan/libethereal.la
 
 # This is the automake dependency variable for the executable
 ethereal_DEPENDENCIES = \
@@ -268,10 +266,8 @@ ethereal_LDADD = \
 # Additional libs that I know how to build. These will be
 # linked into the tethereal executable.
 tethereal_additional_libs =		\
-	wiretap/libwiretap.a		\
-	epan/libethereal.a		\
-	epan/ftypes/libftypes.a		\
-	epan/dfilter/libdfilter.a
+	wiretap/libwiretap.la		\
+	epan/libethereal.la
 
 # This is the automake dependency variable for the executable
 tethereal_DEPENDENCIES = \
@@ -305,14 +301,14 @@ text2pcap_DEPENDENCIES = text2pcap.h
 text2pcap_LDADD = $(text2pcap_optional_objects) \
 	@GLIB_LIBS@ -lm
 
-mergecap_DEPENDENCIES = wiretap/libwiretap.a
+mergecap_DEPENDENCIES = wiretap/libwiretap.la
 
 # This is the automake dependency variable for the executable
-editcap_DEPENDENCIES = wiretap/libwiretap.a
+editcap_DEPENDENCIES = wiretap/libwiretap.la
 
 # This automake variable adds to the link-line for the executable
-editcap_LDADD = wiretap/libwiretap.a @GLIB_LIBS@
-mergecap_LDADD = wiretap/libwiretap.a @GLIB_LIBS@
+editcap_LDADD = wiretap/libwiretap.la @GLIB_LIBS@
+mergecap_LDADD = wiretap/libwiretap.la @GLIB_LIBS@
 
 # Common headers
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/wiretap
@@ -341,41 +337,6 @@ SUFFIXES = .sh
 	$(editsh) $< > [email protected] && chmod +x [email protected] && mv [email protected] $@
 
 #
-# Build "register.c", which contains a function "register_all_protocols()"
-# that calls the register routines for all protocols.
-#
-# We do this by grepping through 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 must
-# start in column zero, or must be preceded only by "void " starting in
-# column zero, and must not be inside #if.
-#
-# We assume that all dissector routines are in "packet-XXX.c" files.
-#
-# For some unknown reason, having a big "for" loop in the Makefile
-# to scan all the "packet-XXX.c" 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 "register.c" file.
-#
-# The first argument is the name of the file to write.
-# The second argument is the directory in which the source files live.
-# All subsequent arguments are the files to scan.
-#
-register.c: $(plugin_src) $(DISSECTOR_SRC) $(srcdir)/make-reg-dotc
-	@if test -n $(PYTHON); then \
-		echo Making register.c with python ; \
-		$(PYTHON) $(srcdir)/make-reg-dotc.py $(srcdir) $(DISSECTOR_SRC) ; \
-	else \
-		echo Making register.c with shell script ; \
-		$(srcdir)/make-reg-dotc register.c $(srcdir) \
-			$(plugin_src) $(DISSECTOR_SRC) ; \
-	fi
-
-#
 # Build "tethereal-tap-register.c", which contains a function 
 # "register_all_tap_listeners()"
 # that calls the register routines for all tehtereal tap listeners.
@@ -402,15 +363,13 @@ rdps: rdps.c
 randpkt.o: randpkt.c
 	$(CC) -DHAVE_CONFIG_H -I. `glib-config --cflags` -c $(srcdir)/randpkt.c
 
-randpkt: randpkt.o wiretap/libwiretap.a
-	$(LINK) -o randpkt randpkt.o wiretap/libwiretap.a `glib-config --libs` -lz
+randpkt: randpkt.o wiretap/libwiretap.la
+	$(LINK) -o randpkt randpkt.o wiretap/libwiretap.la `glib-config --libs` -lz
 
 
 dftest_additional_libs =		\
-	wiretap/libwiretap.a		\
-	epan/libethereal.a		\
-	epan/ftypes/libftypes.a		\
-	epan/dfilter/libdfilter.a
+	wiretap/libwiretap.la		\
+	epan/libethereal.la
 
 dftest_DEPENDENCIES = \
 	$(ethereal_optional_objects)	\
@@ -439,7 +398,6 @@ DISTCLEANFILES = \
 	*~
 
 MAINTAINERCLEANFILES =		\
-	register.c		\
 	ps.c
 
 EXTRA_DIST = \
@@ -558,8 +516,6 @@ EXTRA_DIST = \
 	image/toolbar/stock_stop_24.xpm	\
 	image/up_arrow.xpm	\
 	make-manuf		\
-	make-reg-dotc		\
-	make-reg-dotc.py	\
 	make-tapreg-dotc	\
 	manuf                   \
 	manuf.tmpl		\
@@ -587,24 +543,6 @@ else
 install-exec-hook:
 endif
 
-#
-# Currently register.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 register.c non-portable, uncomment
-# the dist-hook line below.
-#
-# Oh, yuk.  We don't want to include "register.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
-# "register.c", so that "dist" won't pick it up.
-#
-#dist-hook:
-#	@rm -f $(distdir)/register.c
-
 DIST_SUBDIRS = tools wiretap doc epan plugins packaging gtk help
 
 if HAVE_PLUGINS
Index: Makefile.common
===================================================================
RCS file: /usr/local/cvsroot/ethereal/Makefile.common,v
retrieving revision 1.10
diff -p -u -r1.10 Makefile.common
--- Makefile.common	3 Feb 2004 18:57:26 -0000	1.10
+++ Makefile.common	9 Feb 2004 09:43:31 -0000
@@ -24,415 +24,6 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 
-DISSECTOR_SRC =	\
-	packet-aarp.c	\
-	packet-acap.c	\
-	packet-acse.c	\
-	packet-afp.c	\
-	packet-afs.c	\
-	packet-aim.c	\
-	packet-ajp13.c	\
-	packet-alcap.c	\
-	packet-ans.c	\
-	packet-ansi_637.c	\
-	packet-ansi_683.c	\
-	packet-ansi_a.c	\
-	packet-ansi_map.c	\
-	packet-aodv.c	\
-	packet-arcnet.c	\
-	packet-arp.c	\
-	packet-asap.c	\
-	packet-ascend.c	\
-	packet-asf.c	\
-	packet-atalk.c	\
-	packet-atm.c	\
-	packet-auto_rp.c	\
-	packet-bacapp.c	\
-	packet-bacnet.c	\
-	packet-beep.c	\
-	packet-bfd.c	\
-	packet-bgp.c	\
-	packet-bofl.c	\
-	packet-bootp.c	\
-	packet-bootparams.c	\
-	packet-bpdu.c	\
-	packet-brdwlk.c	\
-	packet-bssap.c	\
-	packet-bssgp.c	\
-	packet-bvlc.c	\
-	packet-ccsds.c	\
-	packet-cdp.c	\
-	packet-cgmp.c	\
-	packet-chdlc.c	\
-	packet-cisco-oui.c	\
-	packet-clearcase.c	\
-	packet-clip.c	\
-	packet-clnp.c	\
-	packet-cops.c	\
-	packet-cosine.c	\
-	packet-cpfi.c	\
-	packet-cpha.c	\
-	packet-cups.c	\
-	packet-data.c	\
-	packet-dccp.c	\
-	packet-dcerpc-afs4int.c	\
-	packet-dcerpc-atsvc.c	\
-	packet-dcerpc-bossvr.c	\
-	packet-dcerpc-browser.c	\
-	packet-dcerpc-budb.c	\
-	packet-dcerpc-butc.c	\
-	packet-dcerpc-cds_clerkserver.c	\
-	packet-dcerpc-cds_solicit.c	\
-	packet-dcerpc-conv.c	\
-	packet-dcerpc-cprpc_server.c	\
-	packet-dcerpc-dce122.c	\
-	packet-dcerpc-dfs.c	\
-	packet-dcerpc-dnsserver.c	\
-	packet-dcerpc-drsuapi.c	\
-	packet-dcerpc-dtsprovider.c	\
-	packet-dcerpc-dtsstime_req.c	\
-	packet-dcerpc-epm.c	\
-	packet-dcerpc-epm4.c	\
-	packet-dcerpc-fldb.c	\
-	packet-dcerpc-ftserver.c	\
-	packet-dcerpc-icl_rpc.c	\
-	packet-dcerpc-initshutdown.c	\
-	packet-dcerpc-krb5rpc.c	\
-	packet-dcerpc-lsa-ds.c	\
-	packet-dcerpc-lsa.c	\
-	packet-dcerpc-mapi.c	\
-	packet-dcerpc-messenger.c	\
-	packet-dcerpc-mgmt.c	\
-	packet-dcerpc-ndr.c	\
-	packet-dcerpc-netlogon.c	\
-	packet-dcerpc-nspi.c	\
-	packet-dcerpc-oxid.c	\
-	packet-dcerpc-reg.c	\
-	packet-dcerpc-remact.c	\
-	packet-dcerpc-rep_proc.c	\
-	packet-dcerpc-roverride.c	\
-	packet-dcerpc-rpriv.c	\
-	packet-dcerpc-rs_acct.c	\
-	packet-dcerpc-rs_attr.c	\
-	packet-dcerpc-rs_bind.c	\
-	packet-dcerpc-rs_misc.c	\
-	packet-dcerpc-rs_pgo.c	\
-	packet-dcerpc-rs_plcy.c	\
-	packet-dcerpc-rs_prop_acct.c	\
-	packet-dcerpc-rs_repadm.c	\
-	packet-dcerpc-rs_replist.c	\
-	packet-dcerpc-rs_unix.c	\
-	packet-dcerpc-rsec_login.c	\
-	packet-dcerpc-samr.c	\
-	packet-dcerpc-secidmap.c	\
-	packet-dcerpc-spoolss.c	\
-	packet-dcerpc-srvsvc.c	\
-	packet-dcerpc-svcctl.c	\
-	packet-dcerpc-tapi.c	\
-	packet-dcerpc-tkn4int.c	\
-	packet-dcerpc-trksvr.c	\
-	packet-dcerpc-ubikdisk.c	\
-	packet-dcerpc-ubikvote.c	\
-	packet-dcerpc-update.c	\
-	packet-dcerpc-wkssvc.c	\
-	packet-dcerpc.c	\
-	packet-ddtp.c	\
-	packet-dec-bpdu.c	\
-	packet-dhcpv6.c	\
-	packet-diameter.c	\
-	packet-diffserv-mpls-common.c	\
-	packet-distcc.c	\
-	packet-dlsw.c	\
-	packet-dns.c	\
-	packet-dsi.c	\
-	packet-dvmrp.c	\
-	packet-eap.c	\
-	packet-eapol.c	\
-	packet-echo.c	\
-	packet-edonkey.c	\
-	packet-eigrp.c	\
-	packet-enc.c	\
-	packet-enip.c	\
-	packet-esis.c	\
-	packet-eth.c	\
-	packet-etherip.c	\
-	packet-ethertype.c	\
-	packet-fc.c	\
-	packet-fcct.c	\
-	packet-fcdns.c	\
-	packet-fcels.c	\
-	packet-fcfcs.c	\
-	packet-fcfzs.c	\
-	packet-fcip.c	\
-	packet-fclctl.c	\
-	packet-fcp.c	\
-	packet-fcsb3.c	\
-	packet-fcsp.c	\
-	packet-fcswils.c	\
-	packet-fddi.c	\
-	packet-fix.c	\
-	packet-fr.c	\
-	packet-frame.c	\
-	packet-ftp.c	\
-	packet-fw1.c	\
-	packet-giop.c	\
-	packet-gmrp.c	\
-	packet-gnutella.c	\
-	packet-gprs-ns.c	\
-	packet-gre.c	\
-	packet-gsm_a.c	\
-	packet-gsm_map.c	\
-	packet-gsm_sms.c	\
-	packet-gsm_sms_ud.c	\
-	packet-gssapi.c	\
-	packet-gtp.c	\
-	packet-gvrp.c	\
-	packet-h1.c	\
-	packet-h225.c	\
-	packet-h245.c	\
-	packet-h261.c	\
-	packet-h263.c	\
-	packet-h450.c	\
-	packet-hclnfsd.c	\
-	packet-hpext.c	\
-	packet-hsrp.c	\
-	packet-http.c	\
-	packet-hyperscsi.c	\
-	packet-iapp.c	\
-	packet-iax2.c	\
-	packet-ib.c	\
-	packet-icap.c	\
-	packet-icmpv6.c	\
-	packet-icp.c	\
-	packet-icq.c	\
-	packet-ieee80211.c	\
-	packet-ieee8023.c	\
-	packet-igap.c	\
-	packet-igmp.c	\
-	packet-igrp.c	\
-	packet-image-gif.c	\
-	packet-image-jfif.c	\
-	packet-imap.c	\
-	packet-ip.c	\
-	packet-ipfc.c	\
-	packet-ipmi.c	\
-	packet-ipp.c	\
-	packet-ipsec-udp.c	\
-	packet-ipsec.c	\
-	packet-ipv6.c	\
-	packet-ipx.c	\
-	packet-ipxwan.c	\
-	packet-irc.c	\
-	packet-isakmp.c	\
-	packet-iscsi.c	\
-	packet-isdn.c	\
-	packet-isis-clv.c	\
-	packet-isis-hello.c	\
-	packet-isis-lsp.c	\
-	packet-isis-snp.c	\
-	packet-isis.c	\
-	packet-isl.c	\
-	packet-ismp.c	\
-	packet-isns.c	\
-	packet-isup.c	\
-	packet-iua.c	\
-	packet-jabber.c	\
-	packet-kadm5.c	\
-	packet-kerberos.c	\
-	packet-klm.c	\
-	packet-kpasswd.c	\
-	packet-l2tp.c	\
-	packet-lapb.c	\
-	packet-lapbether.c	\
-	packet-lapd.c	\
-	packet-laplink.c	\
-	packet-ldap.c	\
-	packet-ldp.c	\
-	packet-llc.c	\
-	packet-lmi.c	\
-	packet-lmp.c	\
-	packet-lpd.c	\
-	packet-lwapp.c	\
-	packet-m2pa.c	\
-	packet-m2tp.c	\
-	packet-m2ua.c	\
-	packet-m3ua.c	\
-	packet-mbtcp.c	\
-	packet-mdshdr.c	\
-	packet-mip.c	\
-	packet-mip6.c	\
-	packet-mmse.c	\
-	packet-mount.c	\
-	packet-mpeg1.c	\
-	packet-mpls.c	\
-	packet-mrdisc.c	\
-	packet-msdp.c	\
-	packet-msn-messenger.c	\
-	packet-msnip.c	\
-	packet-msproxy.c	\
-	packet-mtp2.c	\
-	packet-mtp3.c	\
-	packet-mtp3mg.c	\
-	packet-multipart.c	\
-	packet-mysql.c	\
-	packet-nbipx.c	\
-	packet-nbns.c	\
-	packet-ncp.c	\
-	packet-ncp2222.c	\
-	packet-ndmp.c	\
-	packet-ndps.c	\
-	packet-netbios.c	\
-	packet-netflow.c	\
-	packet-nfs.c	\
-	packet-nfsacl.c	\
-	packet-nfsauth.c	\
-	packet-nisplus.c	\
-	packet-nlm.c	\
-	packet-nlsp.c	\
-	packet-nntp.c	\
-	packet-nt-oui.c	\
-	packet-nt-sonmp.c	\
-	packet-nt-tpcp.c	\
-	packet-ntlmssp.c	\
-	packet-ntp.c	\
-	packet-null.c	\
-	packet-olsr.c	\
-	packet-osi-options.c	\
-	packet-osi.c	\
-	packet-ospf.c	\
-	packet-pcnfsd.c	\
-	packet-per.c	\
-	packet-pflog.c	\
-	packet-pgm.c	\
-	packet-pim.c	\
-	packet-pop.c	\
-	packet-portmap.c	\
-	packet-ppp.c	\
-	packet-pppoe.c	\
-	packet-pptp.c	\
-	packet-pres.c	\
-	packet-prism.c	\
-	packet-q2931.c	\
-	packet-q931.c	\
-	packet-q933.c	\
-	packet-qllc.c	\
-	packet-quake.c	\
-	packet-quake2.c	\
-	packet-quake3.c	\
-	packet-quakeworld.c	\
-	packet-radius.c	\
-	packet-radiotap.c	\
-	packet-ranap.c	\
-	packet-raw.c	\
-	packet-rip.c	\
-	packet-ripng.c	\
-	packet-rlogin.c	\
-	packet-rmcp.c	\
-	packet-rmi.c	\
-	packet-rmp.c	\
-	packet-rpc.c	\
-	packet-rpl.c	\
-	packet-rquota.c	\
-	packet-rsh.c	\
-	packet-rstat.c	\
-	packet-rsvp.c	\
-	packet-rsync.c	\
-	packet-rtcp.c	\
-	packet-rtp-events.c	\
-	packet-rtp.c	\
-	packet-rtsp.c	\
-	packet-rwall.c	\
-	packet-rx.c	\
-	packet-sadmind.c	\
-	packet-sap.c	\
-	packet-sccp.c	\
-	packet-sccpmg.c	\
-	packet-scsi.c	\
-	packet-sctp.c	\
-	packet-sdlc.c	\
-	packet-sdp.c	\
-	packet-sebek.c	\
-	packet-ses.c	\
-	packet-sflow.c	\
-	packet-sip.c	\
-	packet-sipfrag.c	\
-	packet-skinny.c	\
-	packet-slimp3.c	\
-	packet-sll.c	\
-	packet-slowprotocols.c	\
-	packet-smb-browse.c	\
-	packet-smb-common.c	\
-	packet-smb-logon.c	\
-	packet-smb-mailslot.c	\
-	packet-smb-pipe.c	\
-	packet-smb-sidsnooping.c	\
-	packet-smb.c	\
-	packet-smpp.c	\
-	packet-smtp.c	\
-	packet-sna.c	\
-	packet-snaeth.c	\
-	packet-snmp.c	\
-	packet-socks.c	\
-	packet-spnego.c	\
-	packet-spray.c	\
-	packet-srvloc.c	\
-	packet-sscop.c	\
-	packet-ssh.c	\
-	packet-ssl.c	\
-	packet-stat-notify.c	\
-	packet-stat.c	\
-	packet-stun.c	\
-	packet-sua.c	\
-	packet-syslog.c	\
-	packet-t38.c	\
-	packet-tacacs.c	\
-	packet-tcap.c	\
-	packet-tcp.c	\
-	packet-tds.c	\
-	packet-teimanagement.c	\
-	packet-telnet.c	\
-	packet-teredo.c	\
-	packet-text-media.c	\
-	packet-tftp.c	\
-	packet-time.c	\
-	packet-tns.c	\
-	packet-tpkt.c	\
-	packet-tr.c	\
-	packet-trmac.c	\
-	packet-tsp.c	\
-	packet-tzsp.c	\
-	packet-ucp.c	\
-	packet-udp.c	\
-	packet-v120.c	\
-	packet-vines.c	\
-	packet-vj.c	\
-	packet-vlan.c	\
-	packet-vrrp.c	\
-	packet-vtp.c	\
-	packet-wap.c	\
-	packet-wbxml.c	\
-	packet-wccp.c	\
-	packet-wcp.c	\
-	packet-wfleet-hdlc.c	\
-	packet-who.c	\
-	packet-wlancap.c	\
-	packet-wsp.c	\
-	packet-wtls.c	\
-	packet-wtp.c	\
-	packet-x11.c	\
-	packet-x25.c	\
-	packet-x29.c	\
-	packet-xdmcp.c	\
-	packet-xot.c	\
-	packet-xyplex.c	\
-	packet-yhoo.c	\
-	packet-ymsg.c	\
-	packet-ypbind.c	\
-	packet-yppasswd.c	\
-	packet-ypserv.c	\
-	packet-ypxfr.c	\
-	packet-zebra.c
-
 noinst_HEADERS =	\
 	packet-acse.h	\
 	packet-afp.h	\
@@ -598,81 +189,12 @@ noinst_HEADERS =	\
 	packet-ypserv.h	\
 	packet-ypxfr.h
 
-DISSECTOR_SUPPORT_SRC =	\
-	adler32.c	\
-	adler32.h	\
-	afn.c	\
-	afn.h	\
-	aftypes.h	\
-	arcnet_pids.h	\
-	asn1.c	\
-	asn1.h	\
-	bridged_pids.h	\
-	chdlctypes.h	\
-	column.c	\
-	column.h	\
-	crc32.c	\
-	crc32.h	\
-	crypt-des.c	\
-	crypt-des.h	\
-	crypt-md4.c	\
-	crypt-md4.h	\
-	crypt-md5.c	\
-	crypt-md5.h	\
-	crypt-rc4.c	\
-	crypt-rc4.h	\
-	etypes.h	\
-	follow.c	\
-	follow.h	\
-	format-oid.h	\
-	g711.c	\
-	g711.h	\
-	greproto.h	\
-	h225-persistentdata.c	\
-	h225-persistentdata.h	\
-	in_cksum.c	\
-	in_cksum.h	\
-	ip_opts.h	\
-	ipproto.c	\
-	ipproto.h	\
-	lapd_sapi.h	\
-	llcsaps.h	\
-	nlpid.h	\
-	oui.h	\
-	packet-dcerpc-nt.c	\
-	ppptypes.h	\
-	prefs-int.h	\
-	prefs.c	\
-	prefs.h	\
-	ptvcursor.c	\
-	ptvcursor.h	\
-	reassemble.c	\
-	reassemble.h	\
-	req_resp_hdrs.c	\
-	req_resp_hdrs.h	\
-	rpc_defrag.h	\
-	rtp_pt.h	\
-	sctpppids.h	\
-	smb.h	\
-	t35.c	\
-	t35.h	\
-	tap.c	\
-	tap.h	\
-	util.c	\
-	util.h	\
-	x264_prt_id.h	\
-	xdlc.c	\
-	xdlc.h	\
-	xmlstub.c	\
-	xmlstub.h
-
 BUILT_SOURCES =	\
 	cvsversion.h	\
 	x11-declarations.h	\
 	x11-register-info.h
 
 ETHEREAL_COMMON_SRC =	\
-	$(DISSECTOR_SUPPORT_SRC)	\
 	$(BUILT_SOURCES)	\
 	capture_stop_conditions.c	\
 	capture_stop_conditions.h	\
@@ -722,9 +244,7 @@ TETHEREAL_TAP_SRC =	\
 	tap-wspstat.c
 
 ethereal_SOURCES =	\
-	$(DISSECTOR_SRC)	\
 	$(ETHEREAL_COMMON_SRC)	\
-	register.c	\
 	capture.c	\
 	capture.h	\
 	file.c	\
@@ -756,11 +276,9 @@ EXTRA_ethereal_SOURCES =	\
 	strptime.h
 
 tethereal_SOURCES =	\
-	$(DISSECTOR_SRC)	\
 	$(ETHEREAL_COMMON_SRC)	\
 	$(TETHEREAL_TAP_SRC)	\
 	tethereal-tap-register.c	\
-	register.c	\
 	tethereal.c
 
 text2pcap_SOURCES = text2pcap.c text2pcap-scanner.l
@@ -770,9 +288,6 @@ mergecap_SOURCES = mergecap.c cvsversion
 editcap_SOURCES = editcap.c
 
 dftest_SOURCES =	\
-	$(DISSECTOR_SRC)	\
-	$(DISSECTOR_SUPPORT_SRC)	\
 	$(BUILT_SOURCES)	\
-	register.c	\
 	dftest.c
 
Index: Makefile.nmake
===================================================================
RCS file: /usr/local/cvsroot/ethereal/Makefile.nmake,v
retrieving revision 1.402
diff -p -u -r1.402 Makefile.nmake
--- Makefile.nmake	6 Feb 2004 18:47:43 -0000	1.402
+++ Makefile.nmake	9 Feb 2004 09:43:32 -0000
@@ -21,42 +21,13 @@ CFLAGS=-DHAVE_CONFIG_H $(LOCAL_CFLAGS) $
 CVARSDLL=-DWIN32 -DNULL=0 -D_MT -D_DLL
 
 .c.obj::
-   $(CC) $(CVARSDLL) $(CFLAGS) -Fd.\ -c $<
+	$(CC) $(CVARSDLL) $(CFLAGS) -Fd.\ -c $<
 
 include Makefile.common
 
-DISSECTOR_OBJECTS = $(DISSECTOR_SRC:.c=.obj)
-
 TETHEREAL_TAP_OBJECTS = $(TETHEREAL_TAP_SRC:.c=.obj)
 
-DISSECTOR_SUPPORT_OBJECTS = \
-	adler32.obj      \
-	afn.obj          \
-	asn1.obj         \
-	column.obj       \
-	crc32.obj        \
-	crypt-des.obj    \
-	crypt-md4.obj    \
-	crypt-md5.obj    \
-	crypt-rc4.obj    \
-	follow.obj       \
-	g711.obj	\
-	h225-persistentdata.obj \
-	in_cksum.obj	 \
-	ipproto.obj      \
-	packet-dcerpc-nt.obj \
-	prefs.obj        \
-	ptvcursor.obj    \
-	reassemble.obj   \
-	req_resp_hdrs.obj \
-	t35.obj		\
-	tap.obj		\
-	util.obj	\
-	xdlc.obj	\
-	xmlstub.obj
-
 ETHEREAL_COMMON_OBJECTS = \
-	$(DISSECTOR_SUPPORT_OBJECTS) \
 	capture_stop_conditions.obj \
 	capture-wpcap.obj \
 	cfile.obj       \
@@ -73,7 +44,6 @@ ETHEREAL_COMMON_OBJECTS = \
 	version_info.obj
 
 ethereal_OBJECTS = \
-	$(DISSECTOR_OBJECTS) \
 	$(ETHEREAL_COMMON_OBJECTS) \
 	capture.obj		\
 	file.obj         	\
@@ -82,15 +52,12 @@ ethereal_OBJECTS = \
 	summary.obj
 
 tethereal_OBJECTS = \
-	$(DISSECTOR_OBJECTS) \
 	$(ETHEREAL_COMMON_OBJECTS) \
 	$(TETHEREAL_TAP_OBJECTS) \
 	tethereal-tap-register.obj \
 	tethereal.obj
 
 dftest_OBJECTS = \
-	$(DISSECTOR_OBJECTS) \
-	$(DISSECTOR_SUPPORT_OBJECTS) \
 	dftest.obj
 
 randpkt_OBJECTS = \
Index: TODO
===================================================================
RCS file: /usr/local/cvsroot/ethereal/TODO,v
retrieving revision 1.12
diff -p -u -r1.12 TODO
--- TODO	28 May 2003 22:58:46 -0000	1.12
+++ TODO	9 Feb 2004 09:43:32 -0000
@@ -30,7 +30,7 @@ all, in "libpcap"-style capture filters:
 	etc.)
 
 *) I just discovered that sshd sets the SSH_CLIENT variable to source IP,
-sort port, and destination port. That coupled with a destination IP
+source port, and destination port. That coupled with a destination IP
 would give us enough information to carry out remote protocol capturing,
 tcpdump over ssh:
 
Index: make-reg-dotc
===================================================================
RCS file: make-reg-dotc
diff -N make-reg-dotc
--- make-reg-dotc	11 Jul 2001 05:41:38 -0000	1.7
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,75 +0,0 @@
-#! /bin/sh
-
-#
-# The first argument is the output filename.
-#
-
-outfile="$1"
-shift
-
-#
-# The second argument is the directory in which the source files live.
-#
-srcdir="$1"
-shift
-
-#
-# All subsequent arguments are the files to scan.
-#
-rm -f ${outfile}-tmp
-echo '/* Do not modify this file.  */' >${outfile}-tmp
-echo '/* It is created automatically by the Makefile.  */'>>${outfile}-tmp
-echo '#include "register.h"' >>${outfile}-tmp
-
-#
-# Build code to call all the protocol registration routines.
-#
-echo 'void register_all_protocols(void) {' >>${outfile}-tmp
-for f in "$@"
-do
-	if [ -f $f ]
-	then
-		srcfile=$f
-	else
-		srcfile=$srcdir/$f
-	fi
-	grep '^proto_register_[a-z_0-9A-Z]* *(' $srcfile 2>/dev/null | grep -v ';'
-done | sed -e 's/^.*://' -e 's/^\([a-z_0-9A-Z]*\).*/  {extern void \1 (void); \1 ();}/' >>${outfile}-tmp
-for f in "$@"
-do
-	if [ -f $f ]
-	then
-		srcfile=$f
-	else
-		srcfile=$srcdir/$f
-	fi
-	grep '^void proto_register_[a-z_0-9A-Z]* *(' $srcfile 2>/dev/null | grep -v ';'
-done | sed -e 's/^.*://' -e 's/^void \([a-z_0-9A-Z]*\).*/  {extern void \1 (void); \1 ();}/' >>${outfile}-tmp
-echo '}' >>${outfile}-tmp
-
-#
-# Build code to call all the protocol handoff registration routines.
-#
-echo 'void register_all_protocol_handoffs(void) {' >>${outfile}-tmp
-for f in "$@"
-do
-	if [ -f $f ]
-	then
-		srcfile=$f
-	else
-		srcfile=$srcdir/$f
-	fi
-	grep '^proto_reg_handoff_[a-z_0-9A-Z]* *(' $srcfile 2>/dev/null | grep -v ';'
-done | sed -e 's/^.*://' -e 's/^\([a-z_0-9A-Z]*\).*/  {extern void \1 (void); \1 ();}/' >>${outfile}-tmp
-for f in "$@"
-do
-	if [ -f $f ]
-	then
-		srcfile=$f
-	else
-		srcfile=$srcdir/$f
-	fi
-	grep '^void proto_reg_handoff_[a-z_0-9A-Z]* *(' $srcfile 2>/dev/null | grep -v ';'
-done | sed -e 's/^.*://' -e 's/^void \([a-z_0-9A-Z]*\).*/  {extern void \1 (void); \1 ();}/' >>${outfile}-tmp
-echo '}' >>${outfile}-tmp
-mv ${outfile}-tmp ${outfile}
Index: make-reg-dotc.py
===================================================================
RCS file: make-reg-dotc.py
diff -N make-reg-dotc.py
--- make-reg-dotc.py	21 Jul 2003 07:05:44 -0000	1.4
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,118 +0,0 @@
-#!/usr/bin/python
-#
-# Looks for registration routines in the protocol dissectors,
-# and assembles C code to call all the routines.
-#
-# This is a Python version of the make-reg-dotc shell script.
-# Running the shell script on Win32 is very very slow because of
-# all the process-launching that goes on --- multiple greps and
-# seds for each input file.  I wrote this python version so that
-# less processes would have to be started.
-#
-# $Id: make-reg-dotc.py,v 1.4 2003/07/21 07:05:44 girlich Exp $
-
-import os
-import sys
-import re
-
-tmp_filename = "register.c-tmp"
-final_filename = "register.c"
-
-#
-# The first argument is the directory in which the source files live.
-#
-srcdir = sys.argv[1]
-
-#
-# All subsequent arguments are the files to scan.
-#
-files = sys.argv[2:]
-
-reg_code = open(tmp_filename, "w")
-
-reg_code.write("/* Do not modify this file.  */\n")
-reg_code.write("/* It is created automatically by the Makefile.  */\n")
-reg_code.write('#include "register.h"\n')
-
-# Create the proper list of filenames
-filenames = []
-for file in files:
-	if os.path.isfile(file):
-		filenames.append(file)
-	else:
-		filenames.append("%s/%s" % (srcdir, file))
-
-
-# Look through all files, applying the regex to each line.
-# If the pattern matches, save the "symbol" section to the
-# appropriate array.
-proto_reg = []
-handoff_reg = []
-
-# For those that don't know Python, r"" indicates a raw string,
-# devoid of Python escapes.
-proto_regex0 = r"^(?P<symbol>proto_register_[_A-Za-z0-9]+)\s*\([^;]+$"
-proto_regex1 = r"void\s+(?P<symbol>proto_register_[_A-Za-z0-9]+)\s*\([^;]+$"
-
-handoff_regex0 = r"^(?P<symbol>proto_reg_handoff_[_A-Za-z0-9]+)\s*\([^;]+$"
-handoff_regex1 = r"void\s+(?P<symbol>proto_reg_handoff_[_A-Za-z0-9]+)\s*\([^;]+$"
-
-# This table drives the pattern-matching and symbol-harvesting
-patterns = [
-	( proto_reg, re.compile(proto_regex0) ),
-	( proto_reg, re.compile(proto_regex1) ),
-	( handoff_reg, re.compile(handoff_regex0) ),
-	( handoff_reg, re.compile(handoff_regex1) ),
-	]
-
-# Grep
-for filename in filenames:
-	file = open(filename)
-#	print "Searching %s" % (filename)
-	for line in file.readlines():
-		for action in patterns:
-			regex = action[1]
-			match = regex.search(line)
-			if match:
-				symbol = match.group("symbol")
-				list = action[0]
-				list.append(symbol)
-	file.close()
-
-# Sort the lists to make them pretty
-proto_reg.sort()
-handoff_reg.sort()
-
-# Make register_all_protocols()
-reg_code.write("void register_all_protocols(void) {\n")
-
-for symbol in proto_reg:
-	line = "  {extern void %s (void); %s ();}\n" % (symbol, symbol)
-	reg_code.write(line)
-
-reg_code.write("}\n")
-
-
-# Make register_all_protocol_handoffs()
-reg_code.write("void register_all_protocol_handoffs(void) {\n")
-
-for symbol in handoff_reg:
-	line = "  {extern void %s (void); %s ();}\n" % (symbol, symbol)
-	reg_code.write(line)
-
-reg_code.write("}\n")
-
-# Close the file
-reg_code.close()
-
-# Remove the old final_file if it exists.
-try:
-	os.stat(final_filename)
-	os.remove(final_filename)
-except OSError:
-	pass
-
-# Move from tmp file to final file
-os.rename(tmp_filename, final_filename)
-
-
Index: epan/.cvsignore
===================================================================
RCS file: /usr/local/cvsroot/ethereal/epan/.cvsignore,v
retrieving revision 1.8
diff -p -u -r1.8 .cvsignore
--- epan/.cvsignore	7 Feb 2004 04:35:49 -0000	1.8
+++ epan/.cvsignore	9 Feb 2004 09:43:38 -0000
@@ -18,6 +18,7 @@ dfilter-grammar.c
 dfilter-grammar.h
 dfilter-scanner.c
 libtool
+register.c
 stamp-h
 stamp-h.in
 stamp-h1
Index: epan/Makefile.am
===================================================================
RCS file: /usr/local/cvsroot/ethereal/epan/Makefile.am,v
retrieving revision 1.32
diff -p -u -r1.32 Makefile.am
--- epan/Makefile.am	6 Dec 2003 06:22:10 -0000	1.32
+++ epan/Makefile.am	9 Feb 2004 09:43:41 -0000
@@ -29,11 +29,20 @@ SUBDIRS = ftypes dfilter
 
 ACLOCAL_AMFLAGS = `../aclocal-flags`
 
-noinst_LIBRARIES = libethereal.a
+include Makefile.common
 
 INCLUDES = -I$(srcdir)/..
 
-libethereal_a_SOURCES = \
+lib_LTLIBRARIES = libethereal.la
+
+#
+# Add the object files for missing routines, if any.
+#
+libethereal_la_LIBADD = ftypes/libftypes.la dfilter/libdfilter.la
+libethereal_la_DEPENDENCIES = @INET_ATON_O@ @INET_PTON_O@ @INET_NTOP_O@
+libethereal_la_LDFLAGS = -version-info 0:1:0
+
+libethereal_la_SOURCES = \
 	atalk-utils.c		\
 	atalk-utils.h		\
 	bitswap.c		\
@@ -47,7 +56,7 @@ libethereal_a_SOURCES = \
 	column-utils.h		\
 	epan.c			\
 	epan.h			\
-	epan_dissect.h	\
+	epan_dissect.h		\
 	except.c		\
 	except.h		\
 	exceptions.h		\
@@ -85,10 +94,12 @@ libethereal_a_SOURCES = \
 	tvbuff.c		\
 	tvbuff.h		\
 	value_string.c		\
-	value_string.h		
+	value_string.h		\
+	$(DISSECTOR_SRC)	\
+	$(DISSECTOR_SUPPORT_SRC)
 
-EXTRA_libethereal_a_SOURCES =	\
-        inet_aton.c		\
+EXTRA_libethereal_la_SOURCES =	\
+	inet_aton.c		\
 	inet_pton.c		\
 	inet_ntop.c		\
 	inet_aton.h		\
@@ -97,18 +108,68 @@ EXTRA_libethereal_a_SOURCES =	\
 EXTRA_DIST = \
 	config.h.win32		\
 	Makefile.nmake		\
+	make-reg-dotc		\
+	make-reg-dotc.py	\
 	tvbtest.c
 
 CLEANFILES = \
 	libethereal.a	\
 	*~
 
-#
-# Add the object files for missing routines, if any.
-#
-libethereal_a_LIBADD = @INET_ATON_O@ @INET_PTON_O@ @INET_NTOP_O@
-libethereal_a_DEPENDENCIES = @INET_ATON_O@ @INET_PTON_O@ @INET_NTOP_O@
-
+MAINTAINERCLEANFILES = \
+	register.c
 
 tvbtest: tvbtest.o tvbuff.o except.o strutil.o
 	$(LINK) -o tvbtest tvbtest.o tvbuff.o except.o strutil.o `glib-config --libs`
+
+# Build "register.c", which contains a function "register_all_protocols()"
+# that calls the register routines for all protocols.
+#
+# We do this by grepping through 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 must
+# start in column zero, or must be preceded only by "void " starting in
+# column zero, and must not be inside #if.
+#
+# We assume that all dissector routines are in "packet-XXX.c" files.
+#
+# For some unknown reason, having a big "for" loop in the Makefile
+# to scan all the "packet-XXX.c" 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 "register.c" file.
+#
+# The first argument is the name of the file to write.
+# The second argument is the directory in which the source files live.
+# All subsequent arguments are the files to scan.
+#
+register.c: $(plugin_src) $(DISSECTOR_SRC) $(top_srcdir)/make-reg-dotc
+	@if test -n $(PYTHON); then \
+		echo Making register.c with python ; \
+		$(PYTHON) $(top_srcdir)/make-reg-dotc.py $(srcdir) $(DISSECTOR_SRC) ; \
+	else \
+		echo Making register.c with shell script ; \
+		$(top_srcdir)/make-reg-dotc register.c $(srcdir) \
+			$(plugin_src) $(DISSECTOR_SRC) ; \
+	fi
+
+# Currently register.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 register.c non-portable, uncomment
+# the dist-hook line below.
+#
+# Oh, yuk.  We don't want to include "register.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
+# "register.c", so that "dist" won't pick it up.
+#
+#dist-hook:
+#	@rm -f $(distdir)/register.c
+
Index: epan/Makefile.common
===================================================================
RCS file: epan/Makefile.common
diff -N epan/Makefile.common
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ epan/Makefile.common	9 Feb 2004 09:43:41 -0000
@@ -0,0 +1,504 @@
+# Makefile.common
+#     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,v 1.10 2004/02/03 18:57:26 guy Exp $
+#
+# Ethereal - Network traffic analyzer
+# By Gerald Combs <gerald@xxxxxxxxxxxx>
+# 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.
+
+
+DISSECTOR_SRC =	\
+	../packet-aarp.c	\
+	../packet-acap.c	\
+	../packet-acse.c	\
+	../packet-afp.c	\
+	../packet-afs.c	\
+	../packet-aim.c	\
+	../packet-ajp13.c	\
+	../packet-alcap.c	\
+	../packet-ans.c	\
+	../packet-ansi_637.c	\
+	../packet-ansi_683.c	\
+	../packet-ansi_a.c	\
+	../packet-ansi_map.c	\
+	../packet-aodv.c	\
+	../packet-arcnet.c	\
+	../packet-arp.c	\
+	../packet-asap.c	\
+	../packet-ascend.c	\
+	../packet-asf.c	\
+	../packet-atalk.c	\
+	../packet-atm.c	\
+	../packet-auto_rp.c	\
+	../packet-bacapp.c	\
+	../packet-bacnet.c	\
+	../packet-beep.c	\
+	../packet-bfd.c	\
+	../packet-bgp.c	\
+	../packet-bofl.c	\
+	../packet-bootp.c	\
+	../packet-bootparams.c	\
+	../packet-bpdu.c	\
+	../packet-brdwlk.c	\
+	../packet-bssap.c	\
+	../packet-bssgp.c	\
+	../packet-bvlc.c	\
+	../packet-ccsds.c	\
+	../packet-cdp.c	\
+	../packet-cgmp.c	\
+	../packet-chdlc.c	\
+	../packet-cisco-oui.c	\
+	../packet-clearcase.c	\
+	../packet-clip.c	\
+	../packet-clnp.c	\
+	../packet-cops.c	\
+	../packet-cosine.c	\
+	../packet-cpfi.c	\
+	../packet-cpha.c	\
+	../packet-cups.c	\
+	../packet-data.c	\
+	../packet-dccp.c	\
+	../packet-dcerpc-afs4int.c	\
+	../packet-dcerpc-atsvc.c	\
+	../packet-dcerpc-bossvr.c	\
+	../packet-dcerpc-browser.c	\
+	../packet-dcerpc-budb.c	\
+	../packet-dcerpc-butc.c	\
+	../packet-dcerpc-cds_clerkserver.c	\
+	../packet-dcerpc-cds_solicit.c	\
+	../packet-dcerpc-conv.c	\
+	../packet-dcerpc-cprpc_server.c	\
+	../packet-dcerpc-dce122.c	\
+	../packet-dcerpc-dfs.c	\
+	../packet-dcerpc-dnsserver.c	\
+	../packet-dcerpc-drsuapi.c	\
+	../packet-dcerpc-dtsprovider.c	\
+	../packet-dcerpc-dtsstime_req.c	\
+	../packet-dcerpc-epm.c	\
+	../packet-dcerpc-epm4.c	\
+	../packet-dcerpc-fldb.c	\
+	../packet-dcerpc-ftserver.c	\
+	../packet-dcerpc-icl_rpc.c	\
+	../packet-dcerpc-initshutdown.c	\
+	../packet-dcerpc-krb5rpc.c	\
+	../packet-dcerpc-lsa-ds.c	\
+	../packet-dcerpc-lsa.c	\
+	../packet-dcerpc-mapi.c	\
+	../packet-dcerpc-messenger.c	\
+	../packet-dcerpc-mgmt.c	\
+	../packet-dcerpc-ndr.c	\
+	../packet-dcerpc-netlogon.c	\
+	../packet-dcerpc-nspi.c	\
+	../packet-dcerpc-oxid.c	\
+	../packet-dcerpc-reg.c	\
+	../packet-dcerpc-remact.c	\
+	../packet-dcerpc-rep_proc.c	\
+	../packet-dcerpc-roverride.c	\
+	../packet-dcerpc-rpriv.c	\
+	../packet-dcerpc-rs_acct.c	\
+	../packet-dcerpc-rs_attr.c	\
+	../packet-dcerpc-rs_bind.c	\
+	../packet-dcerpc-rs_misc.c	\
+	../packet-dcerpc-rs_pgo.c	\
+	../packet-dcerpc-rs_plcy.c	\
+	../packet-dcerpc-rs_prop_acct.c	\
+	../packet-dcerpc-rs_repadm.c	\
+	../packet-dcerpc-rs_replist.c	\
+	../packet-dcerpc-rs_unix.c	\
+	../packet-dcerpc-rsec_login.c	\
+	../packet-dcerpc-samr.c	\
+	../packet-dcerpc-secidmap.c	\
+	../packet-dcerpc-spoolss.c	\
+	../packet-dcerpc-srvsvc.c	\
+	../packet-dcerpc-svcctl.c	\
+	../packet-dcerpc-tapi.c	\
+	../packet-dcerpc-tkn4int.c	\
+	../packet-dcerpc-trksvr.c	\
+	../packet-dcerpc-ubikdisk.c	\
+	../packet-dcerpc-ubikvote.c	\
+	../packet-dcerpc-update.c	\
+	../packet-dcerpc-wkssvc.c	\
+	../packet-dcerpc.c	\
+	../packet-ddtp.c	\
+	../packet-dec-bpdu.c	\
+	../packet-dhcpv6.c	\
+	../packet-diameter.c	\
+	../packet-diffserv-mpls-common.c	\
+	../packet-distcc.c	\
+	../packet-dlsw.c	\
+	../packet-dns.c	\
+	../packet-dsi.c	\
+	../packet-dvmrp.c	\
+	../packet-eap.c	\
+	../packet-eapol.c	\
+	../packet-echo.c	\
+	../packet-edonkey.c	\
+	../packet-eigrp.c	\
+	../packet-enc.c	\
+	../packet-enip.c	\
+	../packet-esis.c	\
+	../packet-eth.c	\
+	../packet-etherip.c	\
+	../packet-ethertype.c	\
+	../packet-fc.c	\
+	../packet-fcct.c	\
+	../packet-fcdns.c	\
+	../packet-fcels.c	\
+	../packet-fcfcs.c	\
+	../packet-fcfzs.c	\
+	../packet-fcip.c	\
+	../packet-fclctl.c	\
+	../packet-fcp.c	\
+	../packet-fcsb3.c	\
+	../packet-fcsp.c	\
+	../packet-fcswils.c	\
+	../packet-fddi.c	\
+	../packet-fix.c	\
+	../packet-fr.c	\
+	../packet-frame.c	\
+	../packet-ftp.c	\
+	../packet-fw1.c	\
+	../packet-giop.c	\
+	../packet-gmrp.c	\
+	../packet-gnutella.c	\
+	../packet-gprs-ns.c	\
+	../packet-gre.c	\
+	../packet-gsm_a.c	\
+	../packet-gsm_map.c	\
+	../packet-gsm_sms.c	\
+	../packet-gsm_sms_ud.c	\
+	../packet-gssapi.c	\
+	../packet-gtp.c	\
+	../packet-gvrp.c	\
+	../packet-h1.c	\
+	../packet-h225.c	\
+	../packet-h245.c	\
+	../packet-h261.c	\
+	../packet-h263.c	\
+	../packet-h450.c	\
+	../packet-hclnfsd.c	\
+	../packet-hpext.c	\
+	../packet-hsrp.c	\
+	../packet-http.c	\
+	../packet-hyperscsi.c	\
+	../packet-iapp.c	\
+	../packet-iax2.c	\
+	../packet-ib.c	\
+	../packet-icap.c	\
+	../packet-icmpv6.c	\
+	../packet-icp.c	\
+	../packet-icq.c	\
+	../packet-ieee80211.c	\
+	../packet-ieee8023.c	\
+	../packet-igap.c	\
+	../packet-igmp.c	\
+	../packet-igrp.c	\
+	../packet-image-gif.c	\
+	../packet-image-jfif.c	\
+	../packet-imap.c	\
+	../packet-ip.c	\
+	../packet-ipfc.c	\
+	../packet-ipmi.c	\
+	../packet-ipp.c	\
+	../packet-ipsec-udp.c	\
+	../packet-ipsec.c	\
+	../packet-ipv6.c	\
+	../packet-ipx.c	\
+	../packet-ipxwan.c	\
+	../packet-irc.c	\
+	../packet-isakmp.c	\
+	../packet-iscsi.c	\
+	../packet-isdn.c	\
+	../packet-isis-clv.c	\
+	../packet-isis-hello.c	\
+	../packet-isis-lsp.c	\
+	../packet-isis-snp.c	\
+	../packet-isis.c	\
+	../packet-isl.c	\
+	../packet-ismp.c	\
+	../packet-isns.c	\
+	../packet-isup.c	\
+	../packet-iua.c	\
+	../packet-jabber.c	\
+	../packet-kadm5.c	\
+	../packet-kerberos.c	\
+	../packet-klm.c	\
+	../packet-kpasswd.c	\
+	../packet-l2tp.c	\
+	../packet-lapb.c	\
+	../packet-lapbether.c	\
+	../packet-lapd.c	\
+	../packet-laplink.c	\
+	../packet-ldap.c	\
+	../packet-ldp.c	\
+	../packet-llc.c	\
+	../packet-lmi.c	\
+	../packet-lmp.c	\
+	../packet-lpd.c	\
+	../packet-lwapp.c	\
+	../packet-m2pa.c	\
+	../packet-m2tp.c	\
+	../packet-m2ua.c	\
+	../packet-m3ua.c	\
+	../packet-mbtcp.c	\
+	../packet-mdshdr.c	\
+	../packet-mip.c	\
+	../packet-mip6.c	\
+	../packet-mmse.c	\
+	../packet-mount.c	\
+	../packet-mpeg1.c	\
+	../packet-mpls.c	\
+	../packet-mrdisc.c	\
+	../packet-msdp.c	\
+	../packet-msn-messenger.c	\
+	../packet-msnip.c	\
+	../packet-msproxy.c	\
+	../packet-mtp2.c	\
+	../packet-mtp3.c	\
+	../packet-mtp3mg.c	\
+	../packet-multipart.c	\
+	../packet-mysql.c	\
+	../packet-nbipx.c	\
+	../packet-nbns.c	\
+	../packet-ncp.c	\
+	../packet-ncp2222.c	\
+	../packet-ndmp.c	\
+	../packet-ndps.c	\
+	../packet-netbios.c	\
+	../packet-netflow.c	\
+	../packet-nfs.c	\
+	../packet-nfsacl.c	\
+	../packet-nfsauth.c	\
+	../packet-nisplus.c	\
+	../packet-nlm.c	\
+	../packet-nlsp.c	\
+	../packet-nntp.c	\
+	../packet-nt-oui.c	\
+	../packet-nt-sonmp.c	\
+	../packet-nt-tpcp.c	\
+	../packet-ntlmssp.c	\
+	../packet-ntp.c	\
+	../packet-null.c	\
+	../packet-olsr.c	\
+	../packet-osi-options.c	\
+	../packet-osi.c	\
+	../packet-ospf.c	\
+	../packet-pcnfsd.c	\
+	../packet-per.c	\
+	../packet-pflog.c	\
+	../packet-pgm.c	\
+	../packet-pim.c	\
+	../packet-pop.c	\
+	../packet-portmap.c	\
+	../packet-ppp.c	\
+	../packet-pppoe.c	\
+	../packet-pptp.c	\
+	../packet-pres.c	\
+	../packet-prism.c	\
+	../packet-q2931.c	\
+	../packet-q931.c	\
+	../packet-q933.c	\
+	../packet-qllc.c	\
+	../packet-quake.c	\
+	../packet-quake2.c	\
+	../packet-quake3.c	\
+	../packet-quakeworld.c	\
+	../packet-radius.c	\
+	../packet-radiotap.c	\
+	../packet-ranap.c	\
+	../packet-raw.c	\
+	../packet-rip.c	\
+	../packet-ripng.c	\
+	../packet-rlogin.c	\
+	../packet-rmcp.c	\
+	../packet-rmi.c	\
+	../packet-rmp.c	\
+	../packet-rpc.c	\
+	../packet-rpl.c	\
+	../packet-rquota.c	\
+	../packet-rsh.c	\
+	../packet-rstat.c	\
+	../packet-rsvp.c	\
+	../packet-rsync.c	\
+	../packet-rtcp.c	\
+	../packet-rtp-events.c	\
+	../packet-rtp.c	\
+	../packet-rtsp.c	\
+	../packet-rwall.c	\
+	../packet-rx.c	\
+	../packet-sadmind.c	\
+	../packet-sap.c	\
+	../packet-sccp.c	\
+	../packet-sccpmg.c	\
+	../packet-scsi.c	\
+	../packet-sctp.c	\
+	../packet-sdlc.c	\
+	../packet-sdp.c	\
+	../packet-sebek.c	\
+	../packet-ses.c	\
+	../packet-sflow.c	\
+	../packet-sip.c	\
+	../packet-sipfrag.c	\
+	../packet-skinny.c	\
+	../packet-slimp3.c	\
+	../packet-sll.c	\
+	../packet-slowprotocols.c	\
+	../packet-smb-browse.c	\
+	../packet-smb-common.c	\
+	../packet-smb-logon.c	\
+	../packet-smb-mailslot.c	\
+	../packet-smb-pipe.c	\
+	../packet-smb-sidsnooping.c	\
+	../packet-smb.c	\
+	../packet-smpp.c	\
+	../packet-smtp.c	\
+	../packet-sna.c	\
+	../packet-snaeth.c	\
+	../packet-snmp.c	\
+	../packet-socks.c	\
+	../packet-spnego.c	\
+	../packet-spray.c	\
+	../packet-srvloc.c	\
+	../packet-sscop.c	\
+	../packet-ssh.c	\
+	../packet-ssl.c	\
+	../packet-stat-notify.c	\
+	../packet-stat.c	\
+	../packet-stun.c	\
+	../packet-sua.c	\
+	../packet-syslog.c	\
+	../packet-t38.c	\
+	../packet-tacacs.c	\
+	../packet-tcap.c	\
+	../packet-tcp.c	\
+	../packet-tds.c	\
+	../packet-teimanagement.c	\
+	../packet-telnet.c	\
+	../packet-teredo.c	\
+	../packet-text-media.c	\
+	../packet-tftp.c	\
+	../packet-time.c	\
+	../packet-tns.c	\
+	../packet-tpkt.c	\
+	../packet-tr.c	\
+	../packet-trmac.c	\
+	../packet-tsp.c	\
+	../packet-tzsp.c	\
+	../packet-ucp.c	\
+	../packet-udp.c	\
+	../packet-v120.c	\
+	../packet-vines.c	\
+	../packet-vj.c	\
+	../packet-vlan.c	\
+	../packet-vrrp.c	\
+	../packet-vtp.c	\
+	../packet-wap.c	\
+	../packet-wbxml.c	\
+	../packet-wccp.c	\
+	../packet-wcp.c	\
+	../packet-wfleet-hdlc.c	\
+	../packet-who.c	\
+	../packet-wlancap.c	\
+	../packet-wsp.c	\
+	../packet-wtls.c	\
+	../packet-wtp.c	\
+	../packet-x11.c	\
+	../packet-x25.c	\
+	../packet-x29.c	\
+	../packet-xdmcp.c	\
+	../packet-xot.c	\
+	../packet-xyplex.c	\
+	../packet-yhoo.c	\
+	../packet-ymsg.c	\
+	../packet-ypbind.c	\
+	../packet-yppasswd.c	\
+	../packet-ypserv.c	\
+	../packet-ypxfr.c	\
+	../packet-zebra.c
+
+DISSECTOR_SUPPORT_SRC =	\
+	register.c	\
+	../adler32.c	\
+	../adler32.h	\
+	../afn.c	\
+	../afn.h	\
+	../aftypes.h	\
+	../arcnet_pids.h	\
+	../asn1.c	\
+	../asn1.h	\
+	../bridged_pids.h	\
+	../chdlctypes.h	\
+	../column.c	\
+	../column.h	\
+	../crc32.c	\
+	../crc32.h	\
+	../crypt-des.c	\
+	../crypt-des.h	\
+	../crypt-md4.c	\
+	../crypt-md4.h	\
+	../crypt-md5.c	\
+	../crypt-md5.h	\
+	../crypt-rc4.c	\
+	../crypt-rc4.h	\
+	../etypes.h	\
+	../follow.c	\
+	../follow.h	\
+	../format-oid.h	\
+	../g711.c	\
+	../g711.h	\
+	../greproto.h	\
+	../h225-persistentdata.c	\
+	../h225-persistentdata.h	\
+	../in_cksum.c	\
+	../in_cksum.h	\
+	../ip_opts.h	\
+	../ipproto.c	\
+	../ipproto.h	\
+	../lapd_sapi.h	\
+	../llcsaps.h	\
+	../nlpid.h	\
+	../oui.h	\
+	../packet-dcerpc-nt.c	\
+	../ppptypes.h	\
+	../prefs-int.h	\
+	../prefs.c	\
+	../prefs.h	\
+	../ptvcursor.c	\
+	../ptvcursor.h	\
+	../reassemble.c	\
+	../reassemble.h	\
+	../req_resp_hdrs.c	\
+	../req_resp_hdrs.h	\
+	../rpc_defrag.h	\
+	../rtp_pt.h	\
+	../sctpppids.h	\
+	../smb.h	\
+	../t35.c	\
+	../t35.h	\
+	../tap.c	\
+	../tap.h	\
+	../util.c	\
+	../util.h	\
+	../x264_prt_id.h	\
+	../xdlc.c	\
+	../xdlc.h	\
+	../xmlstub.c	\
+	../xmlstub.h
+
Index: epan/Makefile.nmake
===================================================================
RCS file: /usr/local/cvsroot/ethereal/epan/Makefile.nmake,v
retrieving revision 1.33
diff -p -u -r1.33 Makefile.nmake
--- epan/Makefile.nmake	22 Jan 2004 19:27:58 -0000	1.33
+++ epan/Makefile.nmake	9 Feb 2004 09:43:41 -0000
@@ -15,11 +15,43 @@ CVARSDLL=-DWIN32 -DNULL=0 -D_MT -D_DLL
 
 # For use when making ethereal.dll
 libethereal_LIBS = \
-	wsock32.lib user32.lib \
-	$(GLIB_LIBS)
+	wsock32.lib user32.lib	\
+	$(GLIB_LIBS) 		\
+	$(DISSECTOR_OBJECTS)	\
+	$(DISSECTOR_SUPPORT_OBJECTS)
 
 .c.obj::
-   $(CC) $(CVARSDLL) $(CFLAGS) -Fd.\ -c $<
+	$(CC) $(CVARSDLL) $(CFLAGS) -Fd.\ -c $<
+
+include Makefile.common
+
+DISSECTOR_OBJECTS = $(DISSECTOR_SRC:.c=.obj)
+
+DISSECTOR_SUPPORT_OBJECTS = \
+	adler32.obj	\
+	afn.obj		\
+	asn1.obj	\
+	column.obj	\
+	crc32.obj	\
+	crypt-des.obj	\
+	crypt-md4.obj	\
+	crypt-md5.obj	\
+	crypt-rc4.obj	\
+	follow.obj	\
+	g711.obj	\
+	h225-persistentdata.obj	\
+	in_cksum.obj	\
+	ipproto.obj	\
+	packet-dcerpc-nt.obj	\
+	prefs.obj	\
+	ptvcursor.obj	\
+	reassemble.obj	\
+	req_resp_hdrs.obj	\
+	t35.obj		\
+	tap.obj		\
+	util.obj	\
+	xdlc.obj	\
+	xmlstub.obj
 
 OBJECTS=atalk-utils.obj	\
 	bitswap.obj	\
Index: epan/make-reg-dotc
===================================================================
RCS file: epan/make-reg-dotc
diff -N epan/make-reg-dotc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ epan/make-reg-dotc	9 Feb 2004 09:43:41 -0000
@@ -0,0 +1,75 @@
+#! /bin/sh
+
+#
+# The first argument is the output filename.
+#
+
+outfile="$1"
+shift
+
+#
+# The second argument is the directory in which the source files live.
+#
+srcdir="$1"
+shift
+
+#
+# All subsequent arguments are the files to scan.
+#
+rm -f ${outfile}-tmp
+echo '/* Do not modify this file.  */' >${outfile}-tmp
+echo '/* It is created automatically by the Makefile.  */'>>${outfile}-tmp
+echo '#include "register.h"' >>${outfile}-tmp
+
+#
+# Build code to call all the protocol registration routines.
+#
+echo 'void register_all_protocols(void) {' >>${outfile}-tmp
+for f in "$@"
+do
+	if [ -f $f ]
+	then
+		srcfile=$f
+	else
+		srcfile=$srcdir/$f
+	fi
+	grep '^proto_register_[a-z_0-9A-Z]* *(' $srcfile 2>/dev/null | grep -v ';'
+done | sed -e 's/^.*://' -e 's/^\([a-z_0-9A-Z]*\).*/  {extern void \1 (void); \1 ();}/' >>${outfile}-tmp
+for f in "$@"
+do
+	if [ -f $f ]
+	then
+		srcfile=$f
+	else
+		srcfile=$srcdir/$f
+	fi
+	grep '^void proto_register_[a-z_0-9A-Z]* *(' $srcfile 2>/dev/null | grep -v ';'
+done | sed -e 's/^.*://' -e 's/^void \([a-z_0-9A-Z]*\).*/  {extern void \1 (void); \1 ();}/' >>${outfile}-tmp
+echo '}' >>${outfile}-tmp
+
+#
+# Build code to call all the protocol handoff registration routines.
+#
+echo 'void register_all_protocol_handoffs(void) {' >>${outfile}-tmp
+for f in "$@"
+do
+	if [ -f $f ]
+	then
+		srcfile=$f
+	else
+		srcfile=$srcdir/$f
+	fi
+	grep '^proto_reg_handoff_[a-z_0-9A-Z]* *(' $srcfile 2>/dev/null | grep -v ';'
+done | sed -e 's/^.*://' -e 's/^\([a-z_0-9A-Z]*\).*/  {extern void \1 (void); \1 ();}/' >>${outfile}-tmp
+for f in "$@"
+do
+	if [ -f $f ]
+	then
+		srcfile=$f
+	else
+		srcfile=$srcdir/$f
+	fi
+	grep '^void proto_reg_handoff_[a-z_0-9A-Z]* *(' $srcfile 2>/dev/null | grep -v ';'
+done | sed -e 's/^.*://' -e 's/^void \([a-z_0-9A-Z]*\).*/  {extern void \1 (void); \1 ();}/' >>${outfile}-tmp
+echo '}' >>${outfile}-tmp
+mv ${outfile}-tmp ${outfile}
Index: epan/make-reg-dotc.py
===================================================================
RCS file: epan/make-reg-dotc.py
diff -N epan/make-reg-dotc.py
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ epan/make-reg-dotc.py	9 Feb 2004 09:43:41 -0000
@@ -0,0 +1,118 @@
+#!/usr/bin/python
+#
+# Looks for registration routines in the protocol dissectors,
+# and assembles C code to call all the routines.
+#
+# This is a Python version of the make-reg-dotc shell script.
+# Running the shell script on Win32 is very very slow because of
+# all the process-launching that goes on --- multiple greps and
+# seds for each input file.  I wrote this python version so that
+# less processes would have to be started.
+#
+# $Id: make-reg-dotc.py,v 1.4 2003/07/21 07:05:44 girlich Exp $
+
+import os
+import sys
+import re
+
+tmp_filename = "register.c-tmp"
+final_filename = "register.c"
+
+#
+# The first argument is the directory in which the source files live.
+#
+srcdir = sys.argv[1]
+
+#
+# All subsequent arguments are the files to scan.
+#
+files = sys.argv[2:]
+
+reg_code = open(tmp_filename, "w")
+
+reg_code.write("/* Do not modify this file.  */\n")
+reg_code.write("/* It is created automatically by the Makefile.  */\n")
+reg_code.write('#include "register.h"\n')
+
+# Create the proper list of filenames
+filenames = []
+for file in files:
+	if os.path.isfile(file):
+		filenames.append(file)
+	else:
+		filenames.append("%s/%s" % (srcdir, file))
+
+
+# Look through all files, applying the regex to each line.
+# If the pattern matches, save the "symbol" section to the
+# appropriate array.
+proto_reg = []
+handoff_reg = []
+
+# For those that don't know Python, r"" indicates a raw string,
+# devoid of Python escapes.
+proto_regex0 = r"^(?P<symbol>proto_register_[_A-Za-z0-9]+)\s*\([^;]+$"
+proto_regex1 = r"void\s+(?P<symbol>proto_register_[_A-Za-z0-9]+)\s*\([^;]+$"
+
+handoff_regex0 = r"^(?P<symbol>proto_reg_handoff_[_A-Za-z0-9]+)\s*\([^;]+$"
+handoff_regex1 = r"void\s+(?P<symbol>proto_reg_handoff_[_A-Za-z0-9]+)\s*\([^;]+$"
+
+# This table drives the pattern-matching and symbol-harvesting
+patterns = [
+	( proto_reg, re.compile(proto_regex0) ),
+	( proto_reg, re.compile(proto_regex1) ),
+	( handoff_reg, re.compile(handoff_regex0) ),
+	( handoff_reg, re.compile(handoff_regex1) ),
+	]
+
+# Grep
+for filename in filenames:
+	file = open(filename)
+#	print "Searching %s" % (filename)
+	for line in file.readlines():
+		for action in patterns:
+			regex = action[1]
+			match = regex.search(line)
+			if match:
+				symbol = match.group("symbol")
+				list = action[0]
+				list.append(symbol)
+	file.close()
+
+# Sort the lists to make them pretty
+proto_reg.sort()
+handoff_reg.sort()
+
+# Make register_all_protocols()
+reg_code.write("void register_all_protocols(void) {\n")
+
+for symbol in proto_reg:
+	line = "  {extern void %s (void); %s ();}\n" % (symbol, symbol)
+	reg_code.write(line)
+
+reg_code.write("}\n")
+
+
+# Make register_all_protocol_handoffs()
+reg_code.write("void register_all_protocol_handoffs(void) {\n")
+
+for symbol in handoff_reg:
+	line = "  {extern void %s (void); %s ();}\n" % (symbol, symbol)
+	reg_code.write(line)
+
+reg_code.write("}\n")
+
+# Close the file
+reg_code.close()
+
+# Remove the old final_file if it exists.
+try:
+	os.stat(final_filename)
+	os.remove(final_filename)
+except OSError:
+	pass
+
+# Move from tmp file to final file
+os.rename(tmp_filename, final_filename)
+
+
Index: epan/dfilter/Makefile.am
===================================================================
RCS file: /usr/local/cvsroot/ethereal/epan/dfilter/Makefile.am,v
retrieving revision 1.9
diff -p -u -r1.9 Makefile.am
--- epan/dfilter/Makefile.am	5 Mar 2001 22:53:39 -0000	1.9
+++ epan/dfilter/Makefile.am	9 Feb 2004 09:43:41 -0000
@@ -25,7 +25,8 @@
 # shared library, this will be linked into libethereal. While libethereal
 # is an archive library, any executable linking against libethereal will
 # also need to link against libftypes.
-noinst_LIBRARIES = libdfilter.a
+
+lib_LTLIBRARIES = libdfilter.la
 
 CLEANFILES = \
 	libdfilter.a		\
@@ -33,7 +34,7 @@ CLEANFILES = \
 
 INCLUDES = -I$(srcdir)/../.. -I$(srcdir)/.. -I$(srcdir)/$(LEMON)
 
-libdfilter_a_SOURCES = \
+libdfilter_la_SOURCES = \
 	dfilter.c		\
 	dfilter.h		\
 	dfilter-int.h		\
Index: epan/ftypes/Makefile.am
===================================================================
RCS file: /usr/local/cvsroot/ethereal/epan/ftypes/Makefile.am,v
retrieving revision 1.5
diff -p -u -r1.5 Makefile.am
--- epan/ftypes/Makefile.am	9 Dec 2003 23:02:39 -0000	1.5
+++ epan/ftypes/Makefile.am	9 Feb 2004 09:43:41 -0000
@@ -25,7 +25,8 @@
 # shared library, this will be linked into libethereal. While libethereal
 # is an archive library, any executable linking against libethereal will
 # also need to link against libftypes.
-noinst_LIBRARIES = libftypes.a
+
+lib_LTLIBRARIES = libftypes.la
 
 CLEANFILES = \
 	libftypes.a	\
@@ -33,7 +34,7 @@ CLEANFILES = \
 
 INCLUDES = -I$(srcdir)/../.. -I$(srcdir)/..
 
-libftypes_a_SOURCES =	\
+libftypes_la_SOURCES =	\
 	ftypes.c	\
 	ftypes.h	\
 	ftypes-int.h	\
Index: packaging/rpm/SPECS/ethereal.spec.in
===================================================================
RCS file: /usr/local/cvsroot/ethereal/packaging/rpm/SPECS/ethereal.spec.in,v
retrieving revision 1.2
diff -p -u -r1.2 ethereal.spec.in
--- packaging/rpm/SPECS/ethereal.spec.in	20 Aug 2002 00:59:42 -0000	1.2
+++ packaging/rpm/SPECS/ethereal.spec.in	9 Feb 2004 09:43:43 -0000
@@ -60,11 +60,16 @@ rm -rf $RPM_BUILD_ROOT
 /usr/X11R6/bin/ethereal
 /usr/X11R6/man/man1/ethereal.1.gz
 /usr/bin/tethereal
+/usr/lib/libwiretap.so*
+/usr/lib/libethereal.so*
 /usr/bin/editcap
 /usr/man/man1/tethereal.1.gz
 /usr/man/man1/editcap.1.gz
 
 %changelog
+* Sat Feb 07 2004 Joerg Mayer
+- lib wiretap and libetheral are now shared libs - include them
+
 * Tue Aug 24 1999 Gilbert Ramirez
 - changed to ethereal.spec.in so that 'configure' can update
   the version automatically
Index: wiretap/Makefile.am
===================================================================
RCS file: /usr/local/cvsroot/ethereal/wiretap/Makefile.am,v
retrieving revision 1.48
diff -p -u -r1.48 Makefile.am
--- wiretap/Makefile.am	2 Dec 2003 19:37:04 -0000	1.48
+++ wiretap/Makefile.am	9 Feb 2004 09:43:43 -0000
@@ -23,15 +23,14 @@
 
 ACLOCAL_AMFLAGS = `../aclocal-flags`
 
-noinst_LIBRARIES = libwiretap.a
-
-#EXTRA_LIBRARIES = libwiretap.a
+lib_LTLIBRARIES = libwiretap.la
+libwiretap_la_LDFLAGS = -version-info 0:1:0
 
 CLEANFILES = \
 	libwiretap.a		\
 	*~
 
-libwiretap_a_SOURCES = \
+libwiretap_la_SOURCES = \
 	airopeek9.c		\
 	airopeek9.h		\
 	ascend-grammar.y	\