beta-0.89.2
[luatex.git] / source / m4 / kpse-warnings.m4
blob523a5353584a9f23d6e83379152c75bcf87d5073
1 # Public macros for the TeX Live (TL) tree.
2 # Copyright (C) 2009-2015 Peter Breitenlohner <tex-live@tug.org>
4 # This file is free software; the copyright holder
5 # gives unlimited permission to copy and/or distribute it,
6 # with or without modifications, as long as this notice is preserved.
8 # KPSE_COMPILER_WARNINGS
9 # ----------------------
10 # Set up compiler warnings for (Objective) C and (Objective) C++.
11 # This macro determines and substitutes WARNING_CFLAGS for the C compiler
12 # and, if applicable, WARNING_CXXFLAGS for the C++ compiler. To activate
13 # them a Makefile.am must use them, e.g., in AM_CFLAGS or AM_CXXFLAGS.
14 AC_DEFUN([KPSE_COMPILER_WARNINGS],
15 [AC_REQUIRE([_KPSE_COMPILER_WARNINGS_OPTION])[]dnl
16 dnl arrange that AC_PROG_CC uses _KPSE_WARNING_CFLAGS etc.
17 AC_PROVIDE_IFELSE([AC_PROG_CC],
18                   [_KPSE_WARNING_CFLAGS],
19                   [m4_define([AC_PROG_CC],
20                              m4_defn([AC_PROG_CC])[_KPSE_WARNING_CFLAGS
21 ])])
22 AC_PROVIDE_IFELSE([AC_PROG_CXX],
23                   [_KPSE_WARNING_CXXFLAGS],
24                   [m4_define([AC_PROG_CXX],
25                              m4_defn([AC_PROG_CXX])[_KPSE_WARNING_CXXFLAGS
26 ])])
27 AC_PROVIDE_IFELSE([AC_PROG_OBJC],
28                   [_KPSE_WARNING_OBJCFLAGS],
29                   [m4_define([AC_PROG_OBJC],
30                              m4_defn([AC_PROG_OBJC])[_KPSE_WARNING_OBJCFLAGS
31 ])])
32 AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
33                   [_KPSE_WARNING_OBJCXXFLAGS],
34                   [m4_define([AC_PROG_OBJCXX],
35                              m4_defn([AC_PROG_OBJCXX])[_KPSE_WARNING_OBJCXXFLAGS
36 ])])
37 ]) # KPSE_COMPILER_WARNINGS
39 # _KPSE_COMPILER_WARNINGS_OPTION
40 # ------------------------------
41 # Internal subroutine.
42 # Provide configure option `--enable-compiler-warnings=[no|min|yes|max|all]'
43 # to enable various degrees of compiler warnings.
44 AC_DEFUN([_KPSE_COMPILER_WARNINGS_OPTION],
45 [AC_ARG_ENABLE([compiler-warnings],
46                 AS_HELP_STRING([--enable-compiler-warnings=@<:@no|min|yes|max|all@:>@],
47                                [Turn on compiler warnings @<:@default: yes if maintainer-mode,
48                                 min otherwise@:>@]))[]dnl
49 AS_CASE([$enable_compiler_warnings],
50         [no | min | yes | max | all], [],
51         [AS_IF([test "x$enable_maintainer_mode" = xyes],
52                [enable_compiler_warnings=yes],
53                [enable_compiler_warnings=min])])
54 ]) # _KPSE_COMPILER_WARNINGS_OPTION
56 _KPSE_WARNING_CFLAGS
57 # ------------------
58 # Internal subroutine.
59 # Determine and substitute WARNING_CFLAGS for C compiler.
60 AC_DEFUN([_KPSE_WARNING_CFLAGS],
61 [AC_REQUIRE([_KPSE_COMPILER_WARNINGS_OPTION])[]dnl
62 AC_REQUIRE([AC_PROG_CC])[]dnl
63 AC_CACHE_CHECK([what warning flags to pass to the C compiler],
64                [kpse_cv_warning_cflags],
65                [dnl
66 if test "x$GCC" = xyes; then
67   _KPSE_WARNING_GNU_CFLAGS([CC], [cflags])[]dnl
68 elif test "x$enable_compiler_warnings" = xno; then
69   kpse_cv_warning_cflags=
70 else
71   kpse_cv_warning_cflags= # FIXME: warning flags for non-GNU C compilers
72 fi])
73 WARNING_CFLAGS=$kpse_cv_warning_cflags
74 AC_SUBST([WARNING_CFLAGS])
75 m4_define([_KPSE_WARNING_CFLAGS], [])[]dnl
76 ]) # _KPSE_WARNING_CFLAGS
78 # _KPSE_WARNING_CXXFLAGS
79 # ----------------------
80 # Internal subroutine.
81 # Determine and substitute WARNING_CXXFLAGS for C++ compiler.
82 m4_define([_KPSE_WARNING_CXXFLAGS],
83 [AC_CACHE_CHECK([what warning flags to pass to the C++ compiler],
84                 [kpse_cv_warning_cxxflags],
85                 [dnl
86 if test "x$GXX" = xyes; then
87   _KPSE_WARNING_GNU_CXXFLAGS([CXX], [cxxflags])[]dnl
88 elif test "x$enable_compiler_warnings" = xno; then
89   kpse_cv_warning_cxxflags=
90 else
91   kpse_cv_warning_cxxflags= # FIXME: warning flags for non-GNU C++ compilers
92 fi])
93 WARNING_CXXFLAGS=$kpse_cv_warning_cxxflags
94 AC_SUBST([WARNING_CXXFLAGS])
95 m4_define([_KPSE_WARNING_CXXFLAGS], [])[]dnl
96 ]) # _KPSE_WARNING_CXXFLAGS
98 _KPSE_WARNING_OBJCFLAGS
99 # ---------------------
100 # Internal subroutine.
101 # Determine and substitute WARNING_OBJCFLAGS for Objective C compiler.
102 AC_DEFUN([_KPSE_WARNING_OBJCFLAGS],
103 [AC_REQUIRE([_KPSE_COMPILER_WARNINGS_OPTION])[]dnl
104 AC_REQUIRE([AC_PROG_OBJC])[]dnl
105 AC_CACHE_CHECK([what warning flags to pass to the Objective C compiler],
106                [kpse_cv_warning_objcflags],
107                [dnl
108 if test "x$GOBJC" = xyes; then
109   _KPSE_WARNING_GNU_CFLAGS([OBJC], [objcflags])[]dnl
110 elif test "x$enable_compiler_warnings" = xno; then
111   kpse_cv_warning_objcflags=
112 else
113   kpse_cv_warning_objcflags= # FIXME: warning flags for non-GNU Objective C compilers
114 fi])
115 WARNING_OBJCFLAGS=$kpse_cv_warning_objcflags
116 AC_SUBST([WARNING_OBJCFLAGS])
117 m4_define([_KPSE_WARNING_OBJCFLAGS], [])[]dnl
118 ]) # _KPSE_WARNING_OBJCFLAGS
120 _KPSE_WARNING_OBJCXXFLAGS
121 # -----------------------
122 # Internal subroutine.
123 # Determine and substitute WARNING_OBJCXXFLAGS for Objective C++ compiler.
124 AC_DEFUN([_KPSE_WARNING_OBJCXXFLAGS],
125 [AC_REQUIRE([_KPSE_COMPILER_WARNINGS_OPTION])[]dnl
126 AC_REQUIRE([AC_PROG_OBJCXX])[]dnl
127 AC_CACHE_CHECK([what warning flags to pass to the Objective C++ compiler],
128                [kpse_cv_warning_objcxxflags],
129                [dnl
130 if test "x$GOBJCXX" = xyes; then
131   _KPSE_WARNING_GNU_CXXFLAGS([OBJCXX], [objcxxflags])[]dnl
132 elif test "x$enable_compiler_warnings" = xno; then
133   kpse_cv_warning_objcxxflags=
134 else
135   kpse_cv_warning_objcxxflags= # FIXME: warning flags for non-GNU Objective C++ compilers
136 fi])
137 WARNING_OBJCXXFLAGS=$kpse_cv_warning_objcxxflags
138 AC_SUBST([WARNING_OBJCXXFLAGS])
139 m4_define([_KPSE_WARNING_OBJCXXFLAGS], [])[]dnl
140 ]) # _KPSE_WARNING_OBJCXXFLAGS
142 # _KPSE_WARNING_GNU_CFLAGS(COMPILER, TAG)
143 # ---------------------------------------
144 # Internal subroutine.
145 # Determine warning flags for GNU (Objective) C compiler.
146 m4_define([_KPSE_WARNING_GNU_CFLAGS],
147 [kpse_cv_warning_$2=
148 if test "x$enable_compiler_warnings" != xno; then
149   kpse_cv_warning_$2="-Wimplicit -Wreturn-type"
150   AS_CASE([`$[]$1 -dumpversion`],
151           [3.4.* | 4.* | 5.*],
152           [kpse_cv_warning_$2="$kpse_cv_warning_$2 -Wdeclaration-after-statement"])
153   AS_CASE([`$[]$1 -dumpversion`],
154           [3.@<:@234@:>@.* | 4.* | 5.*],
155           [kpse_cv_warning_$2="$kpse_cv_warning_$2 -Wno-unknown-pragmas"])
156   if test "x$enable_compiler_warnings" != xmin; then
157     kpse_cv_warning_$2="-Wall -Wunused $kpse_cv_warning_$2"
158     kpse_cv_warning_$2="$kpse_cv_warning_$2 -Wmissing-prototypes -Wmissing-declarations"
159     if test "x$enable_compiler_warnings" != xyes; then
160       kpse_cv_warning_$2="$kpse_cv_warning_$2 -Wparentheses -Wswitch -Wtrigraphs -Wpointer-arith"
161       kpse_cv_warning_$2="$kpse_cv_warning_$2 -Wcast-qual -Wcast-align -Wwrite-strings"
162       AS_CASE([`$[]$1 -dumpversion`],
163               [3.4.* | 4.* | 5.*],
164               [kpse_cv_warning_$2="$kpse_cv_warning_$2 -Wold-style-definition"])
165       if test "x$enable_compiler_warnings" != xmax; then
166         kpse_cv_warning_$2="$kpse_cv_warning_$2 -Wshadow"
167       fi
168     fi
169   fi
171 ]) # _KPSE_WARNING_GNU_CFLAGS
173 # _KPSE_WARNING_GNU_CXXFLAGS(COMPILER, TAG)
174 # -----------------------------------------
175 # Internal subroutine.
176 # Determine warning flags for GNU (Objective) C++ compiler.
177 m4_define([_KPSE_WARNING_GNU_CXXFLAGS],
178 [kpse_cv_warning_$2=
179 kpse_warn_strings="-Wno-write-strings"
180 if test "x$enable_compiler_warnings" != xno; then
181   kpse_cv_warning_$2="-Wreturn-type"
182   AS_CASE([`$[]$1 -dumpversion`],
183           [3.* | 4.@<:@012345@:>@.*],
184           [kpse_cv_warning_$2="-Wimplicit $kpse_cv_warning_$2"])
185   AS_CASE([`$[]$1 -dumpversion`],
186           [3.@<:@234@:>@.* | 4.* | 5.*],
187           [kpse_cv_warning_$2="$kpse_cv_warning_$2 -Wno-unknown-pragmas"])
188   if test "x$enable_compiler_warnings" != xmin; then
189     kpse_cv_warning_$2="-Wall -Wunused $kpse_cv_warning_$2"
190     if test "x$enable_compiler_warnings" != xyes; then
191       kpse_cv_warning_$2="$kpse_cv_warning_$2 -Wparentheses -Wswitch -Wtrigraphs -Wpointer-arith"
192       kpse_cv_warning_$2="$kpse_cv_warning_$2 -Wcast-qual -Wcast-align"
193       kpse_warn_strings="-Wwrite-strings"
194       if test "x$enable_compiler_warnings" != xmax; then
195         kpse_cv_warning_$2="$kpse_cv_warning_$2 -Wshadow"
196       fi
197     fi
198   fi
200 kpse_cv_warning_$2="$kpse_cv_warning_$2 $kpse_warn_strings"
201 ]) # _KPSE_WARNING_GNU_CXXFLAGS