Hi, We've achieved an important and symbolic milestone that will mean something to developers: most of our (Unix) builds are warning free (for the library + utilities) ! That is they pass with -Wall -Wextra -Werror compiler options. Not bad for a ~ 400 K effective line of code project ( ~ 800 K, with white lines + comments).
So celebrate that and please keep it that way now ! And thanks to all those who have helped achieving this. More specifically ./configure will enable -Wall -Wextra and other warnings (- Winit-self -Wunused-parameter -Wmissing-prototypes -Wmissing-declarations - Wformat -Werror=format-security -Wno-format-nonliteral -Werror=vla - Werror=declaration-after-statement -Wno-clobbered -Wunused-private-field), but *not* with -Werror (-Werror means that any warning will be interpreted as an error and fail the build). I haven't dared enabling -Werror by default due to the almost infinite possible configurations (choice of dependencies x choice of compilers) that make it impossible to be sure there isn't one that will throw some warning. I was wondering if we couldn't have a --enable-werror option that could default to yes for --enable-debug builds (and no for regular builds), so that developers have no excuse to commit warnings ? Trick to use -Werror: "make USER_DEFS=-Werror". You can also do CPPFLAGS=- Werror ./configure , but that may interfere with the detection of some libraries. Most Travis CI builds have already -Werror enabled : - the default one : https://travis-ci.org/OSGeo/gdal (thus github pull requests will be affected by that too) - and at https://travis-ci.org/rouault/gdal_coverage/builds : * trunk_with_coverage * python3 * trunk_travis_macosx * trunk_mingw * trunk_mingw_w64 * trunk_android * trunk_gcc4.8_stdc11 so everything but trunk_gcc5.2_sanitize since gcc 5.2 warns about our own deprecated symbols for some reason So even if your configuration is warning free, it is important to keep an eye on the above links (or IRC bot messages). Making sure we don't hit warnings is important since it can save bugs in practice. For example, the class of bugs to which one reported yesterday (https://trac.osgeo.org/gdal/ticket/6183) belongs to will no longer be possible with the added -Wmissing-prototypes and -Wmissing-declarations. Even PS: I had issues with most proprietary SDK whose headers are not warning free. A trick is to create a .h wrapper on top of which you put this before including the SDK headers, so as to shut all warnings for the rest of the file : #ifdef HAVE_GCC_SYSTEM_HEADER #pragma GCC system_header #endif (will work too with clang) See https://svn.osgeo.org/gdal/trunk/gdal/ogr/ogrsf_frmts/filegdb/filegdbsdk_headers.h -- Spatialys - Geospatial professional services http://www.spatialys.com _______________________________________________ gdal-dev mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/gdal-dev
