@@ -60,6 +60,7 @@ caffe_option(USE_SYSTEMTAP "Build for SystemTap" OFF)
6060caffe_option(PERFORMANCE_MONITORING "Build Caffe with PERFORMANCE_MONITORING " OFF )
6161#caffe_option(USE_GITHUB_MKLDNN "Download and use MKL-DNN available on github" OFF)
6262caffe_option(CODE_COVERAGE "Build with code coverage instrumentation" OFF )
63+ caffe_option(WARNING_AS_ERROR "Build with warnings treated as errors" ON )
6364caffe_option(CO_SIM "Build readonly cpu blob data/diff pycaffe interface" OFF )
6465caffe_option(USE_MLSL "Build Caffe with Intel(r) Machine Learning Scaling Library for multinode training" ON )
6566caffe_option(ICC_STATIC_BUILD "Build Intel Caffe static link with Intel compiler" OFF )
@@ -87,18 +88,18 @@ if(MSVC)
8788 endif ()
8889elseif (UNIX OR APPLE )
8990 # Linker flags.
90- if ( ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel" )
91+ if ( ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel" )
9192 # GCC specific flags. ICC is compatible with them.
9293 set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -z noexecstack -z relro -z now" )
9394 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -z noexecstack -z relro -z now" )
94- elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" )
95+ elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" )
9596 # In Clang, -z flags are not compatible, they need to be passed to linker via -Wl.
9697 set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now" )
9798 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now" )
9899 endif ()
99-
100+
100101 # Compiler flags.
101- if ( ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" )
102+ if ( ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" )
102103 # GCC specific flags.
103104 if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 4.9)
104105 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE -fstack-protector-strong" )
@@ -107,11 +108,11 @@ elseif(UNIX OR APPLE)
107108 else ()
108109 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE -fstack-protector" )
109110 endif ()
110- elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" )
111+ elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" )
111112 # Clang is compatbile with some of the flags.
112113 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE -fstack-protector" )
113- elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel" )
114- # Same as above, with exception that ICC compilation crashes with -fPIE option, even
114+ elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel" )
115+ # Same as above, with exception that ICC compilation crashes with -fPIE option, even
115116 # though it uses -pie linker option that require -fPIE during compilation. Checksec
116117 # shows that it generates correct PIE anyway if only -pie is provided.
117118 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector -wd2196" )
@@ -122,12 +123,17 @@ elseif(UNIX OR APPLE)
122123 set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-intel" )
123124 endif ()
124125 endif ()
125-
126+
126127 # Generic flags.
127128 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -fno-operator-names -Wformat -Wformat-security -Wall" )
128129 if (NOT CODE_COVERAGE)
129- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Werror " )
130+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )
130131 endif ()
132+
133+ if (WARNING_AS_ERROR)
134+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror" )
135+ endif ()
136+
131137 # Dot not forward c++11 flag to GPU beucause it is not supported
132138 set ( CUDA_PROPAGATE_HOST_FLAGS OFF )
133139 set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2" )
0 commit comments