config: check for -Wno-cast-function-type

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Rich Ercolani <rincebrain@gmail.com>
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Closes #13145
Closes #13152
This commit is contained in:
наб 2022-02-25 17:49:29 +00:00 committed by Brian Behlendorf
parent 82226e4f44
commit 1ea68b6d38
3 changed files with 29 additions and 2 deletions

View File

@ -181,6 +181,32 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_CLOBBERED], [
AC_SUBST([NO_CLOBBERED])
])
dnl #
dnl # Check if gcc supports -Wno-cast-function-type option.
dnl #
dnl # We actually invoke gcc with the --cast-function-type option
dnl # and infer the 'no-' version does or doesn't exist based upon
dnl # the results. This is required because when checking any of
dnl # no- prefixed options gcc always returns success.
dnl #
AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_CAST_FUNCTION_TYPE], [
AC_MSG_CHECKING([whether $CC supports -Wno-cast-function-type])
saved_flags="$CFLAGS"
CFLAGS="$CFLAGS -Werror -Wcast-function-type"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [
NO_CAST_FUNCTION_TYPE=-Wno-cast-function-type
AC_MSG_RESULT([yes])
], [
NO_CAST_FUNCTION_TYPE=
AC_MSG_RESULT([no])
])
CFLAGS="$saved_flags"
AC_SUBST([NO_CAST_FUNCTION_TYPE])
])
dnl #
dnl # Check if gcc supports -Wimplicit-fallthrough option.
dnl #

View File

@ -210,6 +210,7 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS], [
AC_SUBST(CPU_COUNT)
ZFS_AC_CONFIG_ALWAYS_CC_NO_CLOBBERED
ZFS_AC_CONFIG_ALWAYS_CC_NO_CAST_FUNCTION_TYPE
ZFS_AC_CONFIG_ALWAYS_CC_IMPLICIT_FALLTHROUGH
ZFS_AC_CONFIG_ALWAYS_CC_FRAME_LARGER_THAN
ZFS_AC_CONFIG_ALWAYS_CC_NO_FORMAT_TRUNCATION

View File

@ -26,8 +26,8 @@ AM_CFLAGS += -DLIB_ZPOOL_BUILD
# For the void (*)(void *) -> void *(*)(void *) cast in zk_thread_create()
# See https://github.com/openzfs/zfs/pull/13110#discussion_r808450136
kernel.$(OBJEXT): CFLAGS += -Wno-cast-function-type
kernel.l$(OBJEXT): CFLAGS += -Wno-cast-function-type
kernel.$(OBJEXT): CFLAGS += $(NO_CAST_FUNCTION_TYPE)
kernel.l$(OBJEXT): CFLAGS += $(NO_CAST_FUNCTION_TYPE)
lib_LTLIBRARIES = libzpool.la