/
Makefile
135 lines (103 loc) · 2.87 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# Based on original makefile included with the source.
# The source for libgdtoa imported from FreeBSD 7.0
# in /usr/src/contrib/gdtoa.
-include ../../config.mk
# Respect the environment
ifeq ($(CC),)
CC=gcc
endif
ifeq ($(AR),)
AR=ar
endif
ifeq ($(RANLIB),)
RANLIB=ranlib
endif
UNAME=$(shell uname)
CPU=$(shell uname -p)
MARCH=$(shell uname -m)
OSVER=$(shell uname -r)
WARNINGS = -Wall
DEBUG = -g
CFLAGS = $(WARNINGS) $(DEBUG) -fno-strict-aliasing
NAME=libgdtoa
VERSION = 1
COMP=$(CC)
ifndef VERBOSE
COMP=@echo CC $@;$(CC)
LINKER=@echo LINK $@;$(CC) $(LDOPT)
endif
OUTPUT_A = $(NAME).a
ifeq ($(UNAME),Darwin)
SINGLE_MODULE=-Wl,-single_module
ifeq ($(OSVER),9.1.0)
export MACOSX_DEPLOYMENT_TARGET=10.5
else
export MACOSX_DEPLOYMENT_TARGET=10.4
endif
else
SINGLE_MODULE=
endif
ifeq ($(UNAME),SunOS)
CFLAGS+=-D__C99FEATURES__
endif
ifeq ($(UNAME),OpenBSD)
CFLAGS+=-DNO_FENV_H
endif
ifdef DEV
OPTIMIZATIONS=
else
INLINE_OPTS=
OPTIMIZATIONS=-O2 -funroll-loops -finline-functions $(INLINE_OPTS)
endif
ifeq ($(CPU), powerpc)
OPTIMIZATIONS+=-falign-loops=16
endif
CFLAGS += -fPIC -DMULTIPLE_THREADS $(CPPFLAGS)
DEPS = dmisc.c dtoa.c g_Qfmt.c g__fmt.c g_ddfmt.c g_dfmt.c g_ffmt.c\
g_xLfmt.c g_xfmt.c gdtoa.c gethex.c gmisc.c hd_init.c hexnan.c\
misc.c smisc.c strtoIQ.c strtoId.c strtoIdd.c strtoIf.c strtoIg.c\
strtoIx.c strtoIxL.c strtod.c strtodI.c strtodg.c strtof.c strtopQ.c\
strtopd.c strtopdd.c strtopf.c strtopx.c strtopxL.c strtorQ.c\
strtord.c strtordd.c strtorf.c strtorx.c strtorxL.c sum.c ulp.c
OBJS = dmisc.o dtoa.o g_Qfmt.o g__fmt.o g_ddfmt.o g_dfmt.o g_ffmt.o\
g_xLfmt.o g_xfmt.o gdtoa.o gethex.o gmisc.o hd_init.o hexnan.o\
misc.o smisc.o strtoIQ.o strtoId.o strtoIdd.o strtoIf.o strtoIg.o\
strtoIx.o strtoIxL.o strtod.o strtodI.o strtodg.o strtof.o strtopQ.o\
strtopd.o strtopdd.o strtopf.o strtopx.o strtopxL.o strtorQ.o\
strtord.o strtordd.o strtorf.o strtorx.o strtorxL.o sum.o ulp.o
CHK = check_prog
all: library
arith.h: arithchk.c
$(CC) -o $(CHK) $(CFLAGS) arithchk.c || $(CC) -o $(CHK) -DNO_LONG_LONG $(CFLAGS) arithchk.c
./$(CHK) >arith.h
rm -f $(CHK) arithchk.o
gd_qnan.h: arith.h qnan.c
$(CC) -o $(CHK) $(CFLAGS) qnan.c
./$(CHK) >gd_qnan.h
rm -f $(CHK) qnan.o
$(OBJS): arith.h gd_qnan.h
%.o: %.c
$(COMP) $(CFLAGS) $(OPTIMIZATIONS) -c $< -o $@
%.o: %.S
$(COMP) $(CFLAGS) $(OPTIMIZATIONS) -c $< -o $@
.%.d: %.c $(DEPS)
@echo DEP $<
@set -e; rm -f $@; \
$(CC) -MM $(CPPFLAGS) $< > $@.$$$$; \
sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
rm -f $@.$$$$
library: $(OUTPUT_A)
$(OUTPUT_A): $(DEPS) $(OBJS)
$(AR) cru $(OUTPUT_A) $(OBJS)
$(RANLIB) $(OUTPUT_A)
.PHONY: library
test: library
-cd test; $(MAKE)
.PHONY: test
clean:
rm -f *.o *.lo *.la *.so *.a
-cd test; $(MAKE) clean
.PHONY: clean
ifneq ($(MAKECMDGOALS),clean)
-include $(SOURCES:%.c=.%.d)
endif