## Makefile for building ethereal.exe with Microsoft C and nmake ## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake # # $Id: Makefile.nmake,v 1.426 2004/07/13 19:30:02 gerald Exp $ include config.nmake include ############### no need to modify below this line ######### CC = cl LINK= link LDFLAGS = /NOLOGO /INCREMENTAL:no /MACHINE:I386 $(LOCAL_LDFLAGS) CFLAGS=-DHAVE_CONFIG_H $(LOCAL_CFLAGS) $(GLIB_CFLAGS) /I. /Iwiretap \ $(ZLIB_CFLAGS) /I$(PCAP_DIR)\include \ /I$(NET_SNMP_DIR)\include /I$(NET_SNMP_DIR)\win32 \ $(ADNS_CFLAGS) $(PCRE_CFLAGS) -D_U_="" CVARSDLL=-DWIN32 -DNULL=0 -D_MT -D_DLL .c.obj:: $(CC) $(CVARSDLL) $(CFLAGS) -Fd.\ -c $< PLATFORM_SRC = capture-wpcap.c include Makefile.common include epan\Makefile.common BUILT_SOURCES = $(BUILT_SOURCES) \ cvsversion.h DISSECTOR_SRC = $(DISSECTOR_SRC:../=) DISSECTOR_OBJECTS = $(DISSECTOR_SRC:.c=.obj) DISSECTOR_SUPPORT_SRC = $(DISSECTOR_SUPPORT_SRC:../=) DISSECTOR_SUPPORT_OBJECTS = $(DISSECTOR_SUPPORT_SRC:.c=.obj) # remove register.obj from "DISSECTOR_SUPPORT_OBJECTS". # creation and compilation of register.c has been moved to epan. DISSECTOR_SUPPORT_OBJECTS = $(DISSECTOR_SUPPORT_OBJECTS:register.obj=) ethereal_OBJECTS = $(ethereal_SOURCES:.c=.obj) tethereal_OBJECTS = $(tethereal_SOURCES:.c=.obj) dftest_OBJECTS = $(dftest_SOURCES:.c=.obj) randpkt_OBJECTS = $(randpkt_SOURCES:.c=.obj) EXTRA_OBJECTS = \ # snprintf.obj \ # strerror.obj \ mkstemp.obj \ strptime.obj ethereal_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \ wsock32.lib user32.lib shell32.lib \ $(NET_SNMP_DIR)\win32\lib\netsnmp.lib \ !IFDEF ENABLE_LIBETHEREAL epan\libethereal.lib \ !ELSE dissectors.lib \ epan\ethereal.lib \ epan\dfilter\dfilter.lib epan\ftypes\ftypes.lib \ $(ADNS_LIBS) \ $(PCRE_LIBS) \ $(ZLIB_LIBS) !ENDIF # $(PCAP_DIR)\lib\wpcap.lib tethereal_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \ wsock32.lib user32.lib \ $(GLIB_LIBS) \ $(NET_SNMP_DIR)\win32\lib\netsnmp.lib \ !IFDEF ENABLE_LIBETHEREAL epan\libethereal.lib \ !ELSE dissectors.lib \ epan\ethereal.lib \ epan\dfilter\dfilter.lib epan\ftypes\ftypes.lib \ $(ADNS_LIBS) \ $(PCRE_LIBS) \ $(ZLIB_LIBS) !ENDIF editcap_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \ wsock32.lib user32.lib \ $(GLIB_LIBS) mergecap_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \ wsock32.lib user32.lib \ $(GLIB_LIBS) dftest_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \ wsock32.lib user32.lib \ $(GLIB_LIBS) \ $(NET_SNMP_DIR)\win32\lib\netsnmp.lib \ !IFDEF ENABLE_LIBETHEREAL epan\libethereal.lib \ !ELSE dissectors.lib \ epan\ethereal.lib \ epan\dfilter\dfilter.lib epan\ftypes\ftypes.lib \ $(ADNS_LIBS) \ $(PCRE_LIBS) \ $(ZLIB_LIBS) !ENDIF randpkt_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \ user32.lib \ $(GLIB_LIBS) \ $(NET_SNMP_DIR)\win32\lib\netsnmp.lib EXECUTABLES=ethereal.exe ethereal-gtk2.exe tethereal.exe editcap.exe mergecap.exe text2pcap.exe RESOURCES=image\ethereal.res image\tethereal.res image\editcap.res image\mergecap.res image\text2pcap.res all: config.h tools wiretap epan image $(EXECUTABLES) $(RESOURCES) doc packaging: all cd packaging cd nsis nmake -f makefile.nmake cd .. cd .. separate_packaging: all cd packaging cd nsis !IFDEF GTK1_DIR nmake -f makefile.nmake GTK1_ONLY="USE" !ENDIF !IFDEF GTK2_DIR nmake -f makefile.nmake GTK2_ONLY="USE" !ENDIF cd .. cd .. $(RESOURCES): image wiretap\wiretap-$(WTAP_VERSION).lib: wiretap !IFNDEF GTK1_DIR ethereal.exe : !ELSE ethereal.exe : config.h cvsversion.h $(ethereal_OBJECTS) $(EXTRA_OBJECTS) epan gtk image\ethereal.res wiretap\wiretap-$(WTAP_VERSION).lib gtk\libui.lib dissectors.lib plugins @echo Linking $@ $(LINK) @<< /OUT:ethereal.exe $(guiflags) $(guilibsdll) $(LDFLAGS) /SUBSYSTEM:windows $(ethereal_LIBS) $(GTK1_LIBS) gtk\libui.lib $(ethereal_OBJECTS) $(EXTRA_OBJECTS) image\ethereal.res << !ENDIF !IFNDEF GTK2_DIR ethereal-gtk2.exe : !ELSE ethereal-gtk2.exe : config.h cvsversion.h $(ethereal_OBJECTS) $(EXTRA_OBJECTS) epan gtk2 image\ethereal.res wiretap\wiretap-$(WTAP_VERSION).lib gtk2.tmp\libui.lib dissectors.lib plugins @echo Linking $@ $(LINK) @<< /OUT:ethereal-gtk2.exe $(guiflags) $(guilibsdll) $(LDFLAGS) /SUBSYSTEM:windows $(ethereal_LIBS) $(GTK2_LIBS) gtk2.tmp\libui.lib $(ethereal_OBJECTS) $(EXTRA_OBJECTS) image\ethereal.res << !ENDIF tethereal.exe : config.h cvsversion.h $(tethereal_OBJECTS) $(EXTRA_OBJECTS) epan image\tethereal.res wiretap\wiretap-$(WTAP_VERSION).lib dissectors.lib plugins @echo Linking $@ $(LINK) @<< /OUT:tethereal.exe $(conflags) $(conlibsdll) $(LDFLAGS) /SUBSYSTEM:console $(tethereal_LIBS) $(tethereal_OBJECTS) $(EXTRA_OBJECTS) image\tethereal.res << editcap.exe : config.h editcap.obj getopt.obj wiretap\wiretap-$(WTAP_VERSION).lib image\editcap.res @echo Linking $@ $(LINK) @<< /OUT:editcap.exe $(conflags) $(conlibsdll) $(LDFLAGS) /SUBSYSTEM:console editcap.obj getopt.obj $(editcap_LIBS) image\editcap.res << mergecap.exe : config.h cvsversion.h mergecap.obj merge.obj getopt.obj wiretap\wiretap-$(WTAP_VERSION).lib image\mergecap.res @echo Linking $@ $(LINK) @<< /OUT:mergecap.exe $(conflags) $(conlibsdll) $(LDFLAGS) /SUBSYSTEM:console mergecap.obj merge.obj getopt.obj $(mergecap_LIBS) image\mergecap.res << text2pcap.exe : config.h text2pcap.obj text2pcap-scanner.obj getopt.obj strptime.obj image\text2pcap.res @echo Linking $@ $(LINK) @<< /OUT:text2pcap.exe $(conflags) $(conlibsdll) $(LDFLAGS) /SUBSYSTEM:console text2pcap.obj text2pcap-scanner.obj getopt.obj strptime.obj image\text2pcap.res << dftest.exe : $(dftest_OBJECTS) $(EXTRA_OBJECTS) dissectors.lib $(LINK) @<< /OUT:dftest.exe $(conflags) $(conlibsdll) $(LDFLAGS) /SUBSYSTEM:console $(dftest_LIBS) $(dftest_OBJECTS) $(EXTRA_OBJECTS) << randpkt.exe : $(randpkt_OBJECTS) $(EXTRA_OBJECTS) $(LINK) @<< /OUT:randpkt.exe $(conflags) $(conlibsdll) $(LDFLAGS) /SUBSYSTEM:console $(randpkt_LIBS) $(randpkt_OBJECTS) << dissectors.lib: config.h $(DISSECTOR_OBJECTS) $(DISSECTOR_SUPPORT_OBJECTS) $(EXTRA_OBJECTS) link /lib /out:dissectors.lib $(DISSECTOR_OBJECTS) $(DISSECTOR_SUPPORT_OBJECTS) $(EXTRA_OBJECTS) config.h : config.h.win32 config.nmake sed -e s/@VERSION@/$(VERSION)/ \ -e "s/@HAVE_GNU_ADNS@/$(ADNS_CONFIG)/" \ -e "s/@HAVE_PCRE@/$(PCRE_CONFIG)/" \ -e "s/@HAVE_LIBZ@/$(ZLIB_CONFIG)/" \ -e "s/@HAVE_LIBPCAP@/$(WINPCAP_CONFIG)/" \ -e "s/@HAVE_PCAP_FINDALLDEVS@/$(PCAP_FINDALLDEVS_CONFIG)/" \ -e "s/@HAVE_LIBETHEREALDLL@/$(LIBETHEREAL_CONFIG)/" \ -e "s/@WPCAP_CONSTIFIED@/$(WPCAP_CONSTIFIED_CONFIG)/" \ -e "s/@HAVE_LIBETHEREALDLL@/$(LIBETHEREAL_CONFIG)/" \ < config.h.win32 > $@ ps.c : rdps.exe print.ps rdps print.ps ps.c # # Build the version string # cvsversion.h: $(PERL) make-version.pl # # Build the short version of the authors file for the about dialog # AUTHORS-SHORT: AUTHORS make-authors-short.pl $(PERL) make-authors-short.pl < AUTHORS > AUTHORS-SHORT # # The header files listed here are built from x11-fields using Perl; # we declare a dependency here so that they get built. # packet-x11.obj : packet-x11.c x11-declarations.h x11-register-info.h # # Build various header files for the X11 dissector. # x11-declarations.h x11-register-info.h: x11-fields process-x11-fields.pl $(PERL) process-x11-fields.pl $@ doxygen-run: !IFDEF DOXYGEN $(DOXYGEN) doxygen.cfg !ENDIF doxygen: doxygen.cfg doxygen-run REQUIRED_APPS=\ $(SH) \ $(YACC) \ $(LEX) \ grep \ $(PERL) \ $(PYTHON) \ sed \ unzip \ wget verify_apps: @$(SH) tools\win32-setup.sh --appverify $(REQUIRED_APPS) setup: verify_apps !IF "$(GTK2_INST_VERSION)" == "2.4" @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ glib gtk2.4/glib-2.4.2.zip @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ glib gtk2.4/glib-dev-2.4.2.zip !ELSE @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ glib glib-2.2.3-20040116.zip @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ glib glib-dev-2.2.3-20040116.zip !ENDIF !IFDEF GTK1_DIR @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ gtk+ gtk+-1.3.0-20030717.zip @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ gtk+ gtk+-dev-1.3.0-20030115.zip !ENDIF @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ libiconv-1.9.1.bin.woe32 libiconv-1.9.1.bin.woe32.zip @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ gettext-runtime-0.13.1 gettext-runtime-0.13.1.zip !IFDEF NET_SNMP_DIR @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ . net-snmp-5.1.zip !ENDIF !IFDEF PCAP_DIR @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ . wpdpack_3_0.zip !ENDIF !IFDEF ADNS_DIR @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ . adns-1.0-win32-03.zip !ENDIF !IFDEF PCRE_DIR @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ . pcre-4.4.zip !ENDIF !IFDEF ZLIB_DIR @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ zlib121-dll zlib121-dll.zip !ENDIF !IFDEF GTK2_DIR !IF "$(GTK2_INST_VERSION)" == "2.4" @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ gtk2 gtk2.4/gtk+-2.4.3.zip @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ gtk2 gtk2.4/gtk+-dev-2.4.3.zip @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ gtk2 gtk2.4/atk-1.6.0.zip @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ gtk2 gtk2.4/atk-dev-1.6.0.zip !ELSE @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ gtk2 gtk2/gtk+-2.2.4-20040124.zip @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ gtk2 gtk2/gtk+-dev-2.2.4-20040124.zip @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ gtk2 gtk2/atk-1.4.0.zip @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ gtk2 gtk2/atk-dev-1.4.0.zip !ENDIF !IF "$(PANGO_INST_VERSION)" == "1.4" @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ gtk2 gtk2.4/pango-1.4.0.zip @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ gtk2 gtk2.4/pango-dev-1.4.0.zip !ELSE @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ gtk2 gtk2/pango-1.2.5-20040124.zip @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ gtk2 gtk2/pango-dev-1.2.5-20040124.zip !ENDIF !ENDIF !IFDEF GTK_WIMP_DIR @$(SH) tools\win32-setup.sh --download "$(ETHEREAL_LIBS)" \ gtk-wimp gtk2/gtk-wimp-0.5.4-bin.zip !ENDIF @echo. @echo Ethereal is ready to build. update_plugin_api: config.h cd plugins $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake xyzzy cd ..