diff options
author | Guy Harris <guy@alum.mit.edu> | 2006-04-17 05:44:00 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2006-04-17 05:44:00 +0000 |
commit | acb0e6d237ee125288dccca62ed29dffaacd4d05 (patch) | |
tree | c40dfceda8e6c224c8f7e97acbfec24bcfe82dd9 /plugins/docsis/Makefile.nmake | |
parent | 8d17de8776f188626d50e2f66b380c41802adc99 (diff) |
Pull the plugin-specific code into "plugin.c", and generate a
"register.c" with "make-reg-dotc"/"make-reg-dotc.py".
Pull the lists of dissector .c and .h files into Makefile.common and
have Makefile.am and Makefile.nmake use it.
svn path=/trunk/; revision=17883
Diffstat (limited to 'plugins/docsis/Makefile.nmake')
-rw-r--r-- | plugins/docsis/Makefile.nmake | 63 |
1 files changed, 48 insertions, 15 deletions
diff --git a/plugins/docsis/Makefile.nmake b/plugins/docsis/Makefile.nmake index add44886a2..891cf6442e 100644 --- a/plugins/docsis/Makefile.nmake +++ b/plugins/docsis/Makefile.nmake @@ -1,3 +1,5 @@ +# Makefile.nmake +# nmake file for for Ethereal/docsis subdissectors # # $Id$ # @@ -6,6 +8,8 @@ include ..\..\config.nmake ############### no need to modify below this line ######### +include Makefile.common + CFLAGS=/DHAVE_CONFIG_H /I../.. /I../../wiretap $(GLIB_CFLAGS) \ /I$(PCAP_DIR)\include -D_U_="" $(LOCAL_CFLAGS) @@ -15,26 +19,55 @@ LDFLAGS = /NOLOGO /INCREMENTAL:no /MACHINE:I386 $(LOCAL_LDFLAGS) LINK_PLUGIN_WITH=..\..\epan\libethereal.lib CFLAGS=/DHAVE_WIN32_LIBETHEREAL_LIB /D_NEED_VAR_IMPORT_ $(CFLAGS) -OBJECTS=packet-intrngreq.obj packet-type29ucd.obj \ - packet-docsis.obj packet-bpkmattr.obj \ - packet-dsarsp.obj packet-macmgmt.obj \ - packet-rngrsp.obj packet-bpkmreq.obj \ - packet-dscack.obj packet-map.obj \ - packet-tlv.obj packet-bpkmrsp.obj \ - packet-dscreq.obj packet-regack.obj \ - packet-uccreq.obj packet-dscrsp.obj \ - packet-regreq.obj packet-uccrsp.obj \ - packet-dsaack.obj packet-dsdreq.obj \ - packet-regrsp.obj packet-ucd.obj \ - packet-dsareq.obj packet-dsdrsp.obj \ - packet-rngreq.obj packet-vendor.obj \ - packet-dccack.obj packet-dccreq.obj \ - packet-dccrsp.obj packet-dcd.obj +DISSECTOR_OBJECTS = $(DISSECTOR_SRC:.c=.obj) + +OBJECTS=$(DISSECTOR_OBJECTS) plugin.obj register.obj docsis.dll docsis.exp docsis.lib : $(OBJECTS) $(LINK_PLUGIN_WITH) link -dll /out:docsis.dll $(LDFLAGS) $(OBJECTS) $(LINK_PLUGIN_WITH) \ $(GLIB_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. +# +# On Windows, however, that script runs slowly, as multiple greps +# and seds are run for each input file, so, if Python is present +# (as indicated by PYTHON being defined), we run a faster Python +# script to do that work instead. That script doesn't take the name +# of the file to write as an argument; it always writes to +# "register.c". +# +register.c: $(DISSECTOR_SRC) +!IFDEF PYTHON + @echo Making register.c (using python) + @$(PYTHON) ../../tools/make-reg-dotc.py . $(DISSECTOR_SRC) +!ELSE + @echo Making register.c (using sh) + @$(SH) ../../tools/make-reg-dotc register.c . $(DISSECTOR_SRC) +!ENDIF + !ENDIF clean: |