1*e018180dSDominic Spill# Makefile.nmake 2*e018180dSDominic Spill# nmake file for Wireshark plugin 3*e018180dSDominic Spill# 4*e018180dSDominic Spill# $Id: Makefile.nmake 24520 2008-03-01 12:31:01Z jake $ 5*e018180dSDominic Spill# 6*e018180dSDominic Spill 7*e018180dSDominic Spillinclude ..\..\config.nmake 8*e018180dSDominic Spillinclude moduleinfo.nmake 9*e018180dSDominic Spill 10*e018180dSDominic Spillinclude Makefile.common 11*e018180dSDominic Spill 12*e018180dSDominic SpillCFLAGS=/WX /DHAVE_CONFIG_H /I../.. /I../../wiretap $(GLIB_CFLAGS) \ 13*e018180dSDominic Spill /I$(PCAP_DIR)\include -D_U_="" $(LOCAL_CFLAGS) 14*e018180dSDominic Spill 15*e018180dSDominic Spill.c.obj:: 16*e018180dSDominic Spill $(CC) $(CFLAGS) -Fd.\ -c $< 17*e018180dSDominic Spill 18*e018180dSDominic SpillLDFLAGS = $(PLUGIN_LDFLAGS) 19*e018180dSDominic Spill 20*e018180dSDominic Spill!IFDEF ENABLE_LIBWIRESHARK 21*e018180dSDominic SpillLINK_PLUGIN_WITH=..\..\epan\libwireshark.lib 22*e018180dSDominic SpillCFLAGS=/DHAVE_WIN32_LIBWIRESHARK_LIB /D_NEED_VAR_IMPORT_ $(CFLAGS) 23*e018180dSDominic Spill 24*e018180dSDominic SpillDISSECTOR_OBJECTS = $(DISSECTOR_SRC:.c=.obj) 25*e018180dSDominic Spill 26*e018180dSDominic SpillDISSECTOR_SUPPORT_OBJECTS = $(DISSECTOR_SUPPORT_SRC:.c=.obj) 27*e018180dSDominic Spill 28*e018180dSDominic SpillOBJECTS = $(DISSECTOR_OBJECTS) $(DISSECTOR_SUPPORT_OBJECTS) plugin.obj 29*e018180dSDominic Spill 30*e018180dSDominic SpillRESOURCE=$(PLUGIN_NAME).res 31*e018180dSDominic Spill 32*e018180dSDominic Spillall: $(PLUGIN_NAME).dll 33*e018180dSDominic Spill 34*e018180dSDominic Spill$(PLUGIN_NAME).rc : moduleinfo.nmake 35*e018180dSDominic Spill sed -e s/@PLUGIN_NAME@/$(PLUGIN_NAME)/ \ 36*e018180dSDominic Spill -e s/@RC_MODULE_VERSION@/$(RC_MODULE_VERSION)/ \ 37*e018180dSDominic Spill -e s/@RC_VERSION@/$(RC_VERSION)/ \ 38*e018180dSDominic Spill -e s/@MODULE_VERSION@/$(MODULE_VERSION)/ \ 39*e018180dSDominic Spill -e s/@PACKAGE@/$(PACKAGE)/ \ 40*e018180dSDominic Spill -e s/@VERSION@/$(VERSION)/ \ 41*e018180dSDominic Spill -e s/@MSVC_VARIANT@/$(MSVC_VARIANT)/ \ 42*e018180dSDominic Spill < plugin.rc.in > $@ 43*e018180dSDominic Spill 44*e018180dSDominic Spill$(PLUGIN_NAME).dll $(PLUGIN_NAME).exp $(PLUGIN_NAME).lib : $(OBJECTS) $(LINK_PLUGIN_WITH) $(RESOURCE) 45*e018180dSDominic Spill link -dll /out:$(PLUGIN_NAME).dll $(LDFLAGS) $(OBJECTS) $(LINK_PLUGIN_WITH) \ 46*e018180dSDominic Spill $(GLIB_LIBS) $(RESOURCE) 47*e018180dSDominic Spill 48*e018180dSDominic Spill# 49*e018180dSDominic Spill# Build plugin.c, which contains the plugin version[] string, a 50*e018180dSDominic Spill# function plugin_register() that calls the register routines for all 51*e018180dSDominic Spill# protocols, and a function plugin_reg_handoff() that calls the handoff 52*e018180dSDominic Spill# registration routines for all protocols. 53*e018180dSDominic Spill# 54*e018180dSDominic Spill# We do this by scanning sources. If that turns out to be too slow, 55*e018180dSDominic Spill# maybe we could just require every .o file to have an register routine 56*e018180dSDominic Spill# of a given name (packet-aarp.o -> proto_register_aarp, etc.). 57*e018180dSDominic Spill# 58*e018180dSDominic Spill# Formatting conventions: The name of the proto_register_* routines an 59*e018180dSDominic Spill# proto_reg_handoff_* routines must start in column zero, or must be 60*e018180dSDominic Spill# preceded only by "void " starting in column zero, and must not be 61*e018180dSDominic Spill# inside #if. 62*e018180dSDominic Spill# 63*e018180dSDominic Spill# DISSECTOR_SRC is assumed to have all the files that need to be scanned. 64*e018180dSDominic Spill# 65*e018180dSDominic Spill# For some unknown reason, having a big "for" loop in the Makefile 66*e018180dSDominic Spill# to scan all the files doesn't work with some "make"s; they seem to 67*e018180dSDominic Spill# pass only the first few names in the list to the shell, for some 68*e018180dSDominic Spill# reason. 69*e018180dSDominic Spill# 70*e018180dSDominic Spill# Therefore, we have a script to generate the plugin.c file. 71*e018180dSDominic Spill# The shell script runs slowly, as multiple greps and seds are run 72*e018180dSDominic Spill# for each input file; this is especially slow on Windows. Therefore, 73*e018180dSDominic Spill# if Python is present (as indicated by PYTHON being defined), we run 74*e018180dSDominic Spill# a faster Python script to do that work instead. 75*e018180dSDominic Spill# 76*e018180dSDominic Spill# The first argument is the directory in which the source files live. 77*e018180dSDominic Spill# The second argument is "plugin", to indicate that we should build 78*e018180dSDominic Spill# a plugin.c file for a plugin. 79*e018180dSDominic Spill# All subsequent arguments are the files to scan. 80*e018180dSDominic Spill# 81*e018180dSDominic Spill!IFDEF PYTHON 82*e018180dSDominic Spillplugin.c: $(DISSECTOR_SRC) moduleinfo.h ../../tools/make-dissector-reg.py 83*e018180dSDominic Spill @echo Making plugin.c (using python) 84*e018180dSDominic Spill @$(PYTHON) "../../tools/make-dissector-reg.py" . plugin $(DISSECTOR_SRC) 85*e018180dSDominic Spill!ELSE 86*e018180dSDominic Spillplugin.c: $(DISSECTOR_SRC) moduleinfo.h ../../tools/make-dissector-reg 87*e018180dSDominic Spill @echo Making plugin.c (using sh) 88*e018180dSDominic Spill @$(SH) ../../tools/make-dissector-reg . plugin $(DISSECTOR_SRC) 89*e018180dSDominic Spill!ENDIF 90*e018180dSDominic Spill 91*e018180dSDominic Spill!ENDIF 92*e018180dSDominic Spill 93*e018180dSDominic Spillclean: 94*e018180dSDominic Spill rm -f $(OBJECTS) $(RESOURCE) plugin.c *.pdb \ 95*e018180dSDominic Spill $(PLUGIN_NAME).dll $(PLUGIN_NAME).dll.manifest $(PLUGIN_NAME).lib \ 96*e018180dSDominic Spill $(PLUGIN_NAME).exp $(PLUGIN_NAME).rc 97*e018180dSDominic Spill 98*e018180dSDominic Spilldistclean: clean 99*e018180dSDominic Spill 100*e018180dSDominic Spillmaintainer-clean: distclean 101