summaryrefslogtreecommitdiff
path: root/epan/Makefile.nmake
blob: f772b81b3590808504646cd41e497d5ba780fdd0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
## Makefile for building ethereal.exe with Microsoft C and nmake
## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
#
# $Id: Makefile.nmake,v 1.37 2004/03/18 19:04:31 obiot Exp $

include ..\config.nmake

############### no need to modify below this line #########

CFLAGS=-DHAVE_CONFIG_H /I. /I.. /I../wiretap $(GLIB_CFLAGS) \
	$(ADNS_CFLAGS) $(PCRE_CFLAGS) /I$(PCAP_DIR)\include \
	$(ZLIB_CFLAGS) /I$(NET_SNMP_DIR)\include /I$(NET_SNMP_DIR)\win32 \
	-D_U_="" $(LOCAL_CFLAGS)

CVARSDLL=-DWIN32 -DNULL=0 -D_MT -D_DLL

# For use when making ethereal.dll
libethereal_LIBS = \
	wsock32.lib user32.lib \
	$(GLIB_LIBS)

# .c.obj::
#	$(CC) $(CVARSDLL) $(CFLAGS) -Fd.\ -c $<

include Makefile.common

DISSECTOR_OBJECTS = $(DISSECTOR_SRC:.c=.obj)
DISSECTOR_OBJECTS = $(DISSECTOR_OBJECTS:../=)

DISSECTOR_SUPPORT_OBJECTS = $(DISSECTOR_SUPPORT_SRC:.c=.obj)
DISSECTOR_SUPPORT_OBJECTS = $(DISSECTOR_SUPPORT_OBJECTS:../=)
 
.c.obj::
	$(CC) $(CVARSDLL) $(CFLAGS) -Fd.\ -c $(DISSECTOR_SRC)
	$(CC) $(CVARSDLL) $(CFLAGS) -Fd.\ -c $(DISSECTOR_SUPPORT_SRC)
 	$(CC) $(CVARSDLL) $(CFLAGS) -Fd.\ -c $<

OBJECTS=addr_and_mask.obj \
	atalk-utils.obj	\
	bitswap.obj	\
	circuit.obj     \
	column-utils.obj \
	conversation.obj \
	epan.obj         \
	except.obj       \
	filesystem.obj   \
	frame_data.obj	\
	inet_aton.obj	\
	inet_pton.obj	\
	inet_ntop.obj	\
	ipv4.obj         \
	int-64bit.obj	\
	osi-utils.obj	\
	packet.obj       \
	plugins.obj      \
	proto.obj        \
	resolv.obj       \
	sna-utils.obj	\
	strutil.obj      \
	timestamp.obj \
	to_str.obj	\
	tvbuff.obj       \
	value_string.obj 
#	$(DISSECTOR_OBJECTS)	\
#	$(DISSECTOR_SUPPORT_OBJECTS)


all: ftypes dfilter ethereal.lib

# For use when making ethereal.dll
#ethereal.dll ethereal.lib	: config.h $(OBJECTS) 
#	link /DLL /out:ethereal.dll $(OBJECTS) $(libethereal_LIBS)

ethereal.lib	: config.h $(OBJECTS) $(DISSECTOR_SUPPORT_SRC) $(DISSECTOR_SRC)
	lib /out:ethereal.lib $(OBJECTS) $(DISSECTOR_SUPPORT_OBJECTS) $(DISSECTOR_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)/" \
	    < config.h.win32 > $@

clean:
	rm -f $(OBJECTS) $(DISSECTOR_SUPPORT_OBJECTS) $(DISSECTOR_OBJECTS) ethereal.lib $(PDB_FILE)
	cd ftypes
	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
	cd ../dfilter
	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
	cd ..

distclean: clean
	rm -f config.h register.c
	cd ftypes
	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake distclean
	cd ../dfilter
	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake distclean
	cd ..

ftypes:: config.h
	cd ftypes
	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake
	cd ..

dfilter:: config.h
	cd dfilter
	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake
	cd ..

#
# 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) ../make-reg-dotc.py . $(DISSECTOR_SRC)
!ELSE
	@echo Making register.c (using sh)
	@$(SH) ../make-reg-dotc register.c . $(DISSECTOR_SRC)
!ENDIF