diff options
| author | Dennis Camera <skonfig@dtnr.ch> | 2022-08-18 00:09:54 +0200 |
|---|---|---|
| committer | Dennis Camera <skonfig@dtnr.ch> | 2022-08-18 00:09:54 +0200 |
| commit | 3a3ad5b6bed9039e51d6766ad8849b8f65842638 (patch) | |
| tree | f661b325cb40517ec7d061a0878284bb1aa65ead | |
| parent | cc238bc2307241a9c27a29a1b159605c72bec775 (diff) | |
| download | skonfig-c-3a3ad5b6bed9039e51d6766ad8849b8f65842638.tar.gz skonfig-c-3a3ad5b6bed9039e51d6766ad8849b8f65842638.zip | |
[configure.ac] Check for some compiler security flags and use them if available
| -rw-r--r-- | Makefile.am | 2 | ||||
| -rw-r--r-- | configure.ac | 32 |
2 files changed, 33 insertions, 1 deletions
diff --git a/Makefile.am b/Makefile.am index 00cd7b4..6238617 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ AM_CPPFLAGS = -DSYSCONFDIR='"${sysconfdir}"' AM_CFLAGS = -std=c99 -D_FORTIFY_SOURCE=2 -D_POSIX_C_SOURCE=200112L -AM_CFLAGS += -Wall +AM_CFLAGS += -Wall -Werror AM_CFLAGS += -include config.h if DEBUG diff --git a/configure.ac b/configure.ac index 26f7535..e32cbfd 100644 --- a/configure.ac +++ b/configure.ac @@ -19,6 +19,38 @@ m4_version_prereq([2.70],[],[AC_PROG_CC_C99]) AC_PROG_CPP AC_PROG_MAKE_SET + +# Check compiler options +check_ccopt() { ( + _ccopt=${1:?} + case ${CFLAGS-} in + (*\ ${_ccopt}\ *|${_ccopt}\ *|*\ ${_ccopt}) + # option is already set + return 0 + ;; + esac + + AC_MSG_CHECKING([whether ${CC} supports ${_ccopt}]) + CFLAGS=${CFLAGS-}${CFLAGS:+ }${_ccopt} + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM()], + [AC_MSG_RESULT([yes]); return 0], + [AC_MSG_RESULT([no]); return 1]) +); } +check_set_ccopt() { + check_ccopt "${1:?}" && CFLAGS=${CFLAGS-}${CFLAGS:+ }${1:?} +} + +check_set_ccopt -Wformat=2 +check_set_ccopt -Wformat-overflow=2 + +check_set_ccopt -fstack-protector-strong \ +|| check_set_ccopt -fstack-protector # fallback + +check_set_ccopt -fstack-clash-protection \ +|| check_set_ccopt -fstack-check # fallback + + # Checks for libraries. # Checks for header files. |
