GitHub user simonsouth opened a pull request: https://github.com/apache/thrift/pull/577
THRIFT-3288 c glib build unit tests with all warnings enabled **Note:** This pull request includes the changes from request #576 (to fix THRIFT-3285), which should be applied first. These changes - Update the C (GLib) unit tests' Makefile so - Compiler-flag variables are used correctly according to automake's documentation and - The same comprehensive set of compiler warnings is enabled as is used for the C++ unit tests, and - Update the unit tests so they build without generating any compiler warnings. As a bonus, the final commit gently refactors several compiler functions changed as part of this work, primarily to improve readability and to more consistently use helper functions for formatting rather than embed formatting directly in the output. You can merge this pull request into a Git repository by running: $ git pull https://github.com/simonsouth/thrift thrift-3288-c_glib_build-unit-tests-with-all-warnings-enabled Alternatively you can review and apply these changes as the patch at: https://github.com/apache/thrift/pull/577.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #577 ---- commit e8576592a47bb23cb18193aa4a3e735a0267361e Author: Simon South <sso...@simonsouth.com> Date: 2015-08-01T17:00:50Z c_glib: Library: Use AM_CPPFLAGS for include paths, not AM_CFLAGS This follows the description of the two variables in the automake documentation. commit a9d4f38364377810d5dcd0213237d4788d6a5d5b Author: Simon South <sso...@simonsouth.com> Date: 2015-08-01T17:05:08Z c_glib: Library: Build with all warnings enabled This matches the settings ("-Wall -Wextra -pedantic") used to build the C++ library. commit 8c046440b4c3135b489f1676460081fc1e3a77ec Author: Simon South <sso...@simonsouth.com> Date: 2015-08-01T18:33:20Z c_glib: Library: Build without compiler warnings These changes allow the C (GLib) library to be built without warnings from the compiler, even with extra compiler warnings enabled. The changes involve - Moving variable declarations to the top of every code block, - Using unions instead of type-punning to follow strict-aliasing rules, - Replacing variable-length array declarations with arrays allocated on the stack (using g_newa and g_alloca), - Casting void pointers to a suitably sized data type before performing arithmetic on them, - Replacing C++-style ("//") comments with C-style equivalents, and - Removing an errant semicolon and comma. commit dee826a4da55375e689601e1038f3ba7e254f933 Author: Simon South <sso...@simonsouth.com> Date: 2015-08-01T12:18:12Z Makefile.am: Enable warnings, improve automake-variable use This change - Enables the same comprehensive set of warnings ("-Wall -Wextra -pedantic") specified for the unit tests for C++ and - Changes the use of automake variables (e.g. AM_CPPFLAGS) to more closely match their intended use, as specified in the automake documentation. commit adc9bfa70e1878934d74d896310adaa6d434e83a Author: Simon South <sso...@simonsouth.com> Date: 2015-08-01T14:33:17Z c_glib: Compiler: Don't mix declarations and code This change moves variable declarations to the top of code blocks in the generated code, resolving a number of "ISO C90 forbids mixed declarations and code" warnings when building the unit tests. commit a2a809654ae42775d454aeb6a33009447ae64564 Author: Simon South <sso...@simonsouth.com> Date: 2015-08-01T14:53:22Z c_glib: Compiler: Silence unused-parameter warnings This change modifies the generated class and interface initializers so they don't generate "unused parameter" warnings when compiled. commit 0927b0f715023c67f4e755dbbca2ce16d2fee6fe Author: Simon South <sso...@simonsouth.com> Date: 2015-08-03T10:51:16Z c_glib: Build unit tests without compiler warnings These changes allow the unit tests for C (GLib) to build without compiler warnings, even with additional warnings enabled. They include - Disabling string-function optimizations when glibc is used, as these produce compiler warnings when a string function is used within a call to assert (); - Remove the "LL" suffix (added in C99) from 64-bit integer literals; - Replace C++-style ("//") comments with C-style equivalents; - Remove unused constant declarations that generated warnings; and - Mark (or remove, from main ()) unused function parameters. commit f913bf03c78955afb0f0fcf3368feca8c7ab8f0c Author: Simon South <sso...@simonsouth.com> Date: 2015-08-03T11:11:29Z c_glib: Compiler: Gently refactor functions This change gently refactors a handful of recently modified functions to - Wrap lines at 80 columns, - Improve readability (making the layout of the compiler's source code more closely match that of the code it's generating), - Use more consistently the indent_up/indent_down and scope_up/scope_down helper functions rather than embedding formatting characters directly, and - Improve slightly the formatting of the generated code. ---- --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---