]>
Commit | Line | Data |
---|---|---|
df152cc8 | 1 | # Copyright (C) 1991-1999, 2000, 2001 Free Software Foundation, Inc. |
28f540f4 RM |
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 Library General Public License as | |
6 | # published by the Free Software Foundation; either version 2 of the | |
7 | # 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 | # Library General Public License for more details. | |
13 | ||
14 | # You should have received a copy of the GNU Library General Public | |
f65fd747 UD |
15 | # License along with the GNU C Library; see the file COPYING.LIB. If not, |
16 | # write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
17 | # Boston, MA 02111-1307, USA. | |
28f540f4 RM |
18 | |
19 | # | |
20 | # Makefile for stdlib routines | |
21 | # | |
22 | subdir := stdlib | |
23 | ||
b9b49b44 | 24 | headers := stdlib.h alloca.h monetary.h fmtmsg.h ucontext.h sys/ucontext.h \ |
417bafec | 25 | inttypes.h stdint.h bits/wordsize.h bits/wchar.h |
28f540f4 RM |
26 | |
27 | routines := \ | |
7cc27f44 | 28 | atof atoi atol atoll \ |
28f540f4 RM |
29 | abort \ |
30 | bsearch qsort msort \ | |
f65fd747 | 31 | getenv putenv setenv secure-getenv \ |
5ef50d00 | 32 | exit on_exit atexit cxa_atexit cxa_finalize \ |
59dd8641 RM |
33 | abs labs llabs \ |
34 | div ldiv lldiv \ | |
28f540f4 | 35 | mblen mbstowcs mbtowc wcstombs wctomb \ |
a18f587d | 36 | random random_r rand rand_r \ |
60478656 RM |
37 | drand48 erand48 lrand48 nrand48 mrand48 jrand48 \ |
38 | srand48 seed48 lcong48 \ | |
39 | drand48_r erand48_r lrand48_r nrand48_r mrand48_r jrand48_r \ | |
40 | srand48_r seed48_r lcong48_r \ | |
41 | drand48-iter \ | |
2f6d1f1b | 42 | strtol strtoul strtoll strtoull \ |
0501d603 | 43 | strtol_l strtoul_l strtoll_l strtoull_l \ |
28f540f4 | 44 | strtof strtod strtold \ |
0501d603 | 45 | strtof_l strtod_l strtold_l \ |
fa0bc87c | 46 | system canonicalize \ |
857fa1b8 | 47 | a64l l64a \ |
b9b49b44 | 48 | rpmatch strfmon strfmon_l getsubopt xpg_basename fmtmsg \ |
af69217f UD |
49 | strtoimax strtoumax wcstoimax wcstoumax \ |
50 | getcontext setcontext makecontext swapcontext | |
28f540f4 | 51 | |
9f6c1fc4 UD |
52 | distribute := exit.h grouping.h abort-instr.h isomac.c tst-fmtmsg.sh |
53 | test-srcs := tst-fmtmsg | |
394f4f17 | 54 | tests := tst-strtol tst-strtod testmb testrand testsort testdiv \ |
ef5d6645 | 55 | test-canon test-canon2 tst-strtoll tst-environ \ |
df152cc8 UD |
56 | tst-xpg-basename tst-random tst-bsearch tst-limits \ |
57 | tst-rand48 | |
28f540f4 | 58 | |
3ef21326 RM |
59 | |
60 | # Several mpn functions from GNU MP are used by the strtod function. | |
0e3426bb | 61 | mpn-routines := inlines add_n addmul_1 cmp divmod_1 divrem udiv_qrnnd \ |
b5a08c5a | 62 | lshift rshift mod_1 mul mul_1 mul_n sub_n submul_1 |
3ef21326 RM |
63 | mpn-headers = longlong.h gmp.h gmp-impl.h gmp-mparam.h asm-syntax.h |
64 | ||
65 | routines := $(strip $(routines) $(mpn-routines)) \ | |
66 | dbl2mpn ldbl2mpn \ | |
67 | mpn2flt mpn2dbl mpn2ldbl | |
b5a08c5a | 68 | aux := mp_clz_tab fpioconst |
3ef21326 RM |
69 | distribute := $(distribute) $(mpn-headers) gen-mpn-copy fpioconst.h |
70 | ||
1eb687d0 | 71 | generated += isomac isomac.out |
3ef21326 | 72 | |
dff14448 UD |
73 | CFLAGS-bsearch.c = $(exceptions) |
74 | CFLAGS-msort.c = $(exceptions) | |
75 | CFLAGS-qsort.c = $(exceptions) | |
76 | ||
28f540f4 | 77 | include ../Rules |
3ef21326 RM |
78 | |
79 | ||
80 | ifdef gmp-srcdir | |
81 | ||
82 | gmp-srcdir := $(firstword $(filter-out ..//%,$(..)$(gmp-srcdir) $(gmp-srcdir))) | |
83 | ||
84 | # Copy the mpn source files we use from the GNU MP source directory. | |
85 | # `gmp-srcdir' is set by doing `configure --with-gmp=DIR'. | |
86 | # (Do not try this at home. You need an as yet unreleased version of GNU MP.) | |
87 | ||
88 | mpn-sysdep := $(addsuffix .c,$(mpn-routines)) \ | |
89 | $(addsuffix .S,$(mpn-routines)) \ | |
90 | $(addsuffix .s,$(mpn-routines)) gmp-mparam.h asm-syntax.h | |
91 | ||
b5a08c5a RM |
92 | mpn-try := $(addprefix $(gmp-srcdir)/mpn/*/,$(mpn-sysdep)) \ |
93 | $(addprefix $(gmp-srcdir)/mpn/*/*/,$(mpn-sysdep)) | |
94 | mpn-found = $(wildcard $(mpn-try)) | |
3ef21326 RM |
95 | |
96 | include mpn-copy.mk | |
97 | %.mk: gen-%; sh $< > $@ | |
98 | ||
99 | mpn-copy-1 := $(patsubst $(gmp-srcdir)/mpn/%,$(sysdep_dir)/%,$(mpn-found)) | |
100 | mpn-copy-sysdep := $(mpn-copy-sysdep) $(mpn-copy-1) | |
6cab5056 RM |
101 | mpn-copy-sysdep := $(filter $(addsuffix %,\ |
102 | $(wildcard $(sort $(dir $(mpn-copy-sysdep))))), \ | |
103 | $(mpn-copy-sysdep)) | |
3ef21326 RM |
104 | $(mpn-copy-1): $(sysdep_dir)/%: $(ignore gmp2glibc.sed) $(gmp-srcdir)/mpn/% |
105 | $(gmp2glibc) | |
106 | ||
107 | mpn-stuff = $(mpn-copy-sysdep) $(mpn-copy) | |
108 | ||
109 | # chmod so I don't edit them by mistake. | |
110 | define gmp2glibc | |
111 | $(ignore sed -f $^ > $@-tmp) | |
112 | cp $< $@-tmp | |
113 | chmod a-w $@-tmp | |
114 | mv -f $@-tmp $@ | |
115 | endef | |
116 | ||
6cab5056 | 117 | mpn-copy = $(filter-out $(mpn-sysdep),$(mpn-headers))# mp_clz_tab.c) |
3ef21326 RM |
118 | $(mpn-copy): %: $(ignore gmp2glibc.sed) $(gmp-srcdir)/%; $(gmp2glibc) |
119 | ||
6b628d36 RM |
120 | .PHONY: copy-mpn clean-mpn mpn-stuff |
121 | mpn-stuff: $(mpn-stuff) | |
3ef21326 | 122 | copy-mpn: $(mpn-stuff) |
880f421f | 123 | ifeq ($(with-cvs),yes) |
4eb36693 | 124 | test ! -d CVS || cvs $(CVSOPTS) commit -m'Updated from $(gmp-srcdir)' $+ |
880f421f | 125 | endif |
3ef21326 RM |
126 | clean-mpn: |
127 | rm -f $(mpn-stuff) | |
128 | ||
129 | endif | |
1eb687d0 | 130 | |
e25054c4 | 131 | # Testdir has to be named stdlib and needs to be writable |
9f835f5f | 132 | test-canon-ARGS = --test-dir=${common-objpfx}stdlib |
e25054c4 | 133 | |
1eb687d0 | 134 | # Run a test on the header files we use. |
9f6c1fc4 | 135 | tests: $(objpfx)isomac.out $(objpfx)tst-fmtmsg.out |
ca41028b UD |
136 | |
137 | $(objpfx)isomac.out: $(objpfx)isomac | |
1eb687d0 UD |
138 | $(dir $<)$(notdir $<) '$(CC)' '-I../include -I.. $(+sysdep-includes)' > $<.out |
139 | ||
140 | $(objpfx)isomac: isomac.c | |
141 | $(native-compile) | |
9f6c1fc4 UD |
142 | |
143 | $(objpfx)tst-fmtmsg.out: tst-fmtmsg.sh $(objpfx)tst-fmtmsg | |
144 | $(SHELL) -e $< $(common-objpfx) $(common-objpfx)stdlib/ |