
1: # Copyright (C) 1991-1999, 2000-2006, 2007 Free Software Foundation, Inc. 2: # This file is part of the GNU C Library. 3: 4: # The GNU C Library is free software; you can redistribute it and/or 5: # modify it under the terms of the GNU Lesser General Public 6: # License as published by the Free Software Foundation; either 7: # version 2.1 of the License, or (at your option) any later version. 8: 9: # The GNU C Library is distributed in the hope that it will be useful, 10: # but WITHOUT ANY WARRANTY; without even the implied warranty of 11: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12: # Lesser General Public License for more details. 13: 14: # You should have received a copy of the GNU Lesser General Public 15: # License along with the GNU C Library; if not, write to the Free 16: # Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 17: # 02111-1307 USA. 18: 19: # 20: # Sub-makefile for POSIX portion of the library. 21: # 22: subdir := posix 23: 24: headers := sys/utsname.h sys/times.h sys/wait.h sys/types.h unistd.h \ 25: glob.h regex.h wordexp.h fnmatch.h getopt.h \ 26: bits/types.h bits/typesizes.h bits/pthreadtypes.h \ 27: bits/posix1_lim.h bits/posix2_lim.h bits/posix_opt.h \ 28: bits/local_lim.h tar.h bits/utsname.h bits/confname.h \ 29: bits/waitflags.h bits/waitstatus.h sys/unistd.h sched.h \ 30: bits/sched.h re_comp.h wait.h bits/environments.h cpio.h \ 31: sys/sysmacros.h spawn.h bits/unistd.h 32: 33: distribute := confstr.h TESTS TESTS2C.sed testcases.h \ 34: PTESTS PTESTS2C.sed ptestcases.h \ 35: globtest.c globtest.sh wordexp-tst.sh annexc.c fnmatch_loop.c \ 36: spawn_int.h tst-getconf.sh regcomp.c regexec.c regex_internal.c \ 37: regex_internal.h fork.h rxspencer/tests rxspencer/COPYRIGHT \ 38: PCRE.tests BOOST.tests 39: 40: routines := \ 41: uname \ 42: times \ 43: wait waitpid wait3 wait4 waitid \ 44: alarm sleep pause nanosleep \ 45: fork vfork _exit \ 46: execve fexecve execv execle execl execvp execlp \ 47: getpid getppid \ 48: getuid geteuid getgid getegid getgroups setuid setgid group_member \ 49: getpgid setpgid getpgrp bsd-getpgrp setpgrp getsid setsid \ 50: getresuid getresgid setresuid setresgid \ 51: getlogin getlogin_r setlogin \ 52: pathconf sysconf fpathconf \ 53: glob glob64 fnmatch regex \ 54: confstr \ 55: getopt getopt1 getopt_init \ 56: sched_setp sched_getp sched_sets sched_gets sched_yield sched_primax \ 57: sched_primin sched_rr_gi sched_getaffinity sched_setaffinity \ 58: getaddrinfo gai_strerror wordexp \ 59: pread pwrite pread64 pwrite64 \ 60: spawn_faction_init spawn_faction_destroy spawn_faction_addclose \ 61: spawn_faction_addopen spawn_faction_adddup2 \ 62: spawnattr_init spawnattr_destroy \ 63: spawnattr_getdefault spawnattr_setdefault \ 64: spawnattr_getflags spawnattr_setflags \ 65: spawnattr_getpgroup spawnattr_setpgroup spawn spawnp spawni \ 66: spawnattr_getsigmask spawnattr_getschedpolicy spawnattr_getschedparam \ 67: spawnattr_setsigmask spawnattr_setschedpolicy spawnattr_setschedparam \ 68: posix_madvise \ 69: get_child_max sched_cpucount sched_cpualloc sched_cpufree 70: 71: include ../Makeconfig 72: 73: aux := init-posix environ 74: tests := tstgetopt testfnm runtests runptests \ 75: tst-preadwrite tst-preadwrite64 test-vfork regexbug1 \ 76: tst-getlogin tst-mmap tst-getaddrinfo tst-truncate \ 77: tst-truncate64 tst-fork tst-fnmatch tst-regexloc tst-dir \ 78: tst-chmod bug-regex1 bug-regex2 bug-regex3 bug-regex4 \ 79: tst-gnuglob tst-regex bug-regex5 bug-regex6 bug-regex7 \ 80: bug-regex8 bug-regex9 bug-regex10 bug-regex11 bug-regex12 \ 81: bug-regex13 bug-regex14 bug-regex15 bug-regex16 \ 82: bug-regex17 bug-regex18 bug-regex19 bug-regex20 \ 83: bug-regex21 bug-regex22 bug-regex23 bug-regex24 \ 84: bug-regex25 bug-regex26 bug-regex27 bug-regex28 \ 85: tst-nice tst-nanosleep tst-regex2 \ 86: transbug tst-rxspencer tst-pcre tst-boost \ 87: bug-ga1 tst-vfork1 tst-vfork2 tst-vfork3 tst-waitid \ 88: tst-getaddrinfo2 bug-glob1 bug-glob2 tst-sysconf \ 89: tst-execvp1 tst-execvp2 tst-execlp1 tst-execlp2 \ 90: tst-execv1 tst-execv2 tst-execl1 tst-execl2 \ 91: tst-execve1 tst-execve2 tst-execle1 tst-execle2 \ 92: tst-execvp3 tst-execvp4 tst-rfc3484 tst-rfc3484-2 \ 93: tst-getaddrinfo3 tst-fnmatch2 tst-cpucount tst-cpuset 94: xtests := bug-ga2 95: ifeq (yes,$(build-shared)) 96: test-srcs := globtest 97: tests += wordexp-test tst-exec tst-spawn 98: endif 99: others := getconf 100: install-bin := getconf 101: install-others-programs := $(inst_libexecdir)/getconf 102: 103: before-compile := testcases.h ptestcases.h 104: 105: # So they get cleaned up. 106: generated := $(addprefix wordexp-test-result, 1 2 3 4 5 6 7 8 9 10) \ 107: annexc annexc.out wordexp-tst.out bug-regex2-mem \ 108: bug-regex2.mtrace bug-regex14-mem bug-regex14.mtrace \ 109: bug-regex21-mem bug-regex21.mtrace \ 110: tst-rxspencer-mem tst-rxspencer.mtrace tst-getconf.out \ 111: tst-pcre-mem tst-pcre.mtrace tst-boost-mem tst-boost.mtrace \ 112: bug-ga2.mtrace bug-ga2-mem bug-glob2.mtrace bug-glob2-mem \ 113: tst-vfork3-mem tst-vfork3.mtrace getconf.speclist 114: 115: include ../Rules 116: 117: ifeq (yes,$(build-static-nss)) 118: # We need it for "make check" only. We can skip them if they haven't 119: # been built yet during "make". 120: otherlibs += $(wildcard $(nssobjdir)/libnss_files.a \ 121: $(resolvobjdir)/libnss_dns.a \ 122: $(resolvobjdir)/libresolv.a) 123: endif 124: 125: ifeq (no,$(cross-compiling)) 126: # globtest and wordexp-test currently only works with shared libraries 127: ifeq (yes,$(build-shared)) 128: tests: $(objpfx)globtest.out $(objpfx)wordexp-tst.out 129: $(objpfx)globtest.out: globtest.sh $(objpfx)globtest 130: $(SHELL) -e globtest.sh $(common-objpfx) $(elf-objpfx) \ 131: $(rtld-installed-name) 132: $(objpfx)wordexp-tst.out: wordexp-tst.sh $(objpfx)wordexp-test 133: $(SHELL) -e wordexp-tst.sh $(common-objpfx) $(elf-objpfx) \ 134: $(rtld-installed-name) 135: endif 136: endif 137: 138: CFLAGS-regex.c = -Wno-strict-prototypes 139: CFLAGS-getaddrinfo.c = -DRESOLVER -fexceptions -DUSE_NSCD 140: CFLAGS-pread.c = -fexceptions -fasynchronous-unwind-tables 141: CFLAGS-pread64.c = -fexceptions -fasynchronous-unwind-tables 142: CFLAGS-pwrite.c = -fexceptions -fasynchronous-unwind-tables 143: CFLAGS-pwrite64.c = -fexceptions -fasynchronous-unwind-tables 144: CFLAGS-sleep.c = -fexceptions 145: CFLAGS-wait.c = -fexceptions -fasynchronous-unwind-tables 146: CFLAGS-waitid.c = -fexceptions -fasynchronous-unwind-tables 147: CFLAGS-waitpid.c = -fexceptions -fasynchronous-unwind-tables 148: CFLAGS-getopt.c = -fexceptions 149: CFLAGS-wordexp.c = -fexceptions 150: CFLAGS-wordexp.os = -fomit-frame-pointer 151: CFLAGS-sysconf.c = -fexceptions -DGETCONF_DIR='"$(libexecdir)/getconf"' 152: CFLAGS-pathconf.c = -fexceptions 153: CFLAGS-fpathconf.c = -fexceptions 154: CFLAGS-spawn.c = -fexceptions 155: CFLAGS-spawn.os = -fomit-frame-pointer 156: CFLAGS-spawnp.c = -fexceptions 157: CFLAGS-spawnp.os = -fomit-frame-pointer 158: CFLAGS-spawni.c = -fexceptions 159: CFLAGS-spawni.os = -fomit-frame-pointer 160: CFLAGS-pause.c = -fexceptions 161: CFLAGS-glob.c = $(uses-callbacks) -fexceptions 162: CFLAGS-glob64.c = $(uses-callbacks) -fexceptions 163: CFLAGS-getconf.c = -DGETCONF_DIR='"$(libexecdir)/getconf"' 164: CFLAGS-execve.os = -fomit-frame-pointer 165: CFLAGS-fexecve.os = -fomit-frame-pointer 166: CFLAGS-execv.os = -fomit-frame-pointer 167: CFLAGS-execle.os = -fomit-frame-pointer 168: CFLAGS-execl.os = -fomit-frame-pointer 169: CFLAGS-execvp.os = -fomit-frame-pointer 170: CFLAGS-execlp.os = -fomit-frame-pointer 171: 172: tstgetopt-ARGS = -a -b -cfoobar --required foobar --optional=bazbug \ 173: --none random --col --color --colour 174: 175: tst-exec-ARGS = -- $(built-program-cmd) 176: tst-spawn-ARGS = -- $(built-program-cmd) 177: tst-dir-ARGS = `pwd` `cd $(common-objdir)/$(subdir); pwd` `cd $(common-objdir); pwd` $(objpfx)tst-dir 178: tst-chmod-ARGS = `pwd` 179: tst-vfork3-ARGS = --test-dir=$(objpfx) 180: 181: tst-fnmatch-ENV = LOCPATH=$(common-objpfx)localedata 182: tst-regexloc-ENV = LOCPATH=$(common-objpfx)localedata 183: bug-regex1-ENV = LOCPATH=$(common-objpfx)localedata 184: tst-regex-ENV = LOCPATH=$(common-objpfx)localedata 185: tst-regex2-ENV = LOCPATH=$(common-objpfx)localedata 186: bug-regex5-ENV = LOCPATH=$(common-objpfx)localedata 187: bug-regex6-ENV = LOCPATH=$(common-objpfx)localedata 188: bug-regex17-ENV = LOCPATH=$(common-objpfx)localedata 189: bug-regex18-ENV = LOCPATH=$(common-objpfx)localedata 190: bug-regex19-ENV = LOCPATH=$(common-objpfx)localedata 191: bug-regex20-ENV = LOCPATH=$(common-objpfx)localedata 192: bug-regex22-ENV = LOCPATH=$(common-objpfx)localedata 193: bug-regex23-ENV = LOCPATH=$(common-objpfx)localedata 194: bug-regex25-ENV = LOCPATH=$(common-objpfx)localedata 195: bug-regex26-ENV = LOCPATH=$(common-objpfx)localedata 196: tst-rxspencer-ARGS = --utf8 rxspencer/tests 197: tst-rxspencer-ENV = LOCPATH=$(common-objpfx)localedata 198: tst-pcre-ARGS = PCRE.tests 199: tst-boost-ARGS = BOOST.tests 200: bug-glob1-ARGS = "$(objpfx)" 201: tst-execvp3-ARGS = --test-dir=$(objpfx) 202: 203: testcases.h: TESTS TESTS2C.sed 204: sed -f TESTS2C.sed < $< > $@T 205: mv -f $@T $@ 206: ifeq ($(with-cvs),yes) 207: test ! -d CVS || cvs $(CVSOPTS) commit -mRegenerated $@ 208: endif 209: 210: ptestcases.h: PTESTS PTESTS2C.sed 211: sed -f PTESTS2C.sed < $< > $@T 212: mv -f $@T $@ 213: ifeq ($(with-cvs),yes) 214: test ! -d CVS || cvs $(CVSOPTS) commit -mRegenerated $@ 215: endif 216: 217: # Run a test on the header files we use. 218: # XXX Please note that for now we ignore the result of this test. 219: tests: $(objpfx)annexc.out 220: ifeq (no,$(cross-compiling)) 221: tests: $(objpfx)bug-regex2-mem $(objpfx)bug-regex14-mem \ 222: $(objpfx)bug-regex21-mem $(objpfx)tst-rxspencer-mem \ 223: $(objpfx)tst-pcre-mem $(objpfx)tst-boost-mem $(objpfx)tst-getconf.out \ 224: $(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem 225: xtests: $(objpfx)bug-ga2-mem 226: endif 227: 228: $(objpfx)annexc.out: $(objpfx)annexc 229: -$(dir $<)$(notdir $<) '$(CC)' \ 230: '$(patsubst %,-I../%,$(sorted-subdirs)) -I../include $(+sysdep-includes) $(sysincludes) -I..' > $@ 231: 232: annexc-CFLAGS = -O 233: $(objpfx)annexc: annexc.c 234: $(native-compile) 235: 236: bug-regex2-ENV = MALLOC_TRACE=$(objpfx)bug-regex2.mtrace 237: 238: $(objpfx)bug-regex2-mem: $(objpfx)bug-regex2.out 239: $(common-objpfx)malloc/mtrace $(objpfx)bug-regex2.mtrace > $@ 240: 241: bug-regex14-ENV = MALLOC_TRACE=$(objpfx)bug-regex14.mtrace 242: 243: $(objpfx)bug-regex14-mem: $(objpfx)bug-regex14.out 244: $(common-objpfx)malloc/mtrace $(objpfx)bug-regex14.mtrace > $@ 245: 246: bug-regex21-ENV = MALLOC_TRACE=$(objpfx)bug-regex21.mtrace 247: 248: $(objpfx)bug-regex21-mem: $(objpfx)bug-regex21.out 249: $(common-objpfx)malloc/mtrace $(objpfx)bug-regex21.mtrace > $@ 250: 251: tst-vfork3-ENV = MALLOC_TRACE=$(objpfx)tst-vfork3.mtrace 252: 253: $(objpfx)tst-vfork3-mem: $(objpfx)tst-vfork3.out 254: $(common-objpfx)malloc/mtrace $(objpfx)tst-vfork3.mtrace > $@ 255: 256: # tst-rxspencer.mtrace is generated only when run without --utf8 257: # option, since otherwise the file has almost 100M and takes very long 258: # time to process. 259: $(objpfx)tst-rxspencer-mem: $(objpfx)tst-rxspencer.out 260: MALLOC_TRACE=$(objpfx)tst-rxspencer.mtrace $(tst-rxspencer-ENV) \ 261: $(run-program-prefix) $(objpfx)tst-rxspencer rxspencer/tests \ 262: > /dev/null 263: $(common-objpfx)malloc/mtrace $(objpfx)tst-rxspencer.mtrace > $@ 264: 265: tst-pcre-ENV = MALLOC_TRACE=$(objpfx)tst-pcre.mtrace 266: $(objpfx)tst-pcre-mem: $(objpfx)tst-pcre.out 267: $(common-objpfx)malloc/mtrace $(objpfx)tst-pcre.mtrace > $@ 268: 269: tst-boost-ENV = MALLOC_TRACE=$(objpfx)tst-boost.mtrace 270: $(objpfx)tst-boost-mem: $(objpfx)tst-boost.out 271: $(common-objpfx)malloc/mtrace $(objpfx)tst-boost.mtrace > $@ 272: 273: $(objpfx)tst-getconf.out: tst-getconf.sh $(objpfx)getconf 274: $(SHELL) -e $< $(common-objpfx) $(elf-objpfx) $(rtld-installed-name) 275: 276: ifeq (yes,$(build-shared)) 277: $(objpfx)tst-regex: $(common-objpfx)rt/librt.so 278: $(objpfx)tst-regex2: $(common-objpfx)rt/librt.so 279: else 280: $(objpfx)tst-regex: $(common-objpfx)rt/librt.a 281: $(objpfx)tst-regex2: $(common-objpfx)rt/librt.a 282: endif 283: 284: $(objpfx)bug-ga2-mem: $(objpfx)bug-ga2.out 285: $(common-objpfx)malloc/mtrace $(objpfx)bug-ga2.mtrace > $@ 286: 287: bug-ga2-ENV = MALLOC_TRACE=$(objpfx)bug-ga2.mtrace 288: 289: bug-glob2-ENV = MALLOC_TRACE=$(objpfx)bug-glob2.mtrace 290: 291: $(objpfx)bug-glob2-mem: $(objpfx)bug-glob2.out 292: $(common-objpfx)malloc/mtrace $(objpfx)bug-glob2.mtrace > $@ 293: 294: $(inst_libexecdir)/getconf: $(inst_bindir)/getconf \ 295: $(objpfx)getconf.speclist FORCE 296: $(addprefix $(..)./scripts/mkinstalldirs ,\ 297: $(filter-out $(wildcard $@),$@)) 298: while read spec; do \ 299: ln -f $< $@/$$spec.new || $(INSTALL_PROGRAM) $< $@/$$spec.new; \ 300: mv -f $@/$$spec.new $@/$$spec; \ 301: done < $(objpfx)getconf.speclist 302: 303: $(objpfx)getconf.speclist: $(objpfx)getconf 304: ifeq (no,$(cross-compiling)) 305: LC_ALL=C GETCONF_DIR=/dev/null \ 306: $(run-program-prefix) $< _POSIX_V6_WIDTH_RESTRICTED_ENVS > $@.new 307: else 308: > $@.new 309: endif 310: mv -f $@.new $@