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
|
set -eu
if [ "$#" -gt 1 ]; then
echo "usage: $0 [lua]" >&2
exit 2
fi
case "${1:-}" in
"") set -- NO_LUA=1 ;;
lua) set -- ;;
*) echo "$0: unknown argument \"$1\", expected \"lua\" or nothing" >&2
exit 2 ;;
esac
cd "$(dirname "$0")/.."
CC=${CC:-cc}
supports() {
printf 'int main(void){return 0;}\n' >"$probe.c"
$CC $1 -o "$probe.out" "$probe.c" >/dev/null 2>&1
}
probe=$(mktemp "${TMPDIR:-/tmp}/cgit-probe.XXXXXX")
trap 'rm -f "$probe" "$probe.c" "$probe.out"' EXIT
CFLAGS="-O2 -g -Wall \
-fstack-protector-strong \
-fPIE \
-fno-plt"
if supports "-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -O2"; then
CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3"
else
CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2"
fi
if supports "-fstack-clash-protection"; then
CFLAGS="$CFLAGS -fstack-clash-protection"
fi
LDFLAGS="-pie \
-Wl,-z,relro,-z,now \
-Wl,-z,noexecstack"
CGIT_EXTRA_CFLAGS="-Wformat -Wformat-security -Werror=format-security"
make cleanall
exec make "$@" CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" \
CGIT_EXTRA_CFLAGS="$CGIT_EXTRA_CFLAGS"
|