@@ -60,6 +60,7 @@ caffe_option(USE_SYSTEMTAP "Build for SystemTap" OFF)
60
60
caffe_option (PERFORMANCE_MONITORING "Build Caffe with PERFORMANCE_MONITORING " OFF )
61
61
#caffe_option(USE_GITHUB_MKLDNN "Download and use MKL-DNN available on github" OFF)
62
62
caffe_option (CODE_COVERAGE "Build with code coverage instrumentation" OFF )
63
+ caffe_option (WARNING_AS_ERROR "Build with warnings treated as errors" ON )
63
64
caffe_option (CO_SIM "Build readonly cpu blob data/diff pycaffe interface" OFF )
64
65
caffe_option (USE_MLSL "Build Caffe with Intel(r) Machine Learning Scaling Library for multinode training" ON )
65
66
caffe_option (ICC_STATIC_BUILD "Build Intel Caffe static link with Intel compiler" OFF )
@@ -87,18 +88,18 @@ if(MSVC)
87
88
endif ()
88
89
elseif (UNIX OR APPLE )
89
90
# 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" )
91
92
# GCC specific flags. ICC is compatible with them.
92
93
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -z noexecstack -z relro -z now" )
93
94
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" )
95
96
# In Clang, -z flags are not compatible, they need to be passed to linker via -Wl.
96
97
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now" )
97
98
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now" )
98
99
endif ()
99
-
100
+
100
101
# Compiler flags.
101
- if ( ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" )
102
+ if ( ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" )
102
103
# GCC specific flags.
103
104
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 4.9 )
104
105
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE -fstack-protector-strong" )
@@ -107,11 +108,11 @@ elseif(UNIX OR APPLE)
107
108
else ()
108
109
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE -fstack-protector" )
109
110
endif ()
110
- elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" )
111
+ elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" )
111
112
# Clang is compatbile with some of the flags.
112
113
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
115
116
# though it uses -pie linker option that require -fPIE during compilation. Checksec
116
117
# shows that it generates correct PIE anyway if only -pie is provided.
117
118
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector -wd2196" )
@@ -122,12 +123,17 @@ elseif(UNIX OR APPLE)
122
123
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-intel" )
123
124
endif ()
124
125
endif ()
125
-
126
+
126
127
# Generic flags.
127
128
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -fno-operator-names -Wformat -Wformat-security -Wall" )
128
129
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" )
130
131
endif ()
132
+
133
+ if (WARNING_AS_ERROR )
134
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror" )
135
+ endif ()
136
+
131
137
# Dot not forward c++11 flag to GPU beucause it is not supported
132
138
set ( CUDA_PROPAGATE_HOST_FLAGS OFF )
133
139
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2" )
0 commit comments