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