Mon Mar 25 03:35:16 1996 Roland McGrath <roland@charlie-brown.gnu.ai.mit.edu>
[kopensolaris-gnu/glibc.git] / stdlib / Makefile
index 7126479..54a95fd 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 1991, 1992 Free Software Foundation, Inc.
+# Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -26,17 +26,88 @@ headers     := stdlib.h alloca.h
 routines       :=                                                            \
        atof atoi atol                                                        \
        abort                                                                 \
 routines       :=                                                            \
        atof atoi atol                                                        \
        abort                                                                 \
-       bsearch qsort                                                         \
-       getenv putenv                                                         \
+       bsearch qsort msort                                                   \
+       getenv putenv setenv                                                  \
        exit on_exit atexit                                                   \
        abs labs                                                              \
        div ldiv                                                              \
        mblen mbstowcs mbtowc wcstombs wctomb                                 \
        exit on_exit atexit                                                   \
        abs labs                                                              \
        div ldiv                                                              \
        mblen mbstowcs mbtowc wcstombs wctomb                                 \
-       __random random rand srand                                            \
-       strtod strtol strtoul                                                 \
-       system
+       random random_r rand                                                  \
+       drand48 erand48 lrand48 nrand48 mrand48 jrand48                       \
+       srand48 seed48 lcong48                                                \
+       drand48_r erand48_r lrand48_r nrand48_r mrand48_r jrand48_r           \
+       srand48_r seed48_r lcong48_r                                          \
+       drand48-iter                                                          \
+       strtol strtoul strtoq strtouq                                         \
+       strtof strtod strtold                                                 \
+       system                                                                \
+       a64l l64a                                                             \
+       rpmatch
+
+distribute     := exit.h grouping.h
+tests          := tst-strtol tst-strtod testmb testrand testsort testdiv
+
+
+# Several mpn functions from GNU MP are used by the strtod function.
+mpn-routines := add_1 add_n addmul_1 cmp divmod divmod_1 udiv_qrnnd \
+               lshift rshift mod_1 mul mul_1 mul_n sub_n submul_1
+mpn-headers = longlong.h gmp.h gmp-impl.h gmp-mparam.h asm-syntax.h
+
+routines := $(strip $(routines) $(mpn-routines))       \
+           dbl2mpn ldbl2mpn                            \
+           mpn2flt mpn2dbl mpn2ldbl
+aux := mp_clz_tab fpioconst
+distribute := $(distribute) $(mpn-headers) gen-mpn-copy fpioconst.h
 
 
-distribute     := exit.h
-tests          := tst-strtol tst-strtod
 
 include ../Rules
 
 include ../Rules
+
+
+ifdef gmp-srcdir
+
+gmp-srcdir := $(firstword $(filter-out ..//%,$(..)$(gmp-srcdir) $(gmp-srcdir)))
+
+# Copy the mpn source files we use from the GNU MP source directory.
+# `gmp-srcdir' is set by doing `configure --with-gmp=DIR'.
+# (Do not try this at home.  You need an as yet unreleased version of GNU MP.)
+
+mpn-sysdep := $(addsuffix .c,$(mpn-routines)) \
+             $(addsuffix .S,$(mpn-routines)) \
+             $(addsuffix .s,$(mpn-routines)) gmp-mparam.h asm-syntax.h
+
+mpn-try := $(addprefix $(gmp-srcdir)/mpn/*/,$(mpn-sysdep)) \
+          $(addprefix $(gmp-srcdir)/mpn/*/*/,$(mpn-sysdep))
+mpn-found = $(wildcard $(mpn-try))
+
+include mpn-copy.mk
+%.mk: gen-%; sh $< > $@
+
+mpn-copy-1 := $(patsubst $(gmp-srcdir)/mpn/%,$(sysdep_dir)/%,$(mpn-found))
+mpn-copy-sysdep := $(mpn-copy-sysdep) $(mpn-copy-1)
+mpn-copy-sysdep := $(filter $(addsuffix %,\
+                    $(wildcard $(sort $(dir $(mpn-copy-sysdep))))), \
+                   $(mpn-copy-sysdep))
+$(mpn-copy-1): $(sysdep_dir)/%: $(ignore gmp2glibc.sed) $(gmp-srcdir)/mpn/%
+       $(gmp2glibc)
+
+mpn-stuff = $(mpn-copy-sysdep) $(mpn-copy)
+
+# chmod so I don't edit them by mistake.
+define gmp2glibc
+$(ignore sed -f $^ > $@-tmp)
+cp $< $@-tmp
+chmod a-w $@-tmp
+mv -f $@-tmp $@
+endef
+
+mpn-copy = $(filter-out $(mpn-sysdep),$(mpn-headers))# mp_clz_tab.c)
+$(mpn-copy): %: $(ignore gmp2glibc.sed) $(gmp-srcdir)/%; $(gmp2glibc)
+
+.PHONY: copy-mpn clean-mpn mpn-stuff
+mpn-stuff: $(mpn-stuff)
+copy-mpn: $(mpn-stuff)
+       test ! -d CVS || cvs commit -m'Updated from $(gmp-srcdir)' $+
+clean-mpn:
+       rm -f $(mpn-stuff)
+
+endif