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 | |
| 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.
| -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]) |
