NTMakefile revision 1.1.1.1.28.1 1 ########################################################################
2 #
3 # Copyright (c) 2009, Secure Endpoints Inc.
4 # All rights reserved.
5 #
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions
8 # are met:
9 #
10 # - Redistributions of source code must retain the above copyright
11 # notice, this list of conditions and the following disclaimer.
12 #
13 # - Redistributions in binary form must reproduce the above copyright
14 # notice, this list of conditions and the following disclaimer in
15 # the documentation and/or other materials provided with the
16 # distribution.
17 #
18 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22 # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 # POSSIBILITY OF SUCH DAMAGE.
30 #
31
32 RELDIR=lib\roken
33
34 !include ../../windows/NTMakefile.w32
35
36 libroken_la_OBJS = \
37 $(OBJ)\base64.obj \
38 $(OBJ)\bswap.obj \
39 $(OBJ)\concat.obj \
40 $(OBJ)\cloexec.obj \
41 $(OBJ)\ct.obj \
42 $(OBJ)\detach.obj \
43 $(OBJ)\dirent.obj \
44 $(OBJ)\dlfcn_w32.obj \
45 $(OBJ)\dumpdata.obj \
46 $(OBJ)\ecalloc.obj \
47 $(OBJ)\emalloc.obj \
48 $(OBJ)\environment.obj \
49 $(OBJ)\eread.obj \
50 $(OBJ)\erealloc.obj \
51 $(OBJ)\err.obj \
52 $(OBJ)\errx.obj \
53 $(OBJ)\esetenv.obj \
54 $(OBJ)\estrdup.obj \
55 $(OBJ)\ewrite.obj \
56 $(OBJ)\flock.obj \
57 $(OBJ)\fnmatch.obj \
58 $(OBJ)\getaddrinfo_hostspec.obj \
59 $(OBJ)\get_default_username.obj \
60 $(OBJ)\get_window_size.obj \
61 $(OBJ)\getarg.obj \
62 $(OBJ)\getifaddrs_w32.obj \
63 $(OBJ)\getnameinfo_verified.obj \
64 $(OBJ)\getopt.obj \
65 $(OBJ)\getprogname.obj \
66 $(OBJ)\gettimeofday.obj \
67 $(OBJ)\hex.obj \
68 $(OBJ)\hostent_find_fqdn.obj \
69 $(OBJ)\inet_aton.obj \
70 $(OBJ)\issuid.obj \
71 $(OBJ)\localtime_r.obj \
72 $(OBJ)\lstat.obj \
73 $(OBJ)\memset_s.obj \
74 $(OBJ)\mkdir.obj \
75 $(OBJ)\mini_inetd.obj \
76 $(OBJ)\mkstemp.obj \
77 $(OBJ)\net_read.obj \
78 $(OBJ)\net_write.obj \
79 $(OBJ)\parse_bytes.obj \
80 $(OBJ)\parse_time.obj \
81 $(OBJ)\parse_units.obj \
82 $(OBJ)\realloc.obj \
83 $(OBJ)\rename.obj \
84 $(OBJ)\resolve.obj \
85 $(OBJ)\rand.obj \
86 $(OBJ)\roken_gethostby.obj \
87 $(OBJ)\rtbl.obj \
88 $(OBJ)\sendmsg.obj \
89 $(OBJ)\setenv.obj \
90 $(OBJ)\setprogname.obj \
91 $(OBJ)\simple_exec_w32.obj \
92 $(OBJ)\sleep.obj \
93 $(OBJ)\snprintf.obj \
94 $(OBJ)\socket.obj \
95 $(OBJ)\sockstartup_w32.obj \
96 $(OBJ)\strcollect.obj \
97 $(OBJ)\strerror_r.obj \
98 $(OBJ)\strlcat.obj \
99 $(OBJ)\strlcpy.obj \
100 $(OBJ)\strndup.obj \
101 $(OBJ)\strpool.obj \
102 $(OBJ)\strptime.obj \
103 $(OBJ)\strsep.obj \
104 $(OBJ)\strsep_copy.obj \
105 $(OBJ)\strtok_r.obj \
106 $(OBJ)\strtoll.obj \
107 $(OBJ)\strtoull.obj \
108 $(OBJ)\syslogc.obj \
109 $(OBJ)\timegm.obj \
110 $(OBJ)\timeval.obj \
111 $(OBJ)\tm2time.obj \
112 $(OBJ)\tsearch.obj \
113 $(OBJ)\unvis.obj \
114 $(OBJ)\verr.obj \
115 $(OBJ)\verrx.obj \
116 $(OBJ)\vis.obj \
117 $(OBJ)\vwarn.obj \
118 $(OBJ)\vwarnx.obj \
119 $(OBJ)\warn.obj \
120 $(OBJ)\warnerr.obj \
121 $(OBJ)\warnx.obj \
122 $(OBJ)\win32_alloc.obj \
123 $(OBJ)\writev.obj \
124 $(OBJ)\xfree.obj
125
126 !if $(NMAKE_WINVER) < 0x0600
127 libroken_la_OBJS=$(libroken_la_OBJS) \
128 $(OBJ)\inet_ntop.obj \
129 $(OBJ)\inet_pton.obj
130 !endif
131
132 {}.c{$(OBJ)}.obj::
133 $(C2OBJ_P) -DBUILD_ROKEN_LIB
134
135 $(LIBROKEN): $(libroken_la_OBJS)
136 $(LIBCON_C) -out:$@ @<<
137 $(**: =
138 )
139 <<
140
141 $(OBJ)\make-roken.exe: $(OBJ)\make-roken.obj
142 $(EXECONLINK)
143
144 $(OBJ)\make-roken.c: roken.h.in roken.awk $(INCDIR)\config.h
145 $(AWK) -f roken.awk roken.h.in > $(OBJ)\make-roken.c || $(RM) $(OBJ)\make-roken.c
146
147 $(INCDIR)\roken.h: $(OBJ)\make-roken.exe
148 $(OBJ)\make-roken.exe > $@ || $(RM) $@
149
150 INCFILES = \
151 $(INCDIR)\base64.h \
152 $(INCDIR)\dirent.h \
153 $(INCDIR)\dlfcn.h \
154 $(INCDIR)\err.h \
155 $(INCDIR)\fnmatch.h \
156 $(INCDIR)\getarg.h \
157 $(INCDIR)\glob.h \
158 $(INCDIR)\hex.h \
159 $(INCDIR)\ifaddrs.h \
160 $(INCDIR)\parse_bytes.h \
161 $(INCDIR)\parse_time.h \
162 $(INCDIR)\parse_units.h \
163 $(INCDIR)\resolve.h \
164 $(INCDIR)\roken.h \
165 $(INCDIR)\roken-common.h \
166 $(INCDIR)\rtbl.h \
167 $(INCDIR)\search.h \
168 $(INCDIR)\stdbool.h \
169 $(INCDIR)\syslog.h \
170 $(INCDIR)\vis.h \
171 !ifndef HAVE_STDINT_H
172 $(INCDIR)\stdint.h \
173 !endif
174 $(INCDIR)\xdbm.h
175
176 clean::
177 -$(RM) $(XHEADERS)
178
179 all:: $(INCFILES) $(LIBROKEN)
180
181 clean::
182 -$(RM) $(LIBROKEN)
183
184 TMP_PROGS = $(OBJ)\snprintf-test.exe $(OBJ)\resolve-test.exe
185
186 # Tests
187
188 TEST_PROGS = \
189 $(OBJ)\base64-test.exe \
190 $(OBJ)\getaddrinfo-test.exe \
191 $(OBJ)\getifaddrs-test.exe \
192 $(OBJ)\hex-test.exe \
193 $(OBJ)\test-detach.exe \
194 $(OBJ)\test-readenv.exe \
195 $(OBJ)\parse_bytes-test.exe \
196 $(OBJ)\parse_reply-test.exe \
197 $(OBJ)\parse_time-test.exe \
198 $(OBJ)\snprintf-test.exe \
199 $(OBJ)\strpftime-test.exe \
200 $(OBJ)\dirent-test.exe \
201 $(OBJ)\test-mini_inetd.exe
202
203 $(OBJ)\strftime_test.obj: strftime.c
204 $(C2OBJ) -DTEST_SNPRINTF -DTEST_STRPFTIME -DBUILD_ROKEN_LIB
205
206 $(OBJ)\strptime_test.obj: strptime.c
207 $(C2OBJ) -DTEST_SNPRINTF -DTEST_STRPFTIME -DBUILD_ROKEN_LIB
208
209 $(OBJ)\snprintf_test.obj: snprintf.c
210 $(C2OBJ) -DTEST_SNPRINTF -DTEST_STRPFTIME -DBUILD_ROKEN_LIB
211
212 $(OBJ)\libtest.lib: $(OBJ)\strftime_test.obj $(OBJ)\strptime_test.obj $(OBJ)\snprintf_test.obj
213 $(LIBCON)
214
215 $(OBJ)\parse_reply-test.obj: parse_reply-test.c
216 $(C2OBJ) -DTEST_RESOLVE -DBUILD_ROKEN_LIB
217
218 $(OBJ)\resolve_test.obj: resolve.c
219 $(C2OBJ) -DTEST_RESOLVE -DBUILD_ROKEN_LIB
220
221 $(OBJ)\parse_reply-test.exe: $(OBJ)\parse_reply-test.obj $(OBJ)\resolve_test.obj $(LIBROKEN)
222 $(EXECONLINK) DnsAPI.lib
223
224 $(OBJ)\test-readenv.exe: $(OBJ)\test-readenv.obj $(OBJ)\test-mem.obj $(LIBROKEN)
225 $(EXECONLINK)
226
227 $(OBJ)\parse_time-test.exe: $(OBJ)\parse_time-test.obj $(OBJ)\test-mem.obj $(LIBROKEN)
228 $(EXECONLINK)
229
230 $(OBJ)\strpftime-test.obj: strpftime-test.c
231 $(C2OBJ) -DTEST_STRPFTIME -DBUILD_ROKEN_LIB
232
233 $(OBJ)\strpftime-test.exe: $(OBJ)\strpftime-test.obj $(OBJ)\libtest.lib $(LIBROKEN)
234 $(EXECONLINK)
235
236 $(OBJ)\snprintf-test.obj: snprintf-test.c
237 $(C2OBJ) -DTEST_SNPRINTF -DBUILD_ROKEN_LIB
238
239 $(OBJ)\snprintf-test.exe: $(OBJ)\snprintf-test.obj $(OBJ)\libtest.lib $(LIBROKEN)
240 $(EXECONLINK)
241
242 $(OBJ)\resolve-test.exe: $(OBJ)\resolve-test.obj $(LIBROKEN)
243 $(EXECONLINK) DnsAPI.lib
244
245 $(OBJ)\base64-test.exe: $(OBJ)\base64-test.obj $(OBJ)\base64.obj $(LIBROKEN)
246 $(EXECONLINK)
247
248 $(OBJ)\getaddrinfo-test.exe: $(OBJ)\getaddrinfo-test.obj $(LIBROKEN)
249 $(EXECONLINK)
250
251 $(OBJ)\hex-test.exe: $(OBJ)\hex-test.obj $(LIBROKEN)
252 $(EXECONLINK)
253
254 $(OBJ)\parse_bytes-test.exe: $(OBJ)\parse_bytes-test.obj $(LIBROKEN)
255 $(EXECONLINK)
256
257 $(OBJ)\test-detach.exe: $(OBJ)\test-detach.obj $(OBJ)\detach.obj $(LIBROKEN)
258 $(EXECONLINK)
259
260 $(OBJ)\dirent-test.exe: $(OBJ)\dirent-test.obj $(LIBROKEN)
261 $(EXECONLINK)
262
263 $(OBJ)\getifaddrs-test.exe: $(OBJ)\getifaddrs-test.obj $(LIBROKEN)
264 $(EXECONLINK)
265
266 $(OBJ)\test-mini_inetd.exe: $(OBJ)\test-mini_inetd.obj $(LIBROKEN)
267 $(EXECONLINK)
268
269 test-binaries: $(TEST_PROGS) $(TMP_PROGS)
270
271 test-run:
272 cd $(OBJ)
273 -test-mini_inetd.exe
274 -dirent-test.exe
275 -base64-test.exe
276 -getaddrinfo-test.exe
277 -getifaddrs-test.exe
278 -hex-test.exe
279 -test-readenv.exe
280 -parse_bytes-test.exe
281 # Need to rewrite this test:
282 # -parse_reply-test.exe
283 -parse_time-test.exe
284 -snprintf-test.exe
285 -strpftime-test.exe
286 cd $(SRCDIR)
287
288 test:: test-binaries test-run
289
290