diff options
| author | David M. Syzdek <david@syzdek.net> | 2010-01-18 17:15:30 -0900 |
|---|---|---|
| committer | David M. Syzdek <david@syzdek.net> | 2010-01-18 17:15:30 -0900 |
| commit | 1d811f1d365a67ba9802f5fcfa3b4509e79cb80e (patch) | |
| tree | 2362a3e597299ecd9b91fc97d91c7cc18a800dfc /m4 | |
| parent | 1e372e553308cf81adcef40aca59abc615371670 (diff) | |
| download | dmstools-1d811f1d365a67ba9802f5fcfa3b4509e79cb80e.tar.gz dmstools-1d811f1d365a67ba9802f5fcfa3b4509e79cb80e.tar.bz2 dmstools-1d811f1d365a67ba9802f5fcfa3b4509e79cb80e.tar.xz dmstools-1d811f1d365a67ba9802f5fcfa3b4509e79cb80e.zip | |
Adding compiler warnings.
Diffstat (limited to 'm4')
| -rw-r--r-- | m4/dmstools_gcc.m4 | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/m4/dmstools_gcc.m4 b/m4/dmstools_gcc.m4 new file mode 100644 index 0000000..ae8c13d --- /dev/null +++ b/m4/dmstools_gcc.m4 | |||
| @@ -0,0 +1,156 @@ | |||
| 1 | # | ||
| 2 | # DMS Tools and Utilities | ||
| 3 | # Copyright (C) 2010 David M. Syzdek <david@syzdek.net> | ||
| 4 | # | ||
| 5 | # @SYZDEK_LICENSE_HEADER_START@ | ||
| 6 | # | ||
| 7 | # This program is free software; you can redistribute it and/or modify | ||
| 8 | # it under the terms of the GNU General Public License as published by | ||
| 9 | # the Free Software Foundation; either version 2 of the License, or | ||
| 10 | # (at your option) any later version. | ||
| 11 | # | ||
| 12 | # This program is distributed in the hope that it will be useful, | ||
| 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | # GNU General Public License for more details. | ||
| 16 | # | ||
| 17 | # You should have received a copy of the GNU General Public License | ||
| 18 | # along with this program; if not, write to the Free Software | ||
| 19 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
| 20 | # | ||
| 21 | # @SYZDEK_LICENSE_HEADER_END@ | ||
| 22 | # | ||
| 23 | # acinclude.m4 - custom m4 macros used by configure.ac | ||
| 24 | # | ||
| 25 | |||
| 26 | # AC_DMS_ENABLE_WARNINGS() | ||
| 27 | # ______________________________________________________________________________ | ||
| 28 | AC_DEFUN([AC_DMS_ENABLE_WARNINGS],[dnl | ||
| 29 | |||
| 30 | # prerequists | ||
| 31 | AC_REQUIRE([AC_PROG_CC]) | ||
| 32 | |||
| 33 | # sets compiler | ||
| 34 | if test "x${CC}" == "x";then | ||
| 35 | ac_dms_cc=cc; | ||
| 36 | else | ||
| 37 | ac_dms_cc=${CC}; | ||
| 38 | fi | ||
| 39 | |||
| 40 | # display options | ||
| 41 | enableval="" | ||
| 42 | AC_ARG_ENABLE( | ||
| 43 | warnings, | ||
| 44 | [AC_HELP_STRING([--disable-warnings], [disable compiler warnings])], | ||
| 45 | [ EWARNINGS=$enableval ], | ||
| 46 | [ EWARNINGS=$enableval ] | ||
| 47 | ) | ||
| 48 | enableval="" | ||
| 49 | AC_ARG_ENABLE( | ||
| 50 | strictwarnings, | ||
| 51 | [AC_HELP_STRING([--enable-strictwarnings], [enable strict compiler warnings])], | ||
| 52 | [ ESTRICTWARNINGS=$enableval ], | ||
| 53 | [ ESTRICTWARNINGS=$enableval ] | ||
| 54 | ) | ||
| 55 | |||
| 56 | # sets options | ||
| 57 | if test "x${ESTRICTWARNINGS}" != "xyes";then | ||
| 58 | USE_STRICTWARNINGS=no | ||
| 59 | else | ||
| 60 | USE_STRICTWARNINGS=yes | ||
| 61 | fi | ||
| 62 | if test "x${EWARNINGS}" != "xno";then | ||
| 63 | USE_WARNINGS=yes | ||
| 64 | else | ||
| 65 | USE_WARNINGS=no | ||
| 66 | USE_STRICTWARNINGS=no | ||
| 67 | fi | ||
| 68 | |||
| 69 | # list of args | ||
| 70 | ac_dms_warnings_list="" | ||
| 71 | if test "x${USE_WARNINGS}" == "xyes";then | ||
| 72 | ac_dms_warnings_list=" ${ac_dms_warnings_list} -W" | ||
| 73 | ac_dms_warnings_list=" ${ac_dms_warnings_list} -Wall" | ||
| 74 | ac_dms_warnings_list=" ${ac_dms_warnings_list} -Werror" | ||
| 75 | fi | ||
| 76 | if test "x${USE_STRICTWARNINGS}" == "xyes";then | ||
| 77 | ac_dms_warnings_list="${ac_dms_warnings_list} -std=gnu99" | ||
| 78 | ac_dms_warnings_list="${ac_dms_warnings_list} -pedantic" | ||
| 79 | #ac_dms_warnings_list="${ac_dms_warnings_list} -Wtraditional" | ||
| 80 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wpragma-once" | ||
| 81 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wextra-tokens" | ||
| 82 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wnewline-eof" | ||
| 83 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wsequence-point" | ||
| 84 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wdiv-by-zero" | ||
| 85 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wfloat-equal" | ||
| 86 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wdisabled-optimization" | ||
| 87 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wchar-subscripts" | ||
| 88 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wcomment" | ||
| 89 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wformat" | ||
| 90 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wimplicit" | ||
| 91 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wmain" | ||
| 92 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wmissing-braces" | ||
| 93 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wparentheses" | ||
| 94 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wreturn-type" | ||
| 95 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wswitch" | ||
| 96 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wswitch-default" # for some reason any call to memset() fails with this flag | ||
| 97 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wtrigraphs" | ||
| 98 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wunused" | ||
| 99 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wunknown-pragmas" | ||
| 100 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wuninitialized" | ||
| 101 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wmultichar" | ||
| 102 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wundef" | ||
| 103 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wendif-labels" | ||
| 104 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wshadow" | ||
| 105 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wlarger-than-4096" | ||
| 106 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wpointer-arith" | ||
| 107 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wbad-function-cast" | ||
| 108 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wcast-qual" | ||
| 109 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wcast-align" | ||
| 110 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wwrite-strings" | ||
| 111 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wconversion" | ||
| 112 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wsign-compare" | ||
| 113 | ac_dms_warnings_list="${ac_dms_warnings_list} -Waggregate-return" | ||
| 114 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wstrict-prototypes" | ||
| 115 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wstrict-aliasing" | ||
| 116 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wmissing-prototypes" | ||
| 117 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wmissing-declarations" | ||
| 118 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wmissing-noreturn" | ||
| 119 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wmissing-format-attribute" # vprintf is failing this warning | ||
| 120 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wredundant-decls" | ||
| 121 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wunreachable-code" | ||
| 122 | ac_dms_warnings_list="${ac_dms_warnings_list} -Winvalid-pch" | ||
| 123 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wpacked" | ||
| 124 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wpadded" | ||
| 125 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wnested-externs" | ||
| 126 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wenum-clash" | ||
| 127 | ac_dms_warnings_list="${ac_dms_warnings_list} -Winline" | ||
| 128 | ac_dms_warnings_list="${ac_dms_warnings_list} -Wlong-long" | ||
| 129 | fi | ||
| 130 | |||
| 131 | # creates test source code | ||
| 132 | AC_LANG_CONFTEST( | ||
| 133 | [AC_LANG_PROGRAM( | ||
| 134 | [[int main(void);]], | ||
| 135 | [[return(0);]] | ||
| 136 | )]) | ||
| 137 | |||
| 138 | # loops throough options | ||
| 139 | CFLAGS_WARNINGS="" | ||
| 140 | for ac_dms_warning in ${ac_dms_warnings_list};do | ||
| 141 | AC_MSG_CHECKING(for gcc flag ${ac_dms_warning}) | ||
| 142 | ${ac_dms_cc} ${CFLAGS_WARNINGS} ${ac_dms_warning} conftest.c -o conftest.o > /dev/null 2>&1 | ||
| 143 | if test "x$?" == "x0";then | ||
| 144 | CFLAGS_WARNINGS="${CFLAGS_WARNINGS} ${ac_dms_warning}" | ||
| 145 | AC_MSG_RESULT(yes) | ||
| 146 | else | ||
| 147 | AC_MSG_RESULT(no) | ||
| 148 | fi | ||
| 149 | done | ||
| 150 | |||
| 151 | # export variables | ||
| 152 | AC_SUBST(CFLAGS_WARNINGS, "$CFLAGS_WARNINGS") | ||
| 153 | ])dnl | ||
| 154 | |||
| 155 | |||
| 156 | # end of M4 file | ||
