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
|
set -eu
if test "$#" -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"
|