diff options
author | Brent Cook <busterb@gmail.com> | 2015-04-14 08:43:52 -0500 |
---|---|---|
committer | Brent Cook <busterb@gmail.com> | 2015-04-14 08:45:47 -0500 |
commit | 5cf05de18ce848d7579f235758160ee12fcd85a5 (patch) | |
tree | e6de6bef4d1fdf263efcea9a48a4b66eb93b8936 /configure.ac | |
parent | 3096ab0e45351b05b1f1df51cedc183ba6ca7763 (diff) | |
download | portable-5cf05de18ce848d7579f235758160ee12fcd85a5.tar.gz portable-5cf05de18ce848d7579f235758160ee12fcd85a5.tar.bz2 portable-5cf05de18ce848d7579f235758160ee12fcd85a5.zip |
make compiler checks for -Wall and -std=gnu99
Yes, there are compilers that do not understand or need these.
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 50 |
1 files changed, 36 insertions, 14 deletions
diff --git a/configure.ac b/configure.ac index 2cd9814..31efac7 100644 --- a/configure.ac +++ b/configure.ac | |||
@@ -9,14 +9,13 @@ AC_CONFIG_MACRO_DIR([m4]) | |||
9 | 9 | ||
10 | m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) | 10 | m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) |
11 | 11 | ||
12 | AM_PROG_AS | ||
12 | AC_PROG_CC | 13 | AC_PROG_CC |
13 | AC_PROG_CC_STDC | 14 | AC_PROG_CC_STDC |
14 | AM_PROG_CC_C_O | 15 | AM_PROG_CC_C_O |
15 | AC_PROG_LIBTOOL | 16 | AC_PROG_LIBTOOL |
16 | LT_INIT | 17 | LT_INIT |
17 | 18 | ||
18 | CFLAGS="$CFLAGS -Wall -std=gnu99" | ||
19 | |||
20 | case $host_os in | 19 | case $host_os in |
21 | *aix*) | 20 | *aix*) |
22 | HOST_OS=aix | 21 | HOST_OS=aix |
@@ -88,6 +87,40 @@ AC_CHECK_FUNC([clock_gettime],, | |||
88 | AC_CHECK_FUNC([dl_iterate_phdr],, | 87 | AC_CHECK_FUNC([dl_iterate_phdr],, |
89 | [AC_SEARCH_LIBS([dl_iterate_phdr],[dl])]) | 88 | [AC_SEARCH_LIBS([dl_iterate_phdr],[dl])]) |
90 | 89 | ||
90 | # Check if -Wno-pointer-sign is supported, a lot of ASN1 code needs this due to | ||
91 | # char*/unsigned char* mismatches. | ||
92 | save_cflags="$CFLAGS" | ||
93 | CFLAGS=-Wno-pointer-sign | ||
94 | AC_MSG_CHECKING([whether CC supports -Wno-pointer-sign]) | ||
95 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], | ||
96 | [AC_MSG_RESULT([yes])] | ||
97 | [AM_CFLAGS=-Wno-pointer-sign], | ||
98 | [AC_MSG_RESULT([no])] | ||
99 | ) | ||
100 | CFLAGS="$save_cflags $AM_CFLAGS" | ||
101 | |||
102 | # Check for some common compiler flag support | ||
103 | save_cflags="$CFLAGS" | ||
104 | CFLAGS=-Wall | ||
105 | AC_MSG_CHECKING([whether CC supports -Wall]) | ||
106 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], | ||
107 | [AC_MSG_RESULT([yes])] | ||
108 | [AM_CFLAGS=-Wall], | ||
109 | [AC_MSG_RESULT([no])] | ||
110 | ) | ||
111 | CFLAGS="$save_cflags $AM_CFLAGS" | ||
112 | |||
113 | save_cflags="$CFLAGS" | ||
114 | CFLAGS=--std=gnu99 | ||
115 | AC_MSG_CHECKING([whether CC supports --std=gnu99]) | ||
116 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], | ||
117 | [AC_MSG_RESULT([yes])] | ||
118 | [AM_CFLAGS=--std=gnu99], | ||
119 | [AC_MSG_RESULT([no])] | ||
120 | ) | ||
121 | CFLAGS="$save_cflags $AM_CFLAGS" | ||
122 | |||
123 | # Clang needs some workarounds, check for it | ||
91 | AC_MSG_CHECKING([if compiling with clang]) | 124 | AC_MSG_CHECKING([if compiling with clang]) |
92 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[ | 125 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[ |
93 | #ifndef __clang__ | 126 | #ifndef __clang__ |
@@ -182,6 +215,7 @@ AS_IF([test "x$enable_hardening" = "xyes"], [ | |||
182 | AC_MSG_WARN([compiler does not appear to support stack protection]) | 215 | AC_MSG_WARN([compiler does not appear to support stack protection]) |
183 | ) | 216 | ) |
184 | ) | 217 | ) |
218 | # Make sure we can actually link libssp on Windows platforms. | ||
185 | AS_IF([test "x$HOST_OS" = "xwin"], [ | 219 | AS_IF([test "x$HOST_OS" = "xwin"], [ |
186 | AC_SEARCH_LIBS([__stack_chk_guard],[ssp]) | 220 | AC_SEARCH_LIBS([__stack_chk_guard],[ssp]) |
187 | ]) | 221 | ]) |
@@ -196,17 +230,6 @@ LD="$saved_LD" | |||
196 | CFLAGS="$CFLAGS $HARDEN_CFLAGS" | 230 | CFLAGS="$CFLAGS $HARDEN_CFLAGS" |
197 | LDFLAGS="$LDFLAGS $HARDEN_LDFLAGS" | 231 | LDFLAGS="$LDFLAGS $HARDEN_LDFLAGS" |
198 | 232 | ||
199 | # Removing the dependency on -Wno-pointer-sign should be a goal | ||
200 | save_cflags="$CFLAGS" | ||
201 | CFLAGS=-Wno-pointer-sign | ||
202 | AC_MSG_CHECKING([whether CC supports -Wno-pointer-sign]) | ||
203 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], | ||
204 | [AC_MSG_RESULT([yes])] | ||
205 | [AM_CFLAGS=-Wno-pointer-sign], | ||
206 | [AC_MSG_RESULT([no])] | ||
207 | ) | ||
208 | CFLAGS="$save_cflags $AM_CFLAGS" | ||
209 | |||
210 | save_cflags="$CFLAGS" | 233 | save_cflags="$CFLAGS" |
211 | CFLAGS= | 234 | CFLAGS= |
212 | AC_MSG_CHECKING([whether AS supports .note.GNU-stack]) | 235 | AC_MSG_CHECKING([whether AS supports .note.GNU-stack]) |
@@ -217,7 +240,6 @@ __asm__(".section .note.GNU-stack,\"\",@progbits");]])], | |||
217 | [AC_MSG_RESULT([no])] | 240 | [AC_MSG_RESULT([no])] |
218 | ) | 241 | ) |
219 | CFLAGS="$save_cflags $AM_CFLAGS" | 242 | CFLAGS="$save_cflags $AM_CFLAGS" |
220 | AM_PROG_AS | ||
221 | 243 | ||
222 | AC_CHECK_FUNCS([arc4random_buf asprintf explicit_bzero funopen getauxval]) | 244 | AC_CHECK_FUNCS([arc4random_buf asprintf explicit_bzero funopen getauxval]) |
223 | AC_CHECK_FUNCS([getentropy memmem poll reallocarray]) | 245 | AC_CHECK_FUNCS([getentropy memmem poll reallocarray]) |