Commit a11081085b9db8ee40236d47849276db71ba0801

Authored by Jay Berkenbilt
1 parent 32b62035

Handle warning flags better

Make --enable-werror work properly on msvc, handle extra warnings
flags for msvc in configure.ac instead of hardcoding into
make/msvc.mk, separate warnings flags into WFLAGS in autoconf.mk to
avoid duplication and to make it easier to override.
ChangeLog
... ... @@ -25,6 +25,15 @@
25 25  
26 26 2013-01-24 Jay Berkenbilt <ejb@ql.org>
27 27  
  28 + * Make --enable-werror work for MSVC, and generally handle warning
  29 + options better for that compiler. Warning flags for that compiler
  30 + were previous hard-coded into the build with /WX enabled
  31 + unconditionally.
  32 +
  33 + * Split warning flags into WFLAGS in autoconf.mk to make them
  34 + easier to override. Before they were repeated in CFLAGS and
  35 + CXXFLAGS and were commingled with other compiler flags.
  36 +
28 37 * qpdf --check now does syntactic checks all pages' content
29 38 streams as well as checking overall document structure. Semantic
30 39 errors are still not checked, and there are no plans to add
... ...
autoconf.mk.in
... ... @@ -12,12 +12,13 @@ docdir=@docdir@
12 12 htmldir=@htmldir@
13 13 pdfdir=@pdfdir
14 14 CC=@CC@
15   -CFLAGS=@CFLAGS@
  15 +WFLAGS=@WFLAGS@
  16 +CFLAGS=@CFLAGS@ $(WFLAGS)
16 17 LDFLAGS=@LDFLAGS@
17 18 LIBS=@LIBS@
18 19 CPPFLAGS=@CPPFLAGS@
19 20 CXX=@CXX@
20   -CXXFLAGS=@CXXFLAGS@
  21 +CXXFLAGS=@CXXFLAGS@ $(WFLAGS)
21 22 AR=@AR@
22 23 RANLIB=@RANLIB@
23 24 DLLTOOL=@DLLTOOL@
... ...
config-mingw32
1 1 #!/bin/sh
2   -./configure --disable-test-compare-images --enable-external-libs --with-windows-wordsize=32 --with-buildrules=mingw
  2 +./configure --disable-test-compare-images --enable-external-libs --enable-werror --with-windows-wordsize=32 --with-buildrules=mingw
3 3 # As of autoconf 2.69 and gcc 4.6, autoconf's configure fails to
4 4 # recognize that defining _FILE_OFFSET_BITS works with mingw32.
5 5 # Append to qpdf-config.h rather than passing CPPFLAGS on the
... ...
config-mingw64
1 1 #!/bin/sh
2   -./configure --disable-test-compare-images --enable-external-libs --with-windows-wordsize=64 --with-buildrules=mingw \
  2 +./configure --disable-test-compare-images --enable-external-libs --enable-werror --with-windows-wordsize=64 --with-buildrules=mingw \
3 3 CC=x86_64-w64-mingw32-gcc \
4 4 CXX=x86_64-w64-mingw32-g++ \
5 5 LD=x86_64-w64-mingw32-ld \
... ...
config-msvc
... ... @@ -8,4 +8,4 @@ objdump=
8 8 if test "$wordsize" = "64"; then
9 9 objdump=OBJDUMP=x86_64-w64-mingw32-objdump
10 10 fi
11   -CC=cl CXX="cl -TP -GR" ./configure --disable-test-compare-images --enable-external-libs --with-windows-wordsize=$wordsize --with-buildrules=msvc $objdump
  11 +CC=cl CXX="cl -TP -GR" ./configure --disable-test-compare-images --enable-external-libs --enable-werror --with-windows-wordsize=$wordsize --with-buildrules=msvc $objdump
... ...
configure.ac
... ... @@ -175,39 +175,48 @@ AC_ARG_WITH(buildrules,
175 175 [BUILDRULES=libtool])
176 176 AC_MSG_RESULT($BUILDRULES)
177 177  
178   -if test "$BUILDRULES" != "msvc"; then
179   - qpdf_USE_WALL=0
180   - AC_MSG_CHECKING(for whether $CC supports -Wall)
181   - oCFLAGS=$CFLAGS
182   - CFLAGS="$CFLAGS -Wall"
183   - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[int a = 1; int b = a; a = b;]])],
184   - [qpdf_USE_WALL=1],[qpdf_USE_WALL=0])
185   - if test "$qpdf_USE_WALL" = "1"; then
186   - AC_MSG_RESULT(yes)
187   - CXXFLAGS="$CXXFLAGS -Wall"
188   - else
189   - AC_MSG_RESULT(no)
190   - CFLAGS=$oCFLAGS
191   - fi
  178 +AC_SUBST(WFLAGS)
  179 +qpdf_USE_EXTRA_WARNINGS=0
  180 +if test "$BUILDRULES" = "msvc"; then
  181 + dnl /w14267 makes warning 4267 a level 1 warning. This warning reports
  182 + dnl potential issues between size_t, off_t, and non-compatible integer
  183 + dnl types.
  184 + try_flags="/w14267"
  185 +else
  186 + try_flags="-Wall"
  187 +fi
  188 +AC_MSG_CHECKING(for whether $CC supports $try_flags)
  189 +oCFLAGS=$CFLAGS
  190 +CFLAGS="$CFLAGS $try_flags"
  191 +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[int a = 1; int b = a; a = b;]])],
  192 + [qpdf_USE_EXTRA_WARNINGS=1],[qpdf_USE_EXTRA_WARNINGS=0])
  193 +CFLAGS=$oCFLAGS
  194 +if test "$qpdf_USE_EXTRA_WARNINGS" = "1"; then
  195 + AC_MSG_RESULT(yes)
  196 + WFLAGS="$try_flags"
  197 +else
  198 + AC_MSG_RESULT(no)
192 199 fi
193 200  
194   -if test "$BUILDRULES" != "msvc"; then
195   - AC_MSG_CHECKING(for whether to use -Werror)
196   - AC_ARG_ENABLE(werror,
197   - AS_HELP_STRING([--enable-werror],
198   - [whether to use werror (default is no)]),
199   - [if test "$enableval" = "yes"; then
200   - qpdf_USE_WERROR=1;
201   - else
202   - qpdf_USE_WERROR=0;
203   - fi], [qpdf_USE_WERROR=0])
204   - if test "$qpdf_USE_WERROR" = "1"; then
205   - AC_MSG_RESULT(yes)
206   - CFLAGS="$CFLAGS -Werror"
207   - CXXFLAGS="$CXXFLAGS -Werror"
208   - else
209   - AC_MSG_RESULT(no)
210   - fi
  201 +if test "$BUILDRULES" = "msvc"; then
  202 + try_flags="/WX"
  203 +else
  204 + try_flags="-Werror"
  205 +fi
  206 +AC_MSG_CHECKING(for whether to use $try_flags)
  207 +AC_ARG_ENABLE(werror,
  208 + AS_HELP_STRING([--enable-werror],
  209 + [whether to treat warnings as errors (default is no)]),
  210 + [if test "$enableval" = "yes"; then
  211 + qpdf_USE_WERROR=1;
  212 + else
  213 + qpdf_USE_WERROR=0;
  214 + fi], [qpdf_USE_WERROR=0])
  215 +if test "$qpdf_USE_WERROR" = "1"; then
  216 + AC_MSG_RESULT(yes)
  217 + WFLAGS="$WFLAGS $try_flags"
  218 +else
  219 + AC_MSG_RESULT(no)
211 220 fi
212 221  
213 222 AC_SUBST(QPDF_SKIP_TEST_COMPARE_IMAGES)
... ...
make/msvc.mk
... ... @@ -19,16 +19,6 @@ endef
19 19 CFLAGS := $(filter-out -g,$(CFLAGS))
20 20 CXXFLAGS := $(filter-out -g,$(CXXFLAGS))
21 21  
22   -# /WX makes all warnings errors.
23   -CFLAGS += /WX
24   -CXXFLAGS += /WX
25   -
26   -# /w14267 makes warning 4267 a level 1 warning. This warning reports
27   -# potential issues between size_t, off_t, and non-compatible integer
28   -# types.
29   -CFLAGS += /w14267
30   -CXXFLAGS += /w14267
31   -
32 22 clean::
33 23 $(RM) *.pdb
34 24  
... ...