From 028e214458d1b710de77360582b6239da434efa0 Mon Sep 17 00:00:00 2001 From: Jeongseok Lee Date: Thu, 21 Apr 2016 18:08:35 -0400 Subject: [PATCH 1/3] Configure Travis to treat warnings as errors --- .travis.yml | 6 +++--- CMakeLists.txt | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 66ece4e2b46a3..fe7c004b82c3c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,8 +13,8 @@ compiler: - clang env: - - BUILD_TYPE=Debug COVERALLS=ON COVERALLS_REPO_TOKEN=FKh1HgwfV5uzNrYxIT6ZWjcFqybYZSUym - - BUILD_TYPE=Release COVERALLS=OFF + - BUILD_TYPE=Debug TREAT_WARNINGS_AS_ERRORS=ON COVERALLS=ON COVERALLS_REPO_TOKEN=FKh1HgwfV5uzNrYxIT6ZWjcFqybYZSUym + - BUILD_TYPE=Release TREAT_WARNINGS_AS_ERRORS=ON COVERALLS=OFF matrix: exclude: @@ -27,7 +27,7 @@ install: script: - mkdir build && cd build - - cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DDART_COVERALLS=$COVERALLS .. + - cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DDART_TREAT_WARNINGS_AS_ERRORS=$TREAT_WARNINGS_AS_ERRORS -DDART_COVERALLS=$COVERALLS .. - make -j4 all tutorials examples tests test - if [ $COVERALLS = ON ] && [ "$TRAVIS_OS_NAME" = "linux" ]; then make -j4 coveralls; fi diff --git a/CMakeLists.txt b/CMakeLists.txt index e51eb2db060b6..4e4ccd1a5ab6a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -72,6 +72,7 @@ endif() option(DART_BUILD_GUI_OSG "Build osgDart library" ON) option(DART_COVERALLS "Turn on coveralls support" OFF) option(DART_COVERALLS_UPLOAD "Upload the generated coveralls json" ON) +option(DART_TREAT_WARNINGS_AS_ERRORS "Treat warnings as errors" OFF) if(DART_COVERALLS) include(Coveralls) @@ -141,6 +142,9 @@ if(MSVC) if(MSVC_VERSION VERSION_LESS 1900) message(FATAL_ERROR "${PROJECT_NAME} requires VS 2015 or greater.") endif() + if(DART_TREAT_WARNINGS_AS_ERRORS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX") + endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP4") set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /INCREMENTAL:NO") if(NOT DART_MSVC_DEFAULT_OPTIONS) @@ -148,6 +152,9 @@ if(MSVC) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${DART_RUNTIME_LIBRARY} /Zi /GL /Gy /W1 /EHsc /arch:SSE2") endif(NOT DART_MSVC_DEFAULT_OPTIONS) elseif(CMAKE_COMPILER_IS_GNUCXX) + if(DART_TREAT_WARNINGS_AS_ERRORS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") + endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -msse2 -fPIC") execute_process( COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) @@ -162,6 +169,9 @@ elseif(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELEASE} ${CMAKE_CXX_FLAGS_DEBUG}") set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_DEBUG} -pg") elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + if(DART_TREAT_WARNINGS_AS_ERRORS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") + endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -fPIC") execute_process( COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE CLANG_VERSION) From 4fb1b7fe49ae3eb8cfa3d1b40bbec27caae36064 Mon Sep 17 00:00:00 2001 From: Jeongseok Lee Date: Thu, 21 Apr 2016 18:23:26 -0400 Subject: [PATCH 2/3] Turn deprecated warning into an warning for mac even if -Werror is specified --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e4ccd1a5ab6a..05bd159e9b835 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -170,7 +170,9 @@ elseif(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_DEBUG} -pg") elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") if(DART_TREAT_WARNINGS_AS_ERRORS) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wno-error=deprecated-declarations") + # Turn warning "deprecated-declarations" into an warning even if -Werror is + # specified until we abandon glut. endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -fPIC") execute_process( From 439de079a4c996149d431d4c790bf2c51e472d4f Mon Sep 17 00:00:00 2001 From: Jeongseok Lee Date: Thu, 21 Apr 2016 18:24:33 -0400 Subject: [PATCH 3/3] Fix missing override specifiers --- dart/gui/OpenGLRenderInterface.h | 2 +- dart/gui/osg/TrackballManipulator.h | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dart/gui/OpenGLRenderInterface.h b/dart/gui/OpenGLRenderInterface.h index 51ec36ed0424f..14468a38fb01a 100644 --- a/dart/gui/OpenGLRenderInterface.h +++ b/dart/gui/OpenGLRenderInterface.h @@ -89,7 +89,7 @@ class OpenGLRenderInterface : public RenderInterface { void drawCube(const Eigen::Vector3d& _size) override; void drawCylinder(double _radius, double _height) override; void drawMesh(const Eigen::Vector3d& _scale, const aiScene* _mesh) override; - void drawSoftMesh(const aiMesh* mesh); + void drawSoftMesh(const aiMesh* mesh) override; void drawList(GLuint index) override; void drawLineSegments(const std::vector& _vertices, const Eigen::aligned_vector& _connections) override; diff --git a/dart/gui/osg/TrackballManipulator.h b/dart/gui/osg/TrackballManipulator.h index 2bc2ae197a58a..8eddbf8d8db85 100644 --- a/dart/gui/osg/TrackballManipulator.h +++ b/dart/gui/osg/TrackballManipulator.h @@ -44,11 +44,11 @@ namespace gui { namespace osg { #define DART_META_Object(library,name) \ - virtual ::osg::Object* cloneType() const { return new name (); } \ - virtual ::osg::Object* clone(const ::osg::CopyOp& copyop) const { return new name (*this,copyop); } \ - virtual bool isSameKindAs(const ::osg::Object* obj) const { return dynamic_cast(obj)!=NULL; } \ - virtual const char* libraryName() const { return #library; }\ - virtual const char* className() const { return #name; } + ::osg::Object* cloneType() const override { return new name (); } \ + ::osg::Object* clone(const ::osg::CopyOp& copyop) const override { return new name (*this,copyop); } \ + bool isSameKindAs(const ::osg::Object* obj) const override { return dynamic_cast(obj)!=NULL; } \ + const char* libraryName() const override { return #library; }\ + const char* className() const override { return #name; } // TODO(JS): Copied from osg/Object. Due to the namespace conflict between osg // and dart::gui::osg, we need to explicitly specify the root namespace osg as // ::osg