Mercurial > dropbear
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 |
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 | 4 # This Autoconf file was cobbled from various locations. In particular, a bunch |
5 # of the platform checks have been taken straight from OpenSSH's configure.ac | |
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 | 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])], |