Work around gcc 5 warnings with Google Test
authorMark Abraham <mark.j.abraham@gmail.com>
Thu, 7 May 2015 13:57:10 +0000 (15:57 +0200)
committerGerrit Code Review <gerrit@gerrit.gromacs.org>
Mon, 11 May 2015 19:23:36 +0000 (21:23 +0200)
There are new unused-variable warnings issued by gcc 5 from constructs
used in Google Test code, and we don't want to see them.

Change-Id: Ia3ff6b8f3ca699f0ef72c003e7359703367e5c5c

src/external/gmock-1.7.0/CMakeLists.txt
src/testutils/TestMacros.cmake

index c31ccf06877d249fa46135673594ef12ea30d952..58b57098ab124088b61681958af61bec1043349c 100644 (file)
@@ -1,7 +1,7 @@
 #
 # This file is part of the GROMACS molecular simulation package.
 #
-# Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by
+# Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by
 # Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
 # and including many others, as listed in the AUTHORS file in the
 # top-level source directory and at http://www.gromacs.org.
 # As stated in README.Gromacs, this file is not part of GMock, but is written
 # specifically for the GROMACS build system from scratch.
 
+include(CheckCXXCompilerFlag)
+check_cxx_compiler_flag("-Wno-unused-variable" HAS_NO_UNUSED_VARIABLE)
+
+# Avoid compiler warnings with GCC 5, which doesn't like the way
+# Google Test makes int variables that hold the results of
+# value-parameterized test registration calls, and then doesn't use
+# them. Because these definitions are created by the
+# test-instantiation macros, there's no good way to suppress them;
+# we'd prefer to avoid modifying Google Test source, and don't wish to
+# embed compiler-specific suppressions in all our test-code source
+# files.
+#
+# TODO When updating the embedded Google Test version in future, check
+# if this is still needed
+#
+# TODO If other compilers start complaining similarly, consider a
+# unilateral suppression, like we use for the Google Mock source code
+# itself.
+if(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5")
+    if(HAS_NO_UNUSED_VARIABLE)
+        set(GMOCK_COMPILE_FLAGS "-Wno-unused-variable")
+    endif()
+endif()
+
 include(gmxGetGmockTupleWorkaround)
 get_gmock_tuple_workaround(GMOCK_COMPILE_DEFINITIONS)
 set(GMOCK_COMPILE_DEFINITIONS "_GNU_SOURCE=1;${GMOCK_COMPILE_DEFINITIONS}")
-set(GMOCK_COMPILE_DEFINITIONS ${GMOCK_COMPILE_DEFINITIONS} PARENT_SCOPE)
+
+set(GMOCK_COMPILE_DEFINITIONS "${GMOCK_COMPILE_DEFINITIONS}" PARENT_SCOPE)
+set(GMOCK_COMPILE_FLAGS "${GMOCK_COMPILE_FLAGS}" PARENT_SCOPE)
 
 # GTest/GMock suggest linking with pthreads when available for thread safety
 set(CMAKE_THREAD_PREFER_PTHREAD 1)
@@ -61,14 +87,13 @@ include_directories(BEFORE ${GTEST_DIR})
 include_directories(BEFORE ${GMOCK_INCLUDE_DIRS})
 include_directories(BEFORE ${GMOCK_DIR})
 
-include(CheckCXXCompilerFlag)
-check_cxx_compiler_flag(-Wno-unused-variable HAS_NO_UNUSED_VARIABLE)
 if (HAS_NO_UNUSED_VARIABLE)
     set_source_files_properties(${GTEST_SOURCES} PROPERTIES COMPILE_FLAGS "-Wno-unused-variable")
 endif()
 
 add_library(gmock STATIC ${UNITTEST_TARGET_OPTIONS} ${GMOCK_SOURCES} ${GTEST_SOURCES})
 set_property(TARGET gmock APPEND PROPERTY COMPILE_DEFINITIONS "${GMOCK_COMPILE_DEFINITIONS};GTEST_CAN_STREAM_RESULTS=0")
+set_property(TARGET gmock APPEND PROPERTY COMPILE_FLAGS "${GMOCK_COMPILE_FLAGS}")
 
 set(GMOCK_LIBRARIES gmock ${PTHREADS_LIBRARIES} PARENT_SCOPE)
 set(GTEST_LIBRARIES ${GMOCK_LIBRARIES} PARENT_SCOPE)
index b3acdbefd16539468521696d034ef14e18d7900b..699ded9885c4643234c095d1be267855efed16cc 100644 (file)
@@ -1,7 +1,7 @@
 #
 # This file is part of the GROMACS molecular simulation package.
 #
-# Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by
+# Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by
 # Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
 # and including many others, as listed in the AUTHORS file in the
 # top-level source directory and at http://www.gromacs.org.
@@ -37,6 +37,7 @@ function (gmx_add_unit_test_object_library NAME)
         include_directories(BEFORE ${GMOCK_INCLUDE_DIRS})
         add_library(${NAME} OBJECT ${UNITTEST_TARGET_OPTIONS} ${ARGN})
         set_property(TARGET ${NAME} APPEND PROPERTY COMPILE_DEFINITIONS "${GMOCK_COMPILE_DEFINITIONS}")
+        set_property(TARGET ${NAME} APPEND PROPERTY COMPILE_FLAGS "${GMOCK_COMPILE_FLAGS}")
     endif()
 endfunction ()
 
@@ -45,6 +46,7 @@ function (gmx_build_unit_test NAME EXENAME)
         include_directories(BEFORE ${GMOCK_INCLUDE_DIRS})
         add_executable(${EXENAME} ${UNITTEST_TARGET_OPTIONS} ${ARGN} ${TESTUTILS_DIR}/unittest_main.cpp)
         set_property(TARGET ${EXENAME} APPEND PROPERTY COMPILE_DEFINITIONS "${GMOCK_COMPILE_DEFINITIONS}")
+        set_property(TARGET ${EXENAME} APPEND PROPERTY COMPILE_FLAGS "${GMOCK_COMPILE_FLAGS}")
         target_link_libraries(${EXENAME} ${TESTUTILS_LIBS} libgromacs ${GMOCK_LIBRARIES} ${GMX_EXE_LINKER_FLAGS})
         set(_temporary_files_path "${CMAKE_CURRENT_BINARY_DIR}/Testing/Temporary")
         file(MAKE_DIRECTORY ${_temporary_files_path})