-
Notifications
You must be signed in to change notification settings - Fork 11
/
Makefile
166 lines (150 loc) · 4.13 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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
.POSIX:
PROGS=
LIBS= liball \
liball/optional_mutex_normal \
liball/optional_mutex_pthread
TESTS= perftests/http \
perftests/https \
perftests/network-ssl \
tests/aws \
tests/buildall \
tests/buildnothing \
tests/buildsingles \
tests/crc32 \
tests/crypto_aes \
tests/crypto_aesctr \
tests/crypto_entropy \
tests/daemonize \
tests/elasticarray \
tests/events \
tests/fork_func \
tests/getopt \
tests/getopt-longjmp \
tests/heap \
tests/humansize \
tests/ipc_sync \
tests/json \
tests/md5 \
tests/monoclock \
tests/mpool \
tests/optional_mutex/normal \
tests/optional_mutex/pthread \
tests/parsenum \
tests/readpass_file \
tests/setuidgid \
tests/sha1 \
tests/sha256 \
tests/sock_util \
tests/sysendian \
tests/valgrind \
tests/warnp
BINDIR_DEFAULT= /usr/local/bin
CFLAGS_DEFAULT= -O2
LIBCPERCIVA_DIR= .
TEST_CMD= tests/test_libcperciva.sh
### Shared code between Tarsnap projects.
.PHONY: all
all: toplevel
export CFLAGS="$${CFLAGS:-${CFLAGS_DEFAULT}}"; \
. ./posix-flags.sh; \
. ./cpusupport-config.h; \
. ./cflags-filter.sh; \
. ./apisupport-config.h; \
export HAVE_BUILD_FLAGS=1; \
for D in ${PROGS} ${TESTS}; do \
( cd $${D} && ${MAKE} all ) || exit 2; \
done
.PHONY: toplevel
toplevel: apisupport-config.h cflags-filter.sh \
cpusupport-config.h libs \
posix-flags.sh
# For "loop-back" building of a subdirectory
.PHONY: buildsubdir
buildsubdir: toplevel
export CFLAGS="$${CFLAGS:-${CFLAGS_DEFAULT}}"; \
. ./posix-flags.sh; \
. ./cpusupport-config.h; \
. ./cflags-filter.sh; \
. ./apisupport-config.h; \
export HAVE_BUILD_FLAGS=1; \
cd ${BUILD_SUBDIR} && ${MAKE} ${BUILD_TARGET}
# For "loop-back" building of libraries
.PHONY: libs
libs: apisupport-config.h cflags-filter.sh cpusupport-config.h posix-flags.sh
export CFLAGS="$${CFLAGS:-${CFLAGS_DEFAULT}}"; \
. ./posix-flags.sh; \
. ./cpusupport-config.h; \
. ./cflags-filter.sh; \
. ./apisupport-config.h; \
export HAVE_BUILD_FLAGS=1; \
for D in ${LIBS}; do \
( cd $${D} && make all ) || exit 2; \
done
posix-flags.sh:
if [ -d ${LIBCPERCIVA_DIR}/POSIX/ ]; then \
export CC="${CC}"; \
cd ${LIBCPERCIVA_DIR}/POSIX; \
printf "export \"LDADD_POSIX="; \
command -p sh posix-l.sh "$$PATH"; \
printf "\"\n"; \
printf "export \"CFLAGS_POSIX="; \
command -p sh posix-cflags.sh "$$PATH"; \
printf "\"\n"; \
fi > $@
if [ ! -s $@ ]; then \
printf "#define POSIX_COMPATIBILITY_NOT_CHECKED 1\n"; \
fi >> $@
cflags-filter.sh:
if [ -d ${LIBCPERCIVA_DIR}/POSIX/ ]; then \
export CC="${CC}"; \
cd ${LIBCPERCIVA_DIR}/POSIX; \
command -p sh posix-cflags-filter.sh "$$PATH"; \
fi > $@
if [ ! -s $@ ]; then \
printf "# Compiler understands normal flags; "; \
printf "nothing to filter out\n"; \
fi >> $@
apisupport-config.h:
if [ -d ${LIBCPERCIVA_DIR}/apisupport/ ]; then \
export CC="${CC}"; \
command -p sh \
${LIBCPERCIVA_DIR}/apisupport/Build/apisupport.sh \
"$$PATH"; \
else \
:; \
fi > $@
cpusupport-config.h:
if [ -d ${LIBCPERCIVA_DIR}/cpusupport/ ]; then \
export CC="${CC}"; \
command -p sh \
${LIBCPERCIVA_DIR}/cpusupport/Build/cpusupport.sh \
"$$PATH"; \
fi > $@
if [ ! -s $@ ]; then \
printf "#define CPUSUPPORT_NONE 1\n"; \
fi >> $@
.PHONY: install
install: all
export BINDIR=$${BINDIR:-${BINDIR_DEFAULT}}; \
for D in ${PROGS}; do \
( cd $${D} && ${MAKE} install ) || exit 2; \
done
.PHONY: clean
clean: test-clean
rm -f apisupport-config.h cflags-filter.sh cpusupport-config.h posix-flags.sh
for D in ${LIBS} ${PROGS} ${TESTS}; do \
( cd $${D} && ${MAKE} clean ) || exit 2; \
done
.PHONY: test
test: all
${TEST_CMD}
.PHONY: test-clean
test-clean:
rm -rf tests-output/ tests-valgrind/
# Developer targets: These only work with BSD make
.PHONY: Makefiles
Makefiles:
${MAKE} -f Makefile.BSD Makefiles
.PHONY: publish
publish:
${MAKE} -f Makefile.BSD publish