source: trunk/src/libctests/glibc/Makefile@ 2172

Last change on this file since 2172 was 2158, checked in by bird, 20 years ago

math, malloc suchlike.

  • Property cvs2svn:cvs-rev set to 1.13
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 19.8 KB
Line 
1# $Id: Makefile 2158 2005-07-02 22:54:54Z bird $
2
3
4# default rule
5all: tests-logged
6
7#
8# Basic setup.
9#
10OUTDIR = ./out
11TS = $(shell date '+"%Y-%m-%d-%H-%M-%S"')
12LOG = $(OUTDIR)/$(1)-$(TS).log
13CC = gcc
14LDFLAGS=
15CFLAGS = -O -D_GNU_SOURCE -std=gnu99 -DOBJPFX=\"$(OUTDIR)/\"
16ifeq ($(shell uname -m),amd64)
17CFLAGS+= -I sysdeps/x86_64 -I .
18else
19CFLAGS+= -I sysdeps/i386/i686 -I sysdeps/i386 -I .
20endif
21
22
23#
24# Skipped tests, Expected failures.
25#
26ifeq ($(TARGET),)
27TARGET := innoteklibc
28endif
29
30ifeq ($(TARGET),glibc)
31SKIPPED :=
32EXPECTED :=
33_TARGET_OK := ok
34CFLAGS += -D__GLIBC__ \
35 -DHAVE___STRTOD_INTERNAL \
36 -DHAVE_ASPRINTF \
37 -DHAVE_GETLINE \
38 -DHAVE_STRNLEN \
39 -DHAVE_STPNCPY \
40 -DHAVE_STRCHRNUL \
41 -DHAVE_RAWMEMCHR \
42 -DHAVE_MEMRCHR \
43 -DHAVE_STRSEP \
44 -DHAVE_STRNDUP \
45 -DHAVE_MEMPCPY \
46 -DHAVE_NEWLOCALE \
47 -DHAVE_64BIT_FILEIO_TYPES \
48 -DHAVE_SWPRINTF \
49 -DHAVE_RPC_NETDB_H
50endif
51
52ifeq ($(TARGET),innoteklibc)
53SKIPPED := \
54 malloc/tst-mallocstate.c \
55 \
56 math/test-matherr.c \
57 math/bug-tgmath1.c \
58 math/test-tgmath.c \
59 math/test-tgmath-ret.c \
60 \
61 misc/tst-efgcvt.c \
62 misc/tst-mntent.c \
63 \
64 nss/bug-erange.c \
65 \
66 posix/bug-ga1.c \
67 posix/bug-ga2.c \
68 posix/bug-regex1.c \
69 posix/bug-regex10.c \
70 posix/bug-regex13.c \
71 posix/bug-regex14.c \
72 posix/bug-regex16.c \
73 posix/bug-regex17.c \
74 posix/bug-regex19.c \
75 posix/bug-regex20.c \
76 posix/bug-regex22.c \
77 posix/bug-regex4.c \
78 posix/bug-regex7.c \
79 posix/bug-regex8.c \
80 posix/runtests.c \
81 posix/test-vfork.c \
82 posix/tst-boost.c \
83 posix/tst-execl2.c \
84 posix/tst-execle2.c \
85 posix/tst-execlp2.c \
86 posix/tst-execv2.c \
87 posix/tst-execve2.c \
88 posix/tst-execvp2.c \
89 posix/tst-execvp3.c \
90 posix/tst-getaddrinfo.c \
91 posix/tst-getaddrinfo2.c \
92 posix/tst-gnuglob.c \
93 posix/tst-mmap.c \
94 posix/tst-preadwrite64.c \
95 posix/tst-rxspencer.c \
96 posix/tst-truncate64.c \
97 posix/tst-vfork1.c \
98 posix/tst-vfork2.c \
99 \
100 pwd/tst-getpw.c \
101 \
102 stdio-common/tst-cookie.c \
103 stdio-common/tst-fmemopen.c \
104 stdio-common/tst-fmemopen2.c \
105 stdio-common/tst-obprintf.c \
106 stdio-common/tst-perror.c \
107 stdio-common/tst-pop8en.c \
108 stdio-common/tst-printfsz.c \
109 stdio-common/tst-swprintf.c \
110 \
111 stdlib/test-a64l.c \
112 stdlib/tst-setcontext.c \
113 \
114 string/test-ffs.c \
115 string/test-stpncpy.c \
116 string/tst-bswap.c \
117 string/tst-strfry.c \
118 \
119 sunrpc/tst-getmyaddr.c \
120 \
121 time/tst_wcsftime.c \
122 time/tst-ftime_l.c \
123 time/tst-getdate.c \
124 time/tst-strptime2.c \
125 \
126 timezone/test-tz.c \
127 timezone/tst-timezone.c \
128 \
129 wcsmbs/tst-wcpncpy.c \
130 wcsmbs/tst-wcsnlen.c \
131
132EXPECTED := \
133 wcsmbs/tst-mbrtowc.c \
134 wcsmbs/tst-wcrtomb.c \
135 time/tst-posixtz.c \
136 time/tst-strftime.c \
137 stdlib/tst-putenv.c \
138 stdio-common/test-popen.c \
139 stdio-common/test-vfprintf.c \
140 stdio-common/tst-fphex.c \
141 stdio-common/tstscanf.c \
142 resolv/tst-aton.c \
143 posix/bug-glob1.c \
144 posix/bug-glob2.c \
145 posix/bug-regex11.c \
146 posix/bug-regex15.c \
147 posix/bug-regex18.c \
148 posix/bug-regex9.c \
149 posix/testfnm.c \
150 posix/tst-chmod.c \
151 posix/tst-dir.c \
152 posix/tst-fnmatch.c \
153 posix/tst-pcre.c \
154 misc/tst-tsearch.c \
155 misc/tst-dirname.c
156
157# NOTES:
158# stdio-common/test-vfprintf.c: File duplication and truncation needs exploring with regards to file position!
159# stdio-common/tst-fphex.c: We don't implement %a.
160# stdio-common/tst-sscanf.c: Is doing some thousand separator and internationalization stuff which we don't implement.
161# stdio-common/tstscanf.c: two cases of sscan working in three different ways depending on glibc, bsd or libc. cool!
162# posix/runtests.c: This really needs looking at on BSD.
163# posix/testfnm.c: This looks bad!
164# posix/tst-fnmatch.c: This too!
165# misc/tst-tsearch.c: This really needs looking at on BSD.
166
167CFLAGS += -Zomf -g -I sysdeps/os2 \
168 -Dprogram_invocation_short_name=getprogname\(\) \
169 -DHAVE_STRNLEN \
170 -DHAVE_MEMPCPY \
171 -DHAVE_ASPRINTF \
172 -DHAVE_GETLINE \
173 -DHAVE_STRCHRNUL \
174 -DHAVE_RAWMEMCHR \
175 -DHAVE_MEMRCHR
176LDFLAGS += -Zstack 512
177_TARGET_OK := ok
178
179posix/runptests.c_ARGS = 15 # expect 15 errors
180math/test-float.c_ARGS = -e 273 # expect 273 errors
181math/test-ifloat.c_ARGS = -e 217 # expect 217 errors
182math/test-double.c_ARGS = -e 174 # expect 174 errors
183math/test-idouble.c_ARGS = -e 142 # expect 142 errors
184math/test-ldouble.c_ARGS = -e 212 # expect 212 errors
185math/test-ildoubl.c_ARGS = -e 153 # expect 153 errors
186endif
187
188ifeq ($(TARGET),bsd)
189SKIPPED := \
190 argp/tst-argp1.c \
191 argp/argp-test.c \
192 \
193 assert/test-assert-perr.c \
194 \
195 crypt/cert.c \
196 \
197 iconv/tst-iconv1.c \
198 iconv/tst-iconv2.c \
199 iconv/tst-iconv3.c \
200 iconv/tst-iconv5.c \
201 \
202 inet/tst-ether_aton.c \
203 \
204 intl/tst-ngettext.c \
205 \
206 string/test-mempcpy.c \
207 string/test-stpncpy.c \
208 string/tst-bswap.c \
209 string/tst-strfry.c
210EXCEPTIONS := \
211 catgets/test-gencat.c
212_TARGET_OK := ok
213CFLAGS += -I sysdeps/unix/bsd -D__BSD__ \
214 -DHAVE_ASPRINTF \
215 -DHAVE_SWPRINTF \
216 -DHAVE_GETLINE
217endif
218
219ifndef _TARGET_OK
220$(error Invalid TARGET definition '$(TARGET)'. valid: glibc, innoteklibc, bsd)
221endif
222
223
224nothing:
225 @echo TS=$(TS)
226
227
228#
229# The test.
230#
231
232ARGP := \
233 argp/tst-argp1.c \
234 argp/argp-test.c
235
236ASSERT := \
237 assert/test-assert-perr.c \
238 assert/test-assert.c
239
240CATGETS := \
241 catgets/test-gencat.c
242
243#CONFORM - separate.
244
245CRYPT := \
246 crypt/md5c-test.c \
247 crypt/cert.c
248
249crypt/md5c-test.c_LDFLAGS = -lcrypt
250crypt/cert.c_LDFLAGS = -lcrypt
251crypt/cert.c_INPUT = crypt/cert.input
252
253CSU := \
254 csu/tst-empty.c
255# csu/tst-atomic.c \
256# csu/tst-atomic-long.c \
257
258CTYPE := \
259 ctype/test_ctype.c
260
261DEBUG := # skipped
262
263DIRENT := \
264 dirent/list.c \
265 dirent/bug-readdir1.c \
266 dirent/opendir-tst1.c \
267 dirent/tst-seekdir.c
268
269DLFCN := # postponed
270ELF := # postponed
271GMON := # postponed
272
273GNULIB := \
274 gnulib/tst-gcc.c
275
276GRP := \
277 grp/testgrp.c
278# grp/tst_fgetgrent.c
279
280ICONV := \
281 iconv/tst-iconv1.c \
282 iconv/tst-iconv2.c \
283 iconv/tst-iconv3.c \
284 iconv/tst-iconv5.c
285
286ICONVDATA := # skipped
287
288INET := \
289 inet/bug-if1.c \
290 inet/htontest.c \
291 inet/test-ifaddrs.c \
292 inet/test_ifindex.c \
293 inet/tst-ether_aton.c \
294 inet/tst-gethnm.c \
295 inet/tst-network.c \
296 inet/tst-ntoa.c
297
298INTL := \
299 intl/tst-ngettext.c
300# more intl todo
301IO := \
302 io/bug-ftw1.c \
303 io/bug-ftw2.c \
304 io/bug-ftw3.c \
305 io/bug-ftw4.c \
306 io/ftwtest.c \
307 io/test-lfs.c \
308 io/test-stat.c \
309 io/test-stat2.c \
310 io/test-utime.c \
311 io/tst-fcntl.c \
312 io/tst-getcwd.c \
313 io/tst-statvfs.c
314# todo io/ftwtest.sh
315
316LIBIO := \
317 libio/bug-fopena+.c \
318 libio/bug-fseek.c \
319 libio/bug-ftell.c \
320 libio/bug-mmap-fflush.c \
321 libio/bug-rewind.c \
322 libio/bug-rewind2.c \
323 libio/bug-ungetc.c \
324 libio/bug-ungetc2.c \
325 libio/bug-ungetc3.c \
326 libio/bug-ungetc4.c \
327 libio/bug-ungetwc1.c \
328 libio/bug-ungetwc2.c \
329 libio/bug-wfflush.c \
330 libio/test-fmemopen.c \
331 libio/test-freopen.c \
332 libio/tst-atime.c \
333 libio/tst-eof.c \
334 libio/tst-ext.c \
335 libio/tst-fgetws.c \
336 libio/tst-fopenloc.c \
337 libio/tst-freopen.c \
338 libio/tst-mmap-eofsync.c \
339 libio/tst-mmap-fflushsync.c \
340 libio/tst-mmap-offend.c \
341 libio/tst-mmap-setvbuf.c \
342 libio/tst-mmap2-eofsync.c \
343 libio/tst-sscanf.c \
344 libio/tst-swscanf.c \
345 libio/tst-ungetwc1.c \
346 libio/tst-ungetwc2.c \
347 libio/tst-widetext.c \
348 libio/tst_getwc.c \
349 libio/tst_putwc.c \
350 libio/tst_swprintf.c \
351 libio/tst_swscanf.c \
352 libio/tst_wprintf.c \
353 libio/tst_wprintf2.c \
354 libio/tst_wscanf.c
355
356libio/tst-widetext.c_INPUT = libio/tst-widetext.input
357libio/tst_getwc.c_INPUT = libio/tst_getwc.input
358libio/tst_wscanf.c_INPUT = libio/tst_wscanf.input
359
360# todo libio/test-freopen.sh
361
362LINUXTHREADS := # skipped
363
364LOCALE := \
365 locale/tst-C-locale.c
366
367LOCALEDATA := # todo later
368
369LOGIN := \
370 login/tst-grantpt.c \
371 login/tst-utmp.c \
372 login/tst-utmpx.c
373
374MALLOC := \
375 malloc/tst-calloc.c \
376 malloc/tst-malloc.c \
377 malloc/tst-mallocstate.c \
378 malloc/tst-mcheck.c \
379 malloc/tst-obstack.c \
380 malloc/tst-valloc.c
381# malloc/tst-mtrace.c
382# malloc/tst-mtrace.sh
383
384MATH := \
385 math/basic-test.c \
386 math/bug-nextafter.c \
387 math/bug-nexttoward.c \
388 math/bug-tgmath1.c \
389 math/test-fenv.c \
390 math/test-float.c \
391 math/test-fpucw.c \
392 math/test-matherr.c \
393 math/test-misc.c \
394 math/test-tgmath-ret.c \
395 math/test-tgmath.c \
396 math/tst-definitions.c \
397 math/test-idouble.c \
398 math/test-ifloat.c \
399 math/test-double.c \
400 math/test-ldouble.c \
401 math/test-ildoubl.c
402# math/atest-exp2.c
403# math/atest-sincos.c
404# math/atest-exp.c
405
406$(foreach t,$(MATH),$(eval $(t)_LDFLAGS := -lm))
407$(foreach t,$(filter math/test-%,$(MATH)), \
408$(eval $(t)_DEPS := $(OUTDIR)/math/libm-test.stamp) \
409$(eval $(t)_CFLAGS := -I $(OUTDIR)/math/) \
410)
411
412$(OUTDIR)/math/libm-test.stamp: \
413 sysdeps/i386/fpu/libm-test-ulps \
414 math/libm-test.inc \
415 math/gen-libm-test.pl Makefile
416 cd math && perl gen-libm-test.pl -u ../$< -o ../$(OUTDIR)/math/
417 @echo > $@
418
419
420MISC :=\
421 misc/tst-dirname.c \
422 misc/tst-efgcvt.c \
423 misc/tst-fdset.c \
424 misc/tst-hsearch.c \
425 misc/tst-mntent.c \
426 misc/tst-tsearch.c
427misc/tst-tsearch.c_LDFLAGS = -lm
428
429NPTL := # skipped
430
431NSS := \
432 nss/bug-erange.c \
433 nss/test-netdb.c
434
435
436# posix/bug-regex5.c - internal
437# posix/bug-regex20.c - internal
438# posix/bug-regex24.c - goes on forever it seems
439POSIX :=\
440 posix/bug-ga1.c \
441 posix/bug-ga2.c \
442 posix/bug-glob1.c \
443 posix/bug-glob2.c \
444 posix/bug-regex1.c \
445 posix/bug-regex10.c \
446 posix/bug-regex11.c \
447 posix/bug-regex12.c \
448 posix/bug-regex13.c \
449 posix/bug-regex14.c \
450 posix/bug-regex15.c \
451 posix/bug-regex16.c \
452 posix/bug-regex17.c \
453 posix/bug-regex18.c \
454 posix/bug-regex19.c \
455 posix/bug-regex2.c \
456 posix/bug-regex21.c \
457 posix/bug-regex22.c \
458 posix/bug-regex23.c \
459 posix/bug-regex3.c \
460 posix/bug-regex4.c \
461 posix/bug-regex6.c \
462 posix/bug-regex7.c \
463 posix/bug-regex8.c \
464 posix/bug-regex9.c \
465 posix/runptests.c \
466 posix/runtests.c \
467 posix/test-vfork.c \
468 posix/testfnm.c \
469 posix/tst-boost.c \
470 posix/tst-chmod.c \
471 posix/tst-dir.c \
472 posix/tst-exec.c \
473 posix/tst-execl1.c \
474 posix/tst-execl2.c \
475 posix/tst-execle1.c \
476 posix/tst-execle2.c \
477 posix/tst-execlp1.c \
478 posix/tst-execlp2.c \
479 posix/tst-execv1.c \
480 posix/tst-execv2.c \
481 posix/tst-execve1.c \
482 posix/tst-execve2.c \
483 posix/tst-execvp1.c \
484 posix/tst-execvp2.c \
485 posix/tst-execvp3.c \
486 posix/tst-fnmatch.c \
487 posix/tst-fork.c \
488 posix/tst-getaddrinfo.c \
489 posix/tst-getaddrinfo2.c \
490 posix/tst-getlogin.c \
491 posix/tst-gnuglob.c \
492 posix/tst-mmap.c \
493 posix/tst-nanosleep.c \
494 posix/tst-nice.c \
495 posix/tst-pcre.c \
496 posix/tst-preadwrite.c \
497 posix/tst-preadwrite64.c \
498 posix/tst-rxspencer.c \
499 posix/tst-spawn.c \
500 posix/tst-truncate.c \
501 posix/tst-truncate64.c \
502 posix/tst-vfork1.c \
503 posix/tst-vfork2.c \
504 posix/tst-waitid.c \
505 posix/tstgetopt.c
506# posix/tst-regex.c - internal?
507# posix/tst-regex2.c - too new?
508# posix/tst-regexloc.c - internal?
509# posix/tst-sysconf.c - too new?
510# todo:
511# posix/wordexp-test.c
512# posix/wordexp-tst.sh
513# posix/globtest.c
514# posix/globtest.sh
515# posix/tst-getconf.sh
516
517posix/tst-fnmatch.c_INPUT = posix/tst-fnmatch.input
518
519posix/tstgetopt.c_ARGS = -a -b -cfoobar --required foobar --optional=bazbug --none random --col --color --colour
520posix/tst-exec.c_ARGS = -- ./tst-exec.exe --direct --direct --direct
521posix/tst-spawn.c_ARGS = -- ./tst-spawn.exe --direct --direct --direct
522posix/tst-dir.c_ARGS = `pwd` `pwd`/$(OUTDIR)/posix `pwd`/$(OUTDIR) `pwd`/$(OUTDIR)/tst-dir.exe
523posix/tst-chmod.c_ARGS = `pwd`/posix
524posix/tst-rxspencer.c_ARGS = --utf8 posix/rxspencer/tests
525posix/tst-pcre.c_ARGS = $(CURDIR)/posix/PCRE.tests
526posix/tst-boost.c_ARGS = $(CURDIR)/posix/BOOST.tests
527posix/bug-glob1.c_ARGS = "."
528posix/tst-execvp3.c_ARGS = --test-dir="."
529
530
531PWD := \
532 pwd/tst-getpw.c
533
534RESOLV := \
535 resolv/tst-aton.c \
536 resolv/tst-leaks.c \
537 resolv/tst-leaks2.c
538ifeq ($(TARGET),glibc)
539resolv/tst-leaks.c_LDFLAGS = -lresolv
540resolv/tst-leaks2.c_LDFLAGS = -lresolv
541endif
542
543RT := # todo
544SETJMP := \
545 setjmp/tst-setjmp.c
546
547SIGNAL := \
548 signal/tst-raise.c \
549 signal/tst-signal.c \
550 signal/tst-sigset.c \
551 signal/tst-sigsimple.c
552
553SOFT-FP := # skipping
554
555STDIO-COMMON := \
556 stdio-common/temptest.c \
557 stdio-common/test-fseek.c \
558 stdio-common/test-fwrite.c \
559 stdio-common/test-popen.c \
560 stdio-common/test-vfprintf.c \
561 stdio-common/test_rdwr.c \
562 stdio-common/tst-cookie.c \
563 stdio-common/tst-fdopen.c \
564 stdio-common/tst-ferror.c \
565 stdio-common/tst-fileno.c \
566 stdio-common/tst-fmemopen.c \
567 stdio-common/tst-fmemopen2.c \
568 stdio-common/tst-fphex.c \
569 stdio-common/tst-fseek.c \
570 stdio-common/tst-gets.c \
571 stdio-common/tst-obprintf.c \
572 stdio-common/tst-perror.c \
573 stdio-common/tst-popen.c \
574 stdio-common/tst-printfsz.c \
575 stdio-common/tst-rndseek.c \
576 stdio-common/tst-sprintf.c \
577 stdio-common/tst-sscanf.c \
578 stdio-common/tst-swprintf.c \
579 stdio-common/tst-tmpnam.c \
580 stdio-common/tst-ungetc.c \
581 stdio-common/tst-unlockedio.c \
582 stdio-common/tst-wc-printf.c \
583 stdio-common/tstdiomisc.c \
584 stdio-common/tstgetln.c \
585 stdio-common/tstscanf.c
586stdio-common/tst-ferror.c_INPUT = stdio-common/tst-ferror.input
587stdio-common/tst-gets.c_INPUT = stdio-common/tst-gets.input
588stdio-common/tstgetln.c_INPUT = stdio-common/tstgetln.input
589stdio-common/tstscanf.c_INPUT = stdio-common/tstscanf.input
590# stdio-common/tst-printf.c
591# stdio-common/tst-printf.sh
592# stdio-common/tst-unbputc.c
593# stdio-common/tst-unbputc.sh
594
595STDLIB := \
596 stdlib/bug-strtod.c \
597 stdlib/test-a64l.c \
598 stdlib/test-canon.c \
599 stdlib/test-canon2.c \
600 stdlib/testmb.c \
601 stdlib/testmb2.c \
602 stdlib/testrand.c \
603 stdlib/testsort.c \
604 stdlib/tst-bsearch.c \
605 stdlib/tst-environ.c \
606 stdlib/tst-limits.c \
607 stdlib/tst-putenv.c \
608 stdlib/tst-qsort.c \
609 stdlib/tst-rand48.c \
610 stdlib/tst-random.c \
611 stdlib/tst-random2.c \
612 stdlib/tst-setcontext.c \
613 stdlib/tst-strtod.c \
614 stdlib/tst-strtol.c \
615 stdlib/tst-strtoll.c \
616 stdlib/tst-system.c \
617 stdlib/tst-xpg-basename.c \
618 stdlib/testdiv.c
619# todo:
620# stdlib/tst-fmtmsg.c
621# stdlib/tst-fmtmsg.sh
622# stdlib/tst-putenvmod.c
623stdlib/testdiv.c_INPUT = stdlib/testdiv.input
624
625STRING := \
626 string/bug-strcoll1.c \
627 string/bug-strncat1.c \
628 string/bug-strpbrk1.c \
629 string/bug-strspn1.c \
630 string/inl-tester.c \
631 string/noinl-tester.c \
632 string/test-ffs.c \
633 string/test-memccpy.c \
634 string/test-memchr.c \
635 string/test-memcmp.c \
636 string/test-memcpy.c \
637 string/test-memmove.c \
638 string/test-mempcpy.c \
639 string/test-memset.c \
640 string/test-stpcpy.c \
641 string/test-stpncpy.c \
642 string/test-strcat.c \
643 string/test-strchr.c \
644 string/test-strcmp.c \
645 string/test-strcpy.c \
646 string/test-strcspn.c \
647 string/test-strlen.c \
648 string/test-strncmp.c \
649 string/test-strncpy.c \
650 string/test-strpbrk.c \
651 string/test-strrchr.c \
652 string/test-strspn.c \
653 string/testcopy.c \
654 string/tester.c \
655 string/tst-bswap.c \
656 string/tst-inlcall.c \
657 string/tst-strfry.c \
658 string/tst-strlen.c \
659 string/tst-strtok.c \
660 string/tst-strxfrm.c \
661
662STRING_IN_EXP := \
663 string/tst-svc.c
664
665SUNRPC := \
666 sunrpc/tst-getmyaddr.c
667
668SYSDEPS := # todo
669
670TIME := \
671 time/clocktest.c \
672 time/test_time.c \
673 time/tst-ftime_l.c \
674 time/tst-getdate.c \
675 time/tst-mktime.c \
676 time/tst-mktime2.c \
677 time/tst-mktime3.c \
678 time/tst-posixtz.c \
679 time/tst-strftime.c \
680 time/tst-strptime.c \
681 time/tst-strptime2.c \
682 time/tst_wcsftime.c
683
684TIMEZONE := \
685 timezone/test-tz.c \
686 timezone/tst-timezone.c
687
688WCSMBS := \
689 wcsmbs/tst-btowc.c \
690 wcsmbs/tst-mbrtowc.c \
691 wcsmbs/tst-mbsrtowcs.c \
692 wcsmbs/tst-wcpncpy.c \
693 wcsmbs/tst-wcrtomb.c \
694 wcsmbs/tst-wcsnlen.c \
695 wcsmbs/tst-wcstof.c \
696 wcsmbs/wcsmbs-tst1.c
697
698WCTYPE := \
699 wctype/test_wcfuncs.c \
700 wctype/test_wctype.c
701
702
703SUBTESTS := \
704 ARGP \
705 ASSERT \
706 CATGETS \
707 CRYPT \
708 CSU \
709 CTYPE \
710 DEBUG \
711 DIRENT \
712 DLFCN \
713 ELF \
714 GMON \
715 GNULIB \
716 GRP \
717 ICONV \
718 ICONVDATA \
719 INET \
720 INTL \
721 IO \
722 LIBIO \
723 LINUXTHREADS \
724 LOCALE \
725 LOCALEDATA \
726 LOGIN \
727 MALLOC \
728 MANUAL \
729 MATH \
730 MISC \
731 NPTL \
732 NSS \
733 POSIX \
734 PWD \
735 RESOLV \
736 RT \
737 SCRIPTS \
738 SETJMP \
739 SIGNAL \
740 SOFT-FP \
741 STDIO-COMMON \
742 STDLIB \
743 STRING \
744 SUNRPC \
745 SYSDEPS \
746 TIME \
747 TIMEZONE \
748 WCSMBS \
749 WCTYPE
750
751.SUFFIXES:
752.SUFFIXES: .c .exe .result
753
754
755#
756# Generate test rules
757#
758_TESTS :=
759
760# process one test
761define def_simple
762
763$(OUTDIR)/$2.result: $1 $(OUTDIR)/$(dir $1).dir_created $($(1)_DEPS)
764 @echo "########## $1"; \
765 echo "## BUILDING: $$(CC) $$(CFLAGS) $$(LDFLAGS) -o $(OUTDIR)/$2.exe $($(1)_CFLAGS) $($(1)_LDFLAGS) $$<"; \
766 if $$(CC) $$(CFLAGS) $$(LDFLAGS) -o $(OUTDIR)/$2.exe $($(1)_CFLAGS) $($(1)_LDFLAGS) $$<; then \
767 echo "## RUNNING : (cd $$(dir $$@) && LC_ALL=C $($1_ENVS) $(notdir $2).exe $($1_ARGS)) $(if $($(1)_INPUT), < $($(1)_INPUT),)"; \
768 if (cd $$(dir $$@) && LC_ALL=C $($1_ENVS) $(notdir $2).exe $($1_ARGS)) $(if $($(1)_INPUT), < $($(1)_INPUT),); then\
769 echo OK > $$@; \
770 printf "########## %-26s - SUCCESS\n" "$1"; \
771 else \
772 echo "## rc=$$$$?"; \
773 printf "########## %-26s - $(if $(filter $1,$(EXPECTED)),EXPECTED FAILURE,FAILURE)\n" "$1"; \
774 echo "$(if $(filter $1,$(EXPECTED)),EXPECTED,FAILURE)" > $$@; \
775 fi \
776 else \
777 echo "## rc=$$$$? "; \
778 echo "## $$(CC) $$(CFLAGS) -o $(OUTDIR)/$2.exe $($(1)_CFLAGS) $($(1)_LDFLAGS) $$<"; \
779 printf "########## %-26s - BUILD FAILURE\n" "$1"; \
780 echo "FAILURE - $$(CC) $$(CFLAGS) -o $(OUTDIR)/$2.exe $($(1)_CFLAGS) $($(1)_LDFLAGS) $$<" > $$@; \
781 fi
782
783$2: $(OUTDIR)/$2.result
784 @
785
786_TESTS += $(OUTDIR)/$2.result
787$(eval _$(TEST) += $(OUTDIR)/$2.result)
788endef
789
790# skip on test
791define def_skipped
792$(OUTDIR)/$2.result: $(OUTDIR)/$(dir $1).dir_created
793 @printf "########## %-26s - SKIPPED\n" "$1"; \
794 echo "SKIPPED" > $$@
795
796_TESTS += $(OUTDIR)/$2.result
797$(eval _$(TEST) += $(OUTDIR)/$2.result)
798endef
799
800# process a subtest
801define def_subtest
802$(eval test := $(shell echo $(TEST) | tr 'A-Z' 'a-z'))
803$(eval _$(TEST) :=)
804$(foreach src, $($(TEST)), \
805 $(if $(filter $(src),$(SKIPPED)),\
806 $(eval $(call def_skipped,$(src),$(basename $(src)),)),\
807 $(eval $(call def_simple,$(src),$(basename $(src)),)) \
808 ) \
809)
810
811.PHONY: $(test)
812$(test): $(_$(TEST))
813 @echo "**** $$@ ****"
814 @echo " SUCCESS : `cat /dev/null $$^ | grep OK | wc -l`"
815 @echo " SKIPPED : `cat /dev/null $$^ | grep SKIPPED | wc -l`"
816 @echo " EXPECTED: `cat /dev/null $$^ | grep EXPECTED | wc -l`"
817 @echo " FAILURES: `cat /dev/null $$^ | grep FAILURE | wc -l`"
818
819endef
820
821# process all subtests
822$(foreach TEST, $(SUBTESTS), $(eval $(def_subtest)))
823
824
825#
826# generate directory rules
827#
828define def_dir
829$1.dir_created:
830 @mkdir -p $1
831 @echo > $$@
832endef
833
834_DIRS := $(sort $(dir $(_TESTS)))
835$(foreach d,$(_DIRS), $(eval $(call def_dir,$(d))))
836
837
838#
839# All tests (expect the ones in the next sections).
840#
841tests: $(_TESTS)
842 @echo "***************"
843 @echo " SUCCESS : `cat /dev/null $^ | grep OK | wc -l`"
844 @echo " SKIPPED : `cat /dev/null $^ | grep SKIPPED | wc -l`"
845 @echo " EXPECTED: `cat /dev/null $^ | grep EXPECTED | wc -l`"
846 @echo " FAILURES: `cat /dev/null $^ | grep FAILURE | wc -l`"
847
848tests-logged:
849 @echo "**** logging to $(call LOG,test) ****"
850 $(MAKE) tests 2>&1 | tee $(call LOG,test)
851
852
853#
854# Special and separate tests.
855#
856.PHONY: conform
857conform:
858 cd conform/ && perl ./conformtest.pl
859
860conform-logged:
861 @echo "**** logging to $(call LOG,conform) ****"
862 $(MAKE) conform 2>&1 | tee $(call LOG,conform)
863
Note: See TracBrowser for help on using the repository browser.