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 32RELDIR=lib\roken 33 34!include ../../windows/NTMakefile.w32 35 36libroken_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 127libroken_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 150INCFILES = \ 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 176clean:: 177 -$(RM) $(XHEADERS) 178 179all:: $(INCFILES) $(LIBROKEN) 180 181clean:: 182 -$(RM) $(LIBROKEN) 183 184TMP_PROGS = $(OBJ)\snprintf-test.exe $(OBJ)\resolve-test.exe 185 186# Tests 187 188TEST_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 269test-binaries: $(TEST_PROGS) $(TMP_PROGS) 270 271test-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 288test:: test-binaries test-run 289 290