Formerly math.h.~10~
[kopensolaris-gnu/glibc.git] / math / Makefile
1 # Copyright (C) 1991, 1992 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 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
15 # License along with the GNU C Library; see the file COPYING.LIB.  If
16 # not, write to the Free Software Foundation, Inc., 675 Mass Ave,
17 # Cambridge, MA 02139, USA.
18
19 #
20 #       Makefile for math.
21 #
22 subdir  := math
23
24 headers := math.h __math.h
25
26
27 routines := acos asin atan cos sin tan cosh sinh tanh exp fabs ldexp    \
28             log log10 floor sqrt fmod frexp pow atan2 ceil modf         \
29             isinf isnan finite infnan copysign scalb drem logb          \
30             __isinf __isnan __finite __infnan __copysign __scalb __drem __logb\
31             __rint rint hypot cabs cbrt __expm1 expm1 log1p acosh asinh atanh 
32 tests := test-math
33 install-lib := libm.a
34
35
36 include ../Rules
37
38
39 $(objpfx)libm.a:
40         $(AR) cr$(verbose) $@
41
42 # Other dirs to look for source files (for dist).
43 source_dirs = $(filter-out unused,$(shell find bsd -type d -print))
44
45 include $(objpfx)BSDmath-files
46 $(objpfx)BSDmath-files:
47         (echo define +ansideclificate-bsd;                              \
48          echo "(echo '#include <ansidecl.h>';                           \
49                 echo '#include \"\$$<\"') > \$$@-tmp;                   \
50                 mv \$$@-tmp \$$@";                                      \
51          echo endef;                                                    \
52          for dir in $(source_dirs); do                                  \
53            echo "\$$(objpfx)%.c: $${dir}/%.c;\$$(+ansideclificate-bsd)";\
54          done) > $@-tmp
55         mv $@-tmp $@
56
57
58 ifdef bsdmath_dirs
59
60 override CPPFLAGS := $(CPPFLAGS) -Ibsd $(addprefix -Ibsd/,$(bsdmath_dirs))
61
62 +bsdpath := $(subst $+ ,:,bsd $(addprefix bsd/,$(bsdmath_dirs)))
63 vpath %.s $(+bsdpath)
64 vpath %.h $(+bsdpath)
65
66 +bsdfiles := $(wildcard $(patsubst %,bsd/%/*.c,$(bsdmath_dirs)))
67
68 ifdef +bsdfiles
69
70 # Find all the files which have both BSD and sysdep versions.
71 +sysdeps := $(notdir $(wildcard \
72                        $(foreach dir, \
73                                  $(filter-out %/generic %/stub, \
74                                               $(+sysdep_dirs)), \
75                                  $(addprefix $(dir)/, \
76                                              $(notdir $(+bsdfiles))))))
77
78 # Filter these out of the list of BSD files.
79 +bsdfiles := $(filter-out $(addprefix %/,$(+sysdeps)),$(+bsdfiles))
80
81 ifdef +bsdfiles
82 # Assert that all the BSD C sources exist in the object directory,
83 # so VPATH will find them there first.
84 $(addprefix $(objpfx),$(notdir $(+bsdfiles))):
85 endif
86
87 # See how easy this would be in make v4?
88 ifneq (,)
89 define bsd-files
90 $(foreach dir,$(bsdmath_dirs),
91 $(objpfx)%.c: bsd/$(dir)/%.c
92         (echo '#include <ansidecl.h>'; echo '#include "$<") > $@-tmp
93         mv $@-tmp $@
94 endef
95 $(bsd-files)
96 endif
97
98 ifneq ($(findstring gcc,$(CC)),)
99 # Disable GCC warnings for grody BSD code.
100 override CFLAGS := $(filter-out -W%,$(CFLAGS))
101 # In make v4, put "$(+bsdfiles): " in front of that.
102 endif
103
104 endif   # +bsdfiles
105
106 endif   # bsdmath_dirs