blob: d88578418d29b30857254b707a1ee956fc07a607 [file] [log] [blame]
Patrick Williamsddad1a12017-02-23 20:36:32 -06001Check for clang compiler since we need to disable
2unused-function warning for clang, at same time
3pass werror when checking for compiler options if
4werror is enabled so spurious options do not get
5enabled. Only the ones that are supported by given
6compiler are accepted.
7
8Signed-off-by: Khem Raj <raj.khem@gmail.com>
9Upstream-Status: Pending
10
11Index: libmbim-1.14.0/m4/compiler-warnings.m4
12===================================================================
13--- libmbim-1.14.0.orig/m4/compiler-warnings.m4
14+++ libmbim-1.14.0/m4/compiler-warnings.m4
15@@ -2,10 +2,30 @@ AC_DEFUN([LIBMBIM_COMPILER_WARNINGS],
16 [AC_ARG_ENABLE(more-warnings,
17 AS_HELP_STRING([--enable-more-warnings], [Possible values: no/yes/error]),
18 set_more_warnings="$enableval",set_more_warnings=error)
19+
20+# Clang throws a lot of warnings when it does not understand a flag. Disable
21+# this warning for now so other warnings are visible.
22+AC_MSG_CHECKING([if compiling with clang])
23+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
24+#ifndef __clang__
25+ not clang
26+#endif
27+ ]])],
28+ [CLANG=yes],
29+ [CLANG=no]
30+)
31+AC_MSG_RESULT([$CLANG])
32+AS_IF([test "x$CLANG" = "xyes"], [CLANG_FLAGS=-Wno-error=unused-function])
33+CFLAGS="$CFLAGS $CLANG_FLAGS"
34+LDFLAGS="$LDFLAGS $CLANG_FLAGS"
35+
36 AC_MSG_CHECKING(for more warnings)
37 if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
38 AC_MSG_RESULT(yes)
39 CFLAGS="-Wall -std=gnu89 $CFLAGS"
40+ if test "x$set_more_warnings" = xerror; then
41+ WERROR="-Werror"
42+ fi
43
44 for option in -Wmissing-declarations -Wmissing-prototypes \
45 -Wdeclaration-after-statement -Wstrict-prototypes \
46@@ -17,22 +37,23 @@ if test "$GCC" = "yes" -a "$set_more_war
47 -Wmissing-include-dirs -Waggregate-return \
Brad Bishop19323692019-04-05 15:28:33 -040048 -Wformat-security -Wtype-limits; do
Patrick Williamsddad1a12017-02-23 20:36:32 -060049 SAVE_CFLAGS="$CFLAGS"
50- CFLAGS="$CFLAGS $option"
51+ CFLAGS="$CFLAGS $option $WERROR"
52 AC_MSG_CHECKING([whether gcc understands $option])
53 AC_TRY_COMPILE([], [],
54 has_option=yes,
55 has_option=no,)
56 if test $has_option = no; then
57 CFLAGS="$SAVE_CFLAGS"
58+ else
59+ CFLAGS="$SAVE_CFLAGS $option"
60 fi
61 AC_MSG_RESULT($has_option)
62 unset has_option
63 unset SAVE_CFLAGS
64 done
65+ CFLAGS="$CFLAGS $WERROR"
66 unset option
67- if test "x$set_more_warnings" = xerror; then
68- CFLAGS="$CFLAGS -Werror"
69- fi
70+ unset WERROR
71 else
72 AC_MSG_RESULT(no)
73 fi