| xf.li | bdd93d5 | 2023-05-12 07:10:14 -0700 | [diff] [blame] | 1 | # Copyright (C) 1991-2016 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, see | 
 | 16 | # <http://www.gnu.org/licenses/>. | 
 | 17 |  | 
 | 18 | # | 
 | 19 | #	Makefile for stdlib routines | 
 | 20 | # | 
 | 21 | subdir	:= stdlib | 
 | 22 |  | 
 | 23 | include ../Makeconfig | 
 | 24 |  | 
 | 25 | headers	:= stdlib.h bits/stdlib.h bits/stdlib-ldbl.h bits/stdlib-float.h      \ | 
 | 26 | 	   monetary.h bits/monetary-ldbl.h				      \ | 
 | 27 | 	   inttypes.h stdint.h bits/wordsize.h				      \ | 
 | 28 | 	   errno.h sys/errno.h bits/errno.h				      \ | 
 | 29 | 	   ucontext.h sys/ucontext.h					      \ | 
 | 30 | 	   alloca.h fmtmsg.h						      \ | 
 | 31 | 	   bits/stdlib-bsearch.h | 
 | 32 |  | 
 | 33 | routines	:=							      \ | 
 | 34 | 	atof atoi atol atoll						      \ | 
 | 35 | 	abort								      \ | 
 | 36 | 	bsearch qsort msort						      \ | 
 | 37 | 	getenv putenv setenv secure-getenv				      \ | 
 | 38 | 	exit on_exit atexit cxa_atexit cxa_finalize old_atexit		      \ | 
 | 39 | 	quick_exit at_quick_exit cxa_at_quick_exit cxa_thread_atexit_impl     \ | 
 | 40 | 	abs labs llabs							      \ | 
 | 41 | 	div ldiv lldiv							      \ | 
 | 42 | 	mblen mbstowcs mbtowc wcstombs wctomb				      \ | 
 | 43 | 	random random_r rand rand_r					      \ | 
 | 44 | 	drand48 erand48 lrand48 nrand48 mrand48 jrand48			      \ | 
 | 45 | 	srand48 seed48 lcong48						      \ | 
 | 46 | 	drand48_r erand48_r lrand48_r nrand48_r mrand48_r jrand48_r	      \ | 
 | 47 | 	srand48_r seed48_r lcong48_r					      \ | 
 | 48 | 	drand48-iter							      \ | 
 | 49 | 	strtol strtoul strtoll strtoull					      \ | 
 | 50 | 	strtol_l strtoul_l strtoll_l strtoull_l				      \ | 
 | 51 | 	strtof strtod strtold						      \ | 
 | 52 | 	strtof_l strtod_l strtold_l					      \ | 
 | 53 | 	strtof_nan strtod_nan strtold_nan				      \ | 
 | 54 | 	system canonicalize						      \ | 
 | 55 | 	a64l l64a							      \ | 
 | 56 | 	rpmatch strfmon strfmon_l getsubopt xpg_basename fmtmsg		      \ | 
 | 57 | 	strtoimax strtoumax wcstoimax wcstoumax				      \ | 
 | 58 | 	getcontext setcontext makecontext swapcontext | 
 | 59 | aux =	grouping groupingwc tens_in_limb | 
 | 60 |  | 
 | 61 | # These routines will be omitted from the libc shared object. | 
 | 62 | # Instead the static object files will be included in a special archive | 
 | 63 | # linked against when the shared library will be used. | 
 | 64 | static-only-routines = atexit at_quick_exit | 
 | 65 |  | 
 | 66 | test-srcs	:= tst-fmtmsg | 
 | 67 | tests		:= tst-strtol tst-strtod testmb testrand testsort testdiv   \ | 
 | 68 | 		   test-canon test-canon2 tst-strtoll tst-environ	    \ | 
 | 69 | 		   tst-xpg-basename tst-random tst-random2 tst-bsearch	    \ | 
 | 70 | 		   tst-limits tst-rand48 bug-strtod tst-setcontext          \ | 
 | 71 | 		   tst-setcontext2 test-a64l tst-qsort tst-system testmb2   \ | 
 | 72 | 		   bug-strtod2 tst-atof1 tst-atof2 tst-strtod2 tst-strtod3  \ | 
 | 73 | 		   tst-rand48-2 tst-makecontext tst-strtod4 tst-strtod5     \ | 
 | 74 | 		   tst-qsort2 tst-makecontext2 tst-strtod6 tst-unsetenv1    \ | 
 | 75 | 		   tst-makecontext3 bug-getcontext bug-fmtmsg1		    \ | 
 | 76 | 		   tst-secure-getenv tst-strtod-overflow tst-strtod-round   \ | 
 | 77 | 		   tst-tininess tst-strtod-underflow tst-tls-atexit	    \ | 
 | 78 | 		   tst-setcontext3 tst-tls-atexit-nodelete		    \ | 
 | 79 | 		   tst-strtol-locale tst-strtod-nan-locale | 
 | 80 | tests-static	:= tst-secure-getenv | 
 | 81 |  | 
 | 82 | modules-names	= tst-tls-atexit-lib | 
 | 83 |  | 
 | 84 | ifeq ($(build-shared),yes) | 
 | 85 | tests		+= tst-putenv | 
 | 86 | endif | 
 | 87 |  | 
 | 88 | # Several mpn functions from GNU MP are used by the strtod function. | 
 | 89 | mpn-routines := inlines add_n addmul_1 cmp divmod_1 divrem udiv_qrnnd \ | 
 | 90 | 		lshift rshift mod_1 mul mul_1 mul_n sub_n submul_1 | 
 | 91 | mpn-headers = longlong.h gmp.h gmp-impl.h gmp-mparam.h asm-syntax.h | 
 | 92 |  | 
 | 93 | routines := $(strip $(routines) $(mpn-routines))	\ | 
 | 94 | 	    dbl2mpn ldbl2mpn				\ | 
 | 95 | 	    mpn2flt mpn2dbl mpn2ldbl | 
 | 96 | aux += fpioconst mp_clz_tab | 
 | 97 |  | 
 | 98 | tests-extras += tst-putenvmod | 
 | 99 | extra-test-objs += tst-putenvmod.os | 
 | 100 |  | 
 | 101 | generated += isomac isomac.out tst-putenvmod.so | 
 | 102 |  | 
 | 103 | CFLAGS-bsearch.c = $(uses-callbacks) | 
 | 104 | CFLAGS-msort.c = $(uses-callbacks) | 
 | 105 | CFLAGS-qsort.c = $(uses-callbacks) | 
 | 106 | CFLAGS-system.c = -fexceptions | 
 | 107 | CFLAGS-system.os = -fomit-frame-pointer | 
 | 108 | CFLAGS-fmtmsg.c = -fexceptions | 
 | 109 |  | 
 | 110 | CFLAGS-strfmon.c = $(libio-mtsafe) | 
 | 111 | CFLAGS-strfmon_l.c = $(libio-mtsafe) | 
 | 112 |  | 
 | 113 | CFLAGS-tst-bsearch.c = $(stack-align-test-flags) | 
 | 114 | CFLAGS-tst-qsort.c = $(stack-align-test-flags) | 
 | 115 | CFLAGS-tst-makecontext.c += -funwind-tables | 
 | 116 | CFLAGS-tst-makecontext2.c = $(stack-align-test-flags) | 
 | 117 |  | 
 | 118 | # Run a test on the header files we use. | 
 | 119 | tests-special += $(objpfx)isomac.out | 
 | 120 |  | 
 | 121 | ifeq ($(run-built-tests),yes) | 
 | 122 | tests-special += $(objpfx)tst-fmtmsg.out | 
 | 123 | endif | 
 | 124 |  | 
 | 125 | include ../Rules | 
 | 126 |  | 
 | 127 | ifeq ($(run-built-tests),yes) | 
 | 128 | LOCALES := cs_CZ.UTF-8 de_DE.UTF-8 en_US.ISO-8859-1 tr_TR.UTF-8 \ | 
 | 129 | 	   tr_TR.ISO-8859-9 | 
 | 130 | include ../gen-locales.mk | 
 | 131 |  | 
 | 132 | $(objpfx)bug-strtod2.out: $(gen-locales) | 
 | 133 | $(objpfx)testmb2.out: $(gen-locales) | 
 | 134 | $(objpfx)tst-strtod.out: $(gen-locales) | 
 | 135 | $(objpfx)tst-strtod3.out: $(gen-locales) | 
 | 136 | $(objpfx)tst-strtod4.out: $(gen-locales) | 
 | 137 | $(objpfx)tst-strtod5.out: $(gen-locales) | 
 | 138 | $(objpfx)tst-strtol-locale.out: $(gen-locales) | 
 | 139 | $(objpfx)tst-strtod-nan-locale.out: $(gen-locales) | 
 | 140 | endif | 
 | 141 |  | 
 | 142 | # Testdir has to be named stdlib and needs to be writable | 
 | 143 | test-canon-ARGS = --test-dir=${common-objpfx}stdlib | 
 | 144 |  | 
 | 145 | bug-fmtmsg1-ENV = SEV_LEVEL=foo,11,newsev | 
 | 146 |  | 
 | 147 | $(objpfx)isomac.out: $(objpfx)isomac | 
 | 148 | 	$(dir $<)$(notdir $<) '$(CC)'  \ | 
 | 149 | 	'-I../include $(+sysdep-includes) $(sysincludes) -I..' > $<.out; \ | 
 | 150 | 	$(evaluate-test) | 
 | 151 |  | 
 | 152 | isomac-CFLAGS = -O | 
 | 153 | $(objpfx)isomac: isomac.c | 
 | 154 | 	$(native-compile) | 
 | 155 |  | 
 | 156 | $(objpfx)tst-fmtmsg.out: tst-fmtmsg.sh $(objpfx)tst-fmtmsg | 
 | 157 | 	$(SHELL) $< $(common-objpfx) '$(test-program-prefix-before-env)' \ | 
 | 158 | 		 '$(run-program-env)' '$(test-program-prefix-after-env)' \ | 
 | 159 | 		 $(common-objpfx)stdlib/; \ | 
 | 160 | 	$(evaluate-test) | 
 | 161 |  | 
 | 162 | $(objpfx)tst-putenv: $(objpfx)tst-putenvmod.so | 
 | 163 | LDFLAGS-tst-putenv = $(no-as-needed) | 
 | 164 |  | 
 | 165 | $(objpfx)tst-putenvmod.so: $(objpfx)tst-putenvmod.os $(link-libc-deps) | 
 | 166 | 	$(build-module) | 
 | 167 | libof-tst-putenvmod = extramodules | 
 | 168 |  | 
 | 169 | $(objpfx)bug-getcontext: $(libm) | 
 | 170 | $(objpfx)tst-strtod-round: $(libm) | 
 | 171 | $(objpfx)tst-tininess: $(libm) | 
 | 172 | $(objpfx)tst-strtod-underflow: $(libm) | 
 | 173 | $(objpfx)tst-strtod6: $(libm) | 
 | 174 | $(objpfx)tst-strtod-nan-locale: $(libm) | 
 | 175 |  | 
 | 176 | tst-tls-atexit-lib.so-no-z-defs = yes | 
 | 177 |  | 
 | 178 | $(objpfx)tst-tls-atexit: $(shared-thread-library) $(libdl) | 
 | 179 | $(objpfx)tst-tls-atexit.out: $(objpfx)tst-tls-atexit-lib.so | 
 | 180 |  | 
 | 181 | $(objpfx)tst-tls-atexit-nodelete: $(shared-thread-library) $(libdl) | 
 | 182 | $(objpfx)tst-tls-atexit-nodelete.out: $(objpfx)tst-tls-atexit-lib.so | 
 | 183 |  | 
 | 184 | $(objpfx)tst-setcontext3.out: tst-setcontext3.sh $(objpfx)tst-setcontext3 | 
 | 185 | 	$(SHELL) $< $(common-objpfx) '$(test-program-prefix-before-env)' \ | 
 | 186 | 		 '$(run-program-env)' '$(test-program-prefix-after-env)' \ | 
 | 187 | 		 $(common-objpfx)stdlib/; \ | 
 | 188 | 	$(evaluate-test) | 
 | 189 |  | 
 | 190 | $(objpfx)tst-makecontext: $(libdl) |