d6937cc014da6bc48a047b9fbd3ec099b9153b63
[kopensolaris-gnu/glibc.git] / math / Makefile
1 # Copyright (C) 1991 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 hypot cabs cbrt expm1 log1p acosh asinh atanh 
32
33
34 include ../Rules
35
36
37 # Other dirs to look for source files (for dist).
38 source_dirs = $(filter-out unused,$(shell find bsd -type d -print))
39
40 ifdef bsdmath_dirs
41
42 override CPPFLAGS := $(CPPFLAGS) -Ibsd $(addprefix -Ibsd/,$(bsdmath_dirs))
43
44 +bsdpath := $(subst $+ ,:,bsd $(addprefix bsd/,$(bsdmath_dirs)))
45 vpath %.s $(+bsdpath)
46 vpath %.h $(+bsdpath)
47
48 +bsdfiles := $(wildcard $(patsubst %,bsd/%/*.c,$(bsdmath_dirs)))
49
50 ifdef +bsdfiles
51
52 # Find all the files which have both BSD and sysdep versions.
53 +sysdeps := $(notdir $(wildcard \
54                        $(foreach dir, \
55                                  $(filter-out %/generic %/stub, \
56                                               $(+sysdep_dirs)), \
57                                  $(addprefix $(dir)/, \
58                                              $(notdir $(+bsdfiles))))))
59
60 # Filter these out of the list of BSD files.
61 +bsdfiles := $(filter-out $(addprefix %/,$(+sysdeps)),$(+bsdfiles))
62
63 # Assert that all the BSD C sources exist in the object directory,
64 # so VPATH will find them there first.
65 $(addprefix $(objpfx),$(notdir $(+bsdfiles))):
66
67 # See how easy this would be in make v4?
68 ifneq (,)
69 define bsd-files
70 $(foreach dir,$(bsdmath_dirs),
71 $(objpfx)%.c: bsd/$(dir)/%.c
72         (echo '#include <ansidecl.h>'; echo '#include "$<") > $@-tmp
73         mv $@-tmp $@
74 endef
75 $(bsd-files)
76 endif
77
78 include $(objpfx)BSDmath-files
79 $(objpfx)BSDmath-files: Makefile $(+bsdfiles)
80         (echo define +ansideclificate-bsd;                              \
81          echo "(echo '#include <ansidecl.h>';                           \
82                 echo '#include \"\$$<\"') > \$$@-tmp;                   \
83                 mv \$$@-tmp \$$@";                                      \
84          echo endef;                                                    \
85          for dir in $(bsdmath_dirs); do                                 \
86            echo "\$$(objpfx)%.c: bsd/$${dir}/%.c;\$$(+ansideclificate-bsd)";\
87          done) > $@-tmp
88         mv $@-tmp $@
89
90 ifneq ($(findstring gcc,$(CC)),)
91 # Disable GCC warnings for grody BSD code.
92 override CFLAGS := $(filter-out -W%,$(CFLAGS))
93 # In make v4, put "$(+bsdfiles): " in front of that.
94 endif
95
96 endif   # +bsdfiles
97
98 endif   # bsdmath_dirs