blob: ad98cf1fd68e2bb4fa247edc259768f08d52c2f7 (
plain) (
blame)
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
|
include config.mk
HDR_PUBLIC =\
zahl.h\
zahl-internals.h\
zahl-inlines.h
HDR_PRIVATE =\
src/internals.h
FUN =\
zadd\
zand\
zbset\
zdiv\
zdivmod\
zerror\
zfree\
zgcd\
zload\
zlsh\
zmod\
zmodmul\
zmodpow\
zmodpowu\
zmodsqr\
zmul\
znot\
zor\
zperror\
zpow\
zpowu\
zptest\
zrand\
zrsh\
zsave\
zset\
zsets\
zsetu\
zsetup\
zsplit\
zsqr\
zstr\
zstr_length\
zsub\
ztrunc\
zunsetup\
zxor
INLINE_FUN =\
zinit\
zswap\
zeven\
zodd\
zeven_nonzero\
zodd_nonzero\
zzero\
zsignum\
zabs\
zneg\
zlsb\
zbits\
zseti\
zcmp\
zcmpi\
zcmpmag\
zcmpu\
zbtest
HDR = $(HDR_PUBLIC) $(HDR_PRIVATE)
OBJ = $(FUN:=.o) allocator.o
MAN3 = $(FUN:=.3) $(INLINE_FUN:=.3)
MAN7 = libzahl.7
all: libzahl.a
%.o: src/%.c $(HDR) config.mk
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
libzahl.a: $(OBJ)
$(AR) rc $@ $?
$(RANLIB) $@
test-random.c: test-generate.py
./test-generate.py > test-random.c
test: test.c libzahl.a test-random.c
$(CC) $(LDFLAGS) $(CFLAGS:--O*) -O0 $(CPPFLAGS) -o $@ test.c libzahl.a
ifndef BENCHMARK_LIB
benchmark: bench/benchmark.c libzahl.a
$(CC) $(LDFLAGS) $(CFLAGS) $(CPPFLAGS) -o $@ $^
endif
ifdef BENCHMARK_LIB
CPPFLAGS += -DBENCHMARK_LIB='"$(BENCHMARK_LIB).h"'
BENCHMARK_libtommath = -ltommath
BENCHMARK_libgmp = -lgmp
benchmark: bench/benchmark.c bench/$(BENCHMARK_LIB).h
$(CC) $(LDFLAGS) $(CFLAGS) $(CPPFLAGS) -o $@ bench/benchmark.c $(BENCHMARK_$(BENCHMARK_LIB))
endif
benchmark-zrand: bench/benchmark-zrand.c libzahl.a
$(CC) $(LDFLAGS) $(CFLAGS) $(CPPFLAGS) -o $@ $^
check: test
./test
install: libzahl.a
mkdir -p -- "$(DESTDIR)$(EXECPREFIX)/lib"
mkdir -p -- "$(DESTDIR)$(PREFIX)/include"
mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man3"
mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man7"
cp -- libzahl.a "$(DESTDIR)$(EXECPREFIX)/lib"
cp -- $(HDR_PUBLIC) "$(DESTDIR)$(PREFIX)/include"
cp -- $(foreach M,$(MAN3),man/$(M)) "$(DESTDIR)$(MANPREFIX)/man3"
cp -- $(foreach M,$(MAN7),man/$(M)) "$(DESTDIR)$(MANPREFIX)/man7"
uninstall:
-rm -- "$(DESTDIR)$(EXECPREFIX)/lib/libzahl.a"
-cd -- "$(DESTDIR)$(PREFIX)/include" && rm $(HDR_PUBLIC)
-cd -- "$(DESTDIR)$(MANPREFIX)/man3" && rm $(MAN3)
-cd -- "$(DESTDIR)$(MANPREFIX)/man7" && rm $(MAN7)
clean:
-rm -- *.o *.su *.a *.so test test-random.c 2>/dev/null
.PHONY: all check clean install uninstall
|