annotate configure.ac @ 1427:f0e262a46d4e

set hardened compiler/linker flags by default
author Matt Johnston <matt@ucc.asn.au>
date Sat, 24 Jun 2017 00:42:20 +0800
parents 89f8c5960527
children 69862e8cc405 a097c9c9608a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
1 # -*- Autoconf -*-
28
45ee5ffd6ea0 Mention that autoheader should also be run
Matt Johnston <matt@ucc.asn.au>
parents: 4
diff changeset
2 # Process this file with autoconf and autoheader to produce a configure script.
4
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
3
67
86725004a0ea fake-rfc stuff
Matt Johnston <matt@ucc.asn.au>
parents: 28
diff changeset
4 # This Autoconf file was cobbled from various locations. In particular, a bunch
86725004a0ea fake-rfc stuff
Matt Johnston <matt@ucc.asn.au>
parents: 28
diff changeset
5 # of the platform checks have been taken straight from OpenSSH's configure.ac
86725004a0ea fake-rfc stuff
Matt Johnston <matt@ucc.asn.au>
parents: 28
diff changeset
6 # Huge thanks to them for dealing with the horrible platform-specifics :)
4
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
7
856
f56c41030c15 Replace some deprecated macros with other ones, from Daniel Richard G.
Matt Johnston <matt@ucc.asn.au>
parents: 835
diff changeset
8 AC_PREREQ(2.59)
f56c41030c15 Replace some deprecated macros with other ones, from Daniel Richard G.
Matt Johnston <matt@ucc.asn.au>
parents: 835
diff changeset
9 AC_INIT
f56c41030c15 Replace some deprecated macros with other ones, from Daniel Richard G.
Matt Johnston <matt@ucc.asn.au>
parents: 835
diff changeset
10 AC_CONFIG_SRCDIR(buffer.c)
4
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
11
1416
33d90d219e03 Compile with -fno-strict-overflow if possible.
Matt Johnston <matt@ucc.asn.au>
parents: 1407
diff changeset
12 OLDCFLAGS="$CFLAGS"
4
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
13 # Checks for programs.
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
14 AC_PROG_CC
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
15 AC_PROG_MAKE_SET
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
16
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
17 if test -z "$LD" ; then
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
18 LD=$CC
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
19 fi
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
20 AC_SUBST(LD)
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
21
1427
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
22 # set compile flags prior to other tests
4
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
23 if test -z "$OLDCFLAGS" && test "$GCC" = "yes"; then
321
fa9c45d09727 change AC_MSG_RESULT to AC_MSG_NOTICE in configure.in, add AC_SYS_LARGEFILE
Matt Johnston <matt@ucc.asn.au>
parents: 262
diff changeset
24 AC_MSG_NOTICE(No \$CFLAGS set... using "-Os -W -Wall" for GCC)
864
30ab30e46452 Fix some warnings
Matt Johnston <matt@ucc.asn.au>
parents: 856
diff changeset
25 CFLAGS="-Os -W -Wall -Wno-pointer-sign"
4
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
26 fi
fe6bca95afa7 Makefile.in contains updated files required
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
27
1416
33d90d219e03 Compile with -fno-strict-overflow if possible.
Matt Johnston <matt@ucc.asn.au>
parents: 1407
diff changeset
28 AC_MSG_CHECKING([if compiler '$CC' supports -fno-strict-overflow])
33d90d219e03 Compile with -fno-strict-overflow if possible.
Matt Johnston <matt@ucc.asn.au>
parents: 1407
diff changeset
29 OLDCFLAGS="$CFLAGS"
33d90d219e03 Compile with -fno-strict-overflow if possible.
Matt Johnston <matt@ucc.asn.au>
parents: 1407
diff changeset
30 CFLAGS="$CFLAGS -fno-strict-overflow"
33d90d219e03 Compile with -fno-strict-overflow if possible.
Matt Johnston <matt@ucc.asn.au>
parents: 1407
diff changeset
31 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
33d90d219e03 Compile with -fno-strict-overflow if possible.
Matt Johnston <matt@ucc.asn.au>
parents: 1407
diff changeset
32 [AC_MSG_RESULT(yes)],
1427
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
33 [AC_MSG_RESULT(no); CFLAGS="$OLDCFLAGS" ]
1416
33d90d219e03 Compile with -fno-strict-overflow if possible.
Matt Johnston <matt@ucc.asn.au>
parents: 1407
diff changeset
34 )
33d90d219e03 Compile with -fno-strict-overflow if possible.
Matt Johnston <matt@ucc.asn.au>
parents: 1407
diff changeset
35
1427
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
36 hardenbuild=1
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
37 AC_ARG_ENABLE(harden,
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
38 [ --disable-harden Don't set hardened build flags],
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
39 [
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
40 if test "x$enableval" = "xno"; then
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
41 hardenbuild=0
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
42 AC_MSG_NOTICE(Disabling hardened build flags)
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
43 fi
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
44 ], [])
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
45
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
46 if test "$hardenbuild" -eq 1; then
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
47 AC_MSG_NOTICE(Checking for available hardened build flags:)
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
48 # pie
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
49 OLDCFLAGS="$CFLAGS"
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
50 TESTFLAGS="-fPIE"
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
51 CFLAGS="$CFLAGS $TESTFLAGS"
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
52 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
53 [AC_MSG_NOTICE([Setting $TESTFLAGS])],
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
54 [AC_MSG_NOTICE([Not setting $TESTFLAGS]); CFLAGS="$OLDCFLAGS" ]
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
55 )
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
56 OLDLDFLAGS="$LDFLAGS"
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
57 TESTFLAGS="-Wl,-pie"
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
58 LDFLAGS="$LDFLAGS $TESTFLAGS"
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
59 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
60 [AC_MSG_NOTICE([Setting $TESTFLAGS])],
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
61 [AC_MSG_NOTICE([Not setting $TESTFLAGS]); LDFLAGS="$OLDLDFLAGS" ]
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
62 )
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
63 # readonly elf relocation sections (relro)
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
64 OLDLDFLAGS="$LDFLAGS"
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
65 TESTFLAGS="-Wl,-z,now -Wl,-z,relro"
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
66 LDFLAGS="$LDFLAGS $TESTFLAGS"
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
67 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
68 [AC_MSG_NOTICE([Setting $TESTFLAGS])],
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
69 [AC_MSG_NOTICE([Not setting $TESTFLAGS]); LDFLAGS="$OLDLDFLAGS" ]
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
70 )
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
71 # stack protector. -strong is good but only in gcc 4.9 or later
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
72 OLDCFLAGS="$CFLAGS"
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
73 TESTFLAGS="-fstack-protector-strong"
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
74 CFLAGS="$CFLAGS $TESTFLAGS"
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
75 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
76 [AC_MSG_NOTICE([Setting $TESTFLAGS])],
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
77 [
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
78 CFLAGS="$OLDCFLAGS"
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
79 TESTFLAGS="-fstack-protector --param=ssp-buffer-size=4"
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
80 CFLAGS="$CFLAGS $TESTFLAGS"
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
81 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: 1426
diff changeset
82 [AC_MSG_NOTICE([Setting $TESTFLAGS])],
f0e262a46d4e set hardened compiler/linker flags by default
Matt Johnston <matt@ucc.asn.au>
parents: