support: Reformat Makefile.
[glibc.git] / posix / Makefile
blobe19b74cd67788b9a258ccfdf23d9e009b1be2ec6
1 # Copyright (C) 1991-2023 Free Software Foundation, Inc.
2 # This file is part of the GNU C Library.
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.
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.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with the GNU C Library; if not, see
16 # <https://www.gnu.org/licenses/>.
19 # Sub-makefile for POSIX portion of the library.
21 subdir := posix
23 include ../Makeconfig
25 headers := \
26 bits/confname.h \
27 bits/cpu-set.h \
28 bits/environments.h \
29 bits/getopt_core.h \
30 bits/getopt_ext.h \
31 bits/getopt_posix.h \
32 bits/local_lim.h \
33 bits/mman_ext.h \
34 bits/posix1_lim.h \
35 bits/posix2_lim.h \
36 bits/posix_opt.h \
37 bits/pthreadtypes-arch.h \
38 bits/pthreadtypes.h \
39 bits/sched.h \
40 bits/thread-shared-types.h \
41 bits/types.h \
42 bits/types/idtype_t.h \
43 bits/types/struct_sched_param.h \
44 bits/typesizes.h \
45 bits/unistd.h \
46 bits/unistd_ext.h \
47 bits/utsname.h \
48 bits/waitflags.h \
49 bits/waitstatus.h \
50 cpio.h \
51 fnmatch.h \
52 getopt.h \
53 glob.h \
54 re_comp.h \
55 regex.h \
56 sched.h \
57 spawn.h \
58 sys/times.h \
59 sys/types.h \
60 sys/unistd.h \
61 sys/utsname.h \
62 sys/wait.h \
63 tar.h \
64 unistd.h \
65 wait.h \
66 wordexp.h \
67 # headers
69 routines := \
70 _Fork \
71 _exit \
72 alarm \
73 bsd-getpgrp \
74 confstr \
75 execl \
76 execle \
77 execlp \
78 execv \
79 execve \
80 execveat \
81 execvp \
82 execvpe \
83 fexecve \
84 fnmatch \
85 fork \
86 fpathconf \
87 gai_strerror \
88 get_child_max \
89 getaddrinfo \
90 getegid \
91 geteuid \
92 getgid \
93 getgroups \
94 getopt \
95 getopt1 \
96 getpgid \
97 getpgrp \
98 getpid \
99 getppid \
100 getresgid \
101 getresuid \
102 getsid \
103 getuid \
104 glob \
105 glob-lstat-compat \
106 glob64 \
107 glob64-lstat-compat \
108 glob64-time64 \
109 glob_pattern_p \
110 globfree \
111 globfree64 \
112 globfree64-time64 \
113 group_member \
114 nanosleep \
115 pathconf \
116 pause \
117 posix_madvise \
118 pread \
119 pread64 \
120 pwrite \
121 pwrite64 \
122 regex \
123 register-atfork \
124 sched_cpualloc \
125 sched_cpucount \
126 sched_cpufree \
127 sched_getaffinity \
128 sched_getp \
129 sched_gets \
130 sched_primax \
131 sched_primin \
132 sched_rr_gi \
133 sched_setaffinity \
134 sched_setp \
135 sched_sets \
136 sched_yield \
137 setgid \
138 setpgid \
139 setpgrp \
140 setresgid \
141 setresuid \
142 setsid \
143 setuid \
144 shm-directory \
145 sleep \
146 spawn \
147 spawn_faction_addchdir \
148 spawn_faction_addclose \
149 spawn_faction_addclosefrom \
150 spawn_faction_adddup2 \
151 spawn_faction_addfchdir \
152 spawn_faction_addopen \
153 spawn_faction_addtcsetpgrp_np \
154 spawn_faction_destroy \
155 spawn_faction_init \
156 spawn_valid_fd \
157 spawnattr_destroy \
158 spawnattr_getdefault \
159 spawnattr_getflags \
160 spawnattr_getpgroup \
161 spawnattr_getschedparam \
162 spawnattr_getschedpolicy \
163 spawnattr_getsigmask \
164 spawnattr_init \
165 spawnattr_setdefault \
166 spawnattr_setflags \
167 spawnattr_setpgroup \
168 spawnattr_setschedparam \
169 spawnattr_setschedpolicy \
170 spawnattr_setsigmask \
171 spawni \
172 spawnp \
173 streams-compat \
174 sysconf \
175 times \
176 uname \
177 vfork \
178 wait \
179 wait3 \
180 wait4 \
181 waitid \
182 waitpid \
183 wordexp \
184 # routines
186 aux := \
187 environ \
188 init-posix \
189 # aux
191 tests := \
192 bug-ga1 \
193 bug-getopt1 \
194 bug-getopt2 \
195 bug-getopt3 \
196 bug-getopt4 \
197 bug-getopt5 \
198 bug-glob2 \
199 bug-glob3 \
200 bug-regex1 \
201 bug-regex2 \
202 bug-regex3 \
203 bug-regex4 \
204 bug-regex6 \
205 bug-regex7 \
206 bug-regex8 \
207 bug-regex9 \
208 bug-regex10 \
209 bug-regex11 \
210 bug-regex12 \
211 bug-regex13 \
212 bug-regex14 \
213 bug-regex15 \
214 bug-regex16 \
215 bug-regex17 \
216 bug-regex18 \
217 bug-regex19 \
218 bug-regex21 \
219 bug-regex22 \
220 bug-regex23 \
221 bug-regex24 \
222 bug-regex25 \
223 bug-regex26 \
224 bug-regex27 \
225 bug-regex28 \
226 bug-regex29 \
227 bug-regex30 \
228 bug-regex31 \
229 bug-regex32 \
230 bug-regex34 \
231 bug-regex35 \
232 bug-regex36 \
233 bug-regex37 \
234 bug-regex38 \
235 regexbug1 \
236 runptests \
237 runtests \
238 test-errno \
239 test-ssize-max \
240 test-vfork \
241 testfnm \
242 transbug \
243 tst-boost \
244 tst-chmod \
245 tst-cpucount \
246 tst-cpuset \
247 tst-dir \
248 tst-execl1 \
249 tst-execl2 \
250 tst-execle1 \
251 tst-execle2 \
252 tst-execlp1 \
253 tst-execlp2 \
254 tst-execv1 \
255 tst-execv2 \
256 tst-execve1 \
257 tst-execve2 \
258 tst-execveat \
259 tst-execvp1 \
260 tst-execvp2 \
261 tst-execvp3 \
262 tst-execvp4 \
263 tst-execvpe1 \
264 tst-execvpe2 \
265 tst-execvpe3 \
266 tst-execvpe4 \
267 tst-execvpe5 \
268 tst-execvpe6 \
269 tst-fexecve \
270 tst-fnmatch \
271 tst-fnmatch2 \
272 tst-fnmatch3 \
273 tst-fnmatch4 \
274 tst-fnmatch5 \
275 tst-fnmatch6 \
276 tst-fnmatch7 \
277 tst-fork \
278 tst-getaddrinfo \
279 tst-getaddrinfo2 \
280 tst-getaddrinfo3 \
281 tst-getopt_long1 \
282 tst-glob-tilde \
283 tst-glob_symlinks \
284 tst-gnuglob \
285 tst-gnuglob64 \
286 tst-mmap \
287 tst-mmap-offset \
288 tst-nanosleep \
289 tst-nice \
290 tst-pathconf \
291 tst-pcre \
292 tst-posix_fadvise \
293 tst-posix_fadvise64 \
294 tst-posix_spawn-fd \
295 tst-posix_spawn-setsid \
296 tst-preadwrite \
297 tst-preadwrite64 \
298 tst-regcomp-truncated \
299 tst-regex \
300 tst-regex2 \
301 tst-regexloc \
302 tst-rxspencer \
303 tst-rxspencer-no-utf8 \
304 tst-sched_getaffinity \
305 tst-spawn-chdir \
306 tst-spawn4 \
307 tst-spawn5 \
308 tst-spawn6 \
309 tst-spawn7 \
310 tst-sysconf \
311 tst-sysconf-empty-chroot \
312 tst-truncate \
313 tst-truncate64 \
314 tst-vfork1 \
315 tst-vfork2 \
316 tst-wait3 \
317 tst-wait4 \
318 tst-waitid \
319 tst-wordexp-nocmd \
320 tstgetopt \
321 # tests
323 # Test for the glob symbol version that was replaced in glibc 2.27.
324 ifeq ($(have-GLIBC_2.26)$(build-shared),yesyes)
325 tests += \
326 tst-glob_lstat_compat
327 # tests
328 endif
330 # Test for the posix_spawn, posix_spawnp symbol versions replaced in
331 # glibc 2.15.
332 ifeq ($(have-GLIBC_2.14)$(build-shared),yesyes)
333 tests += \
334 tst-spawn4-compat \
335 # tests
336 endif
338 tests-internal := \
339 bug-regex5 \
340 bug-regex20 \
341 bug-regex33 \
342 tst-rfc3484 \
343 tst-rfc3484-2 \
344 tst-rfc3484-3 \
345 # tests-internal
347 tests-container := \
348 bug-ga2 \
349 tst-vfork3 \
350 # tests-container
352 tests-time64 := \
353 tst-gnuglob64-time64 \
354 tst-wait3-time64 \
355 tst-wait4-time64 \
356 # tests-time64
358 xtests := \
359 tst-getaddrinfo4 \
360 tst-getaddrinfo5 \
361 tst-sched_rr_get_interval \
362 # xtests
364 xtests-time64 := \
365 tst-sched_rr_get_interval-time64 \
366 # xtests-time64
368 ifeq (yes,$(build-shared))
369 test-srcs := \
370 globtest
371 # tests-src
372 tests += \
373 tst-exec \
374 tst-spawn \
375 tst-spawn2 \
376 tst-spawn3 \
377 wordexp-test \
378 # tests
379 endif
381 ifeq (yesyes,$(build-shared)$(have-thread-library))
382 tests += \
383 tst-_Fork \
384 tst-getopt-cancel \
385 # tests
386 endif
388 tests-static = \
389 tst-exec-static \
390 tst-spawn-static \
391 # tests-static
393 tests += \
394 $(tests-static)
395 # tests
397 others := \
398 getconf \
399 # others
401 install-bin := \
402 getconf \
403 # getconf
405 install-others-programs := \
406 $(inst_libexecdir)/getconf \
407 # install-others-programs
409 before-compile += \
410 $(objpfx)posix-conf-vars-def.h \
411 # before-compile
413 # So they get cleaned up.
414 generated += \
415 $(addprefix wordexp-test-result, 1 2 3 4 5 6 7 8 9 10) \
416 annexc \
417 annexc.out \
418 bug-ga2-mem.out \
419 bug-ga2.mtrace \
420 bug-glob2-mem.out \
421 bug-glob2.mtrace \
422 bug-regex14-mem.out \
423 bug-regex14.mtrace \
424 bug-regex2-mem.out \
425 bug-regex2.mtrace \
426 bug-regex21-mem.out \
427 bug-regex21.mtrace \
428 bug-regex31-mem.out \
429 bug-regex31.mtrace \
430 bug-regex36.mtrace \
431 getconf.speclist \
432 ptestcases.h \
433 testcases.h \
434 tst-boost-mem.out \
435 tst-boost.mtrace \
436 tst-fnmatch-mem.out \
437 tst-fnmatch.mtrace \
438 tst-getconf.out \
439 tst-pcre-mem.out \
440 tst-pcre.mtrace \
441 tst-rxspencer-no-utf8-mem.out \
442 tst-rxspencer-no-utf8.mtrace \
443 tst-vfork3-mem.out \
444 tst-vfork3.mtrace \
445 wordexp-tst.out \
446 # generated
448 ifeq ($(run-built-tests),yes)
449 ifeq (yes,$(build-shared))
450 tests-special += \
451 $(objpfx)globtest.out \
452 $(objpfx)wordexp-tst.out \
453 # tests-special
454 endif
455 endif
457 # Run a test on the header files we use.
458 # XXX Please note that for now we ignore the result of this test.
459 tests-special += $(objpfx)annexc.out
460 ifeq ($(run-built-tests),yes)
461 tests-special += \
462 $(objpfx)bug-ga2-mem.out \
463 $(objpfx)bug-glob2-mem.out \
464 $(objpfx)bug-regex14-mem.out \
465 $(objpfx)bug-regex2-mem.out \
466 $(objpfx)bug-regex21-mem.out \
467 $(objpfx)bug-regex31-mem.out \
468 $(objpfx)bug-regex36-mem.out \
469 $(objpfx)tst-boost-mem.out \
470 $(objpfx)tst-fnmatch-mem.out \
471 $(objpfx)tst-getconf.out \
472 $(objpfx)tst-glob-tilde-mem.out \
473 $(objpfx)tst-pcre-mem.out \
474 $(objpfx)tst-rxspencer-no-utf8-mem.out \
475 $(objpfx)tst-vfork3-mem.out \
476 # tests-special
477 endif
479 include ../Rules
481 ifeq ($(run-built-tests),yes)
482 # globtest and wordexp-test currently only works with shared libraries
483 ifeq (yes,$(build-shared))
484 $(objpfx)globtest.out: globtest.sh $(objpfx)globtest
485 $(SHELL) $< $(common-objpfx) '$(test-via-rtld-prefix)' \
486 '$(test-program-prefix)' '$(test-wrapper-env)'; \
487 $(evaluate-test)
488 $(objpfx)wordexp-tst.out: wordexp-tst.sh $(objpfx)wordexp-test
489 $(SHELL) $< $(common-objpfx) '$(test-program-prefix-before-env)' \
490 '$(run-program-env)' '$(test-program-prefix-after-env)'; \
491 $(evaluate-test)
492 endif
494 LOCALES := \
495 C.UTF-8 \
496 cs_CZ.ISO-8859-2 \
497 cs_CZ.UTF-8 \
498 da_DK.ISO-8859-1 \
499 de_DE.ISO-8859-1 \
500 de_DE.UTF-8 \
501 en_US.UTF-8 \
502 es_US.ISO-8859-1 \
503 es_US.UTF-8 \
504 ja_JP.EUC-JP \
505 tr_TR.UTF-8 \
506 # LOCALES
507 include ../gen-locales.mk
509 $(objpfx)bug-regex1.out: $(gen-locales)
510 $(objpfx)bug-regex4.out: $(gen-locales)
511 $(objpfx)bug-regex5.out: $(gen-locales)
512 $(objpfx)bug-regex6.out: $(gen-locales)
513 $(objpfx)bug-regex17.out: $(gen-locales)
514 $(objpfx)bug-regex18.out: $(gen-locales)
515 $(objpfx)bug-regex19.out: $(gen-locales)
516 $(objpfx)bug-regex20.out: $(gen-locales)
517 $(objpfx)bug-regex22.out: $(gen-locales)
518 $(objpfx)bug-regex23.out: $(gen-locales)
519 $(objpfx)bug-regex25.out: $(gen-locales)
520 $(objpfx)bug-regex26.out: $(gen-locales)
521 $(objpfx)bug-regex30.out: $(gen-locales)
522 $(objpfx)bug-regex32.out: $(gen-locales)
523 $(objpfx)bug-regex33.out: $(gen-locales)
524 $(objpfx)bug-regex34.out: $(gen-locales)
525 $(objpfx)bug-regex35.out: $(gen-locales)
526 $(objpfx)tst-fnmatch.out: $(gen-locales)
527 $(objpfx)tst-fnmatch4.out: $(gen-locales)
528 $(objpfx)tst-fnmatch5.out: $(gen-locales)
529 $(objpfx)tst-fnmatch6.out: $(gen-locales)
530 $(objpfx)tst-regex.out: $(gen-locales)
531 $(objpfx)tst-regex2.out: $(gen-locales)
532 $(objpfx)tst-regexloc.out: $(gen-locales)
533 $(objpfx)tst-rxspencer.out: $(gen-locales)
534 $(objpfx)tst-rxspencer-no-utf8.out: $(gen-locales)
535 $(objpfx)tst-regcomp-truncated.out: $(gen-locales)
536 endif
538 # If we will use the generic uname implementation, we must figure out what
539 # it will say by examining the system, and write the results in config-name.h.
540 uname.c: $(objpfx)config-name.h
541 $(objpfx)config-name.h: $(..)scripts/config-uname.sh $(common-objpfx)config.make
542 $(make-target-directory)
543 $< '$(config-os)' '$(config-release)' \
544 '$(config-machine)-$(config-vendor)' > $@.new
545 mv -f $@.new $@
547 CFLAGS-getaddrinfo.c += -DRESOLVER -fexceptions
548 CFLAGS-pause.c += -fexceptions -fasynchronous-unwind-tables
549 CFLAGS-pread.c += -fexceptions -fasynchronous-unwind-tables
550 CFLAGS-pread64.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-ignored-attributes)
551 CFLAGS-pwrite.c += -fexceptions -fasynchronous-unwind-tables
552 CFLAGS-pwrite64.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-ignored-attributes)
553 CFLAGS-sleep.c += -fexceptions
554 CFLAGS-wait.c += -fexceptions -fasynchronous-unwind-tables
555 CFLAGS-waitid.c += -fexceptions -fasynchronous-unwind-tables
556 CFLAGS-waitpid.c += -fexceptions -fasynchronous-unwind-tables
557 CFLAGS-wait4.c += -fexceptions -fasynchronous-unwind-tables
558 CFLAGS-getopt.c += -fexceptions
559 CFLAGS-wordexp.c += -fexceptions
560 CFLAGS-wordexp.os = -fomit-frame-pointer
561 CFLAGS-sysconf.c += -fexceptions -DGETCONF_DIR='"$(libexecdir)/getconf"'
562 CFLAGS-pathconf.c += -fexceptions
563 CFLAGS-fpathconf.c += -fexceptions
564 CFLAGS-spawn.c += -fexceptions
565 CFLAGS-spawn.os = -fomit-frame-pointer
566 CFLAGS-spawnp.c += -fexceptions
567 CFLAGS-spawnp.os = -fomit-frame-pointer
568 CFLAGS-spawni.c += -fexceptions
569 CFLAGS-spawni.os = -fomit-frame-pointer
570 CFLAGS-glob.c += $(uses-callbacks) -fexceptions
571 CFLAGS-glob64.c += $(uses-callbacks) -fexceptions
572 CFLAGS-getconf.c += -DGETCONF_DIR='"$(libexecdir)/getconf"'
573 CFLAGS-execve.os = -fomit-frame-pointer
574 CFLAGS-fexecve.os = -fomit-frame-pointer
575 CFLAGS-execv.os = -fomit-frame-pointer
576 CFLAGS-execle.os = -fomit-frame-pointer
577 CFLAGS-execl.os = -fomit-frame-pointer
578 CFLAGS-execvp.os = -fomit-frame-pointer
579 CFLAGS-execlp.os = -fomit-frame-pointer
580 CFLAGS-nanosleep.c += -fexceptions -fasynchronous-unwind-tables
581 CFLAGS-fork.c = $(libio-mtsafe) $(config-cflags-wno-ignored-attributes)
583 tstgetopt-ARGS = -a -b -cfoobar --required foobar --optional=bazbug \
584 --none random --col --color --colour
586 tst-exec-ARGS = -- $(host-test-program-cmd)
587 tst-exec-static-ARGS = $(tst-exec-ARGS)
588 tst-execvpe5-ARGS = -- $(host-test-program-cmd)
589 tst-spawn-ARGS = -- $(host-test-program-cmd)
590 tst-spawn-static-ARGS = $(tst-spawn-ARGS)
591 tst-spawn5-ARGS = -- $(host-test-program-cmd)
592 tst-spawn6-ARGS = -- $(host-test-program-cmd)
593 tst-spawn7-ARGS = -- $(host-test-program-cmd)
594 tst-dir-ARGS = `pwd` `cd $(common-objdir)/$(subdir); pwd` `cd $(common-objdir); pwd` $(objpfx)tst-dir
595 tst-chmod-ARGS = $(objdir)
596 tst-vfork3-ARGS = --test-dir=$(objpfx)
598 tst-rxspencer-ARGS = --utf8 rxspencer/tests
599 tst-rxspencer-no-utf8-ARGS = rxspencer/tests
600 tst-pcre-ARGS = PCRE.tests
601 tst-boost-ARGS = BOOST.tests
602 bug-glob1-ARGS = "$(objpfx)"
603 tst-execvp3-ARGS = --test-dir=$(objpfx)
604 CFLAGS-tst-spawn3.c += -DOBJPFX=\"$(objpfx)\"
606 $(objpfx)testcases.h: TESTS TESTS2C.sed
607 LC_ALL=C sed -f TESTS2C.sed < $< > $@T
608 mv $@T $@
609 $(objpfx)runtests.o: $(objpfx)testcases.h
611 $(objpfx)ptestcases.h: PTESTS PTESTS2C.sed
612 LC_ALL=C sed -f PTESTS2C.sed < $< > $@T
613 mv $@T $@
614 $(objpfx)runptests.o: $(objpfx)ptestcases.h
616 $(objpfx)tst-getopt-cancel: $(shared-thread-library)
617 $(objpfx)tst-_Fork: $(shared-thread-library)
619 test-xfail-annexc = yes
620 $(objpfx)annexc.out: $(objpfx)annexc
621 $(dir $<)$(notdir $<) '$(CC)' \
622 '$(patsubst %,-I../%,$(sorted-subdirs)) -I../include $(+sysdep-includes) $(sysincludes) -I..' > $@; \
623 $(evaluate-test)
625 annexc-CFLAGS = -O
626 $(objpfx)annexc: annexc.c
627 $(native-compile)
629 tst-fnmatch-ENV += MALLOC_TRACE=$(objpfx)tst-fnmatch.mtrace \
630 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
632 $(objpfx)tst-fnmatch-mem.out: $(objpfx)tst-fnmatch.out
633 $(common-objpfx)malloc/mtrace $(objpfx)tst-fnmatch.mtrace > $@; \
634 $(evaluate-test)
636 bug-regex2-ENV = MALLOC_TRACE=$(objpfx)bug-regex2.mtrace \
637 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
639 $(objpfx)bug-regex2-mem.out: $(objpfx)bug-regex2.out
640 $(common-objpfx)malloc/mtrace $(objpfx)bug-regex2.mtrace > $@; \
641 $(evaluate-test)
643 bug-regex14-ENV = MALLOC_TRACE=$(objpfx)bug-regex14.mtrace \
644 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
646 $(objpfx)bug-regex14-mem.out: $(objpfx)bug-regex14.out
647 $(common-objpfx)malloc/mtrace $(objpfx)bug-regex14.mtrace > $@; \
648 $(evaluate-test)
650 bug-regex21-ENV = MALLOC_TRACE=$(objpfx)bug-regex21.mtrace \
651 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
653 $(objpfx)bug-regex21-mem.out: $(objpfx)bug-regex21.out
654 $(common-objpfx)malloc/mtrace $(objpfx)bug-regex21.mtrace > $@; \
655 $(evaluate-test)
657 bug-regex31-ENV = MALLOC_TRACE=$(objpfx)bug-regex31.mtrace \
658 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
660 $(objpfx)bug-regex31-mem.out: $(objpfx)bug-regex31.out
661 $(common-objpfx)malloc/mtrace $(objpfx)bug-regex31.mtrace > $@; \
662 $(evaluate-test)
664 bug-regex36-ENV = MALLOC_TRACE=$(objpfx)bug-regex36.mtrace \
665 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
667 $(objpfx)bug-regex36-mem.out: $(objpfx)bug-regex36.out
668 $(common-objpfx)malloc/mtrace $(objpfx)bug-regex36.mtrace > $@; \
669 $(evaluate-test)
671 tst-vfork3-ENV = MALLOC_TRACE=$(objpfx)tst-vfork3.mtrace \
672 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
674 $(objpfx)tst-vfork3-mem.out: $(objpfx)tst-vfork3.out
675 { test -r $(objpfx)tst-vfork3.mtrace \
676 || ( echo "tst-vfork3.mtrace does not exist"; exit 77; ) \
677 && $(common-objpfx)malloc/mtrace $(objpfx)tst-vfork3.mtrace; } > $@; \
678 $(evaluate-test)
680 # tst-rxspencer.mtrace is not generated, only
681 # tst-rxspencer-no-utf8.mtrace, since otherwise the file has almost
682 # 100M and takes very long time to process.
683 tst-rxspencer-no-utf8-ENV += \
684 MALLOC_TRACE=$(objpfx)tst-rxspencer-no-utf8.mtrace \
685 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
686 $(objpfx)tst-rxspencer-no-utf8-mem.out: $(objpfx)tst-rxspencer-no-utf8.out
687 $(common-objpfx)malloc/mtrace $(objpfx)tst-rxspencer-no-utf8.mtrace \
688 > $@; \
689 $(evaluate-test)
691 tst-pcre-ENV = MALLOC_TRACE=$(objpfx)tst-pcre.mtrace \
692 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
693 $(objpfx)tst-pcre-mem.out: $(objpfx)tst-pcre.out
694 $(common-objpfx)malloc/mtrace $(objpfx)tst-pcre.mtrace > $@; \
695 $(evaluate-test)
697 tst-boost-ENV = MALLOC_TRACE=$(objpfx)tst-boost.mtrace \
698 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
699 $(objpfx)tst-boost-mem.out: $(objpfx)tst-boost.out
700 $(common-objpfx)malloc/mtrace $(objpfx)tst-boost.mtrace > $@; \
701 $(evaluate-test)
703 $(objpfx)tst-getconf.out: tst-getconf.sh $(objpfx)getconf
704 $(SHELL) $< $(common-objpfx) '$(built-program-cmd)'; \
705 $(evaluate-test)
707 $(objpfx)bug-ga2-mem.out: $(objpfx)bug-ga2.out
708 { test -r $(objpfx)bug-ga2.mtrace \
709 || ( echo "bug-ga2.mtrace does not exist"; exit 77; ) \
710 && $(common-objpfx)malloc/mtrace $(objpfx)bug-ga2.mtrace; } > $@; \
711 $(evaluate-test)
713 bug-ga2-ENV = MALLOC_TRACE=$(objpfx)bug-ga2.mtrace \
714 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
716 bug-glob2-ENV = MALLOC_TRACE=$(objpfx)bug-glob2.mtrace \
717 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
719 $(objpfx)bug-glob2-mem.out: $(objpfx)bug-glob2.out
720 $(common-objpfx)malloc/mtrace $(objpfx)bug-glob2.mtrace > $@; \
721 $(evaluate-test)
723 tst-glob-tilde-ENV = MALLOC_TRACE=$(objpfx)tst-glob-tilde.mtrace \
724 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
726 $(objpfx)tst-glob-tilde-mem.out: $(objpfx)tst-glob-tilde.out
727 $(common-objpfx)malloc/mtrace $(objpfx)tst-glob-tilde.mtrace > $@; \
728 $(evaluate-test)
730 $(inst_libexecdir)/getconf: $(inst_bindir)/getconf \
731 $(objpfx)getconf.speclist FORCE
732 $(addprefix $(..)./scripts/mkinstalldirs ,\
733 $(filter-out $(wildcard $@),$@))
734 while read spec; do \
735 ln -f $< $@/$$spec.new || $(INSTALL_PROGRAM) $< $@/$$spec.new; \
736 mv -f $@/$$spec.new $@/$$spec; \
737 done < $(objpfx)getconf.speclist
739 $(objpfx)getconf.speclist: getconf-speclist.c posix-envs.def
740 $(compile.c) -E -o - \
741 | sed -n -e '/@@@PRESENT_/s/@@@PRESENT_//p' > $@.new
742 mv -f $@.new $@
744 # This file is only actually needed at install time. But forcing it to
745 # be built both makes it available for eyeball inspection and avoids the
746 # surprise of things that look like compilation being done by 'make install'.
747 others: $(objpfx)getconf.speclist
749 $(objpfx)posix-conf-vars-def.h: $(..)scripts/gen-posix-conf-vars.awk \
750 posix-conf-vars.list Makefile
751 $(make-target-directory)
752 $(AWK) -f $(filter-out Makefile, $^) > $@.tmp
753 mv -f $@.tmp $@