Fix an error when compiling with both -O0 and -Wp,-D_FORTIFY_SOURCE=2
authorAntonio Ospite <ospite@studenti.unina.it>
Tue, 4 Dec 2012 10:46:12 +0000 (11:46 +0100)
committerAntonio Ospite <ospite@studenti.unina.it>
Thu, 6 Dec 2012 17:49:27 +0000 (18:49 +0100)
Fix the following error happening with the gcc shipped on some Ubuntu
versions:

In file included from /usr/include/stdio.h:27:0,
                 from /home/pedro/lib/libam7xxx/src/am7xxx.c:19:
/usr/include/features.h:330:4: error: #warning _FORTIFY_SOURCE
requires compiling with optimization (-O) [-Werror=cpp]
cc1: all warnings being treated as errors
make[2]: *** [src/CMakeFiles/am7xxx.dir/am7xxx.c.o] Error 1
make[1]: *** [src/CMakeFiles/am7xxx.dir/all] Error 2
make: *** [all] Error 2

Reported-by: Petr Certik <petr@certik.cz>
CMakeLists.txt

index 3e525cc..d99e401 100644 (file)
@@ -48,7 +48,6 @@ if (CMAKE_COMPILER_IS_GNUCC)
     -Winit-self
     -Winline
     -Wpacked
-    -Wp,-D_FORTIFY_SOURCE=2
     -Wpointer-arith
     -Wlarger-than-65500
     -Wmissing-declarations
@@ -68,13 +67,13 @@ if (CMAKE_COMPILER_IS_GNUCC)
     -Wwrite-strings
     -fstack-protector
     --param=ssp-buffer-size=4)
-endif()
 
-set(CMAKE_C_FLAGS_DEBUG "-O0 -ggdb -DDEBUG=1")
-set(CMAKE_C_FLAGS_RELEASE "-O2")
-set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")
+  add_flags(DEBUG_FLAGS
+    -ggdb)
+
+  add_flags(RELEASE_FLAGS
+    -Wp,-D_FORTIFY_SOURCE=2)
 
-if (CMAKE_COMPILER_IS_GNUCC)
   if (STRICT_COMPILATION_CHECKS)
     add_flags(STRICT_FLAGS
       -Werror
@@ -83,12 +82,13 @@ if (CMAKE_COMPILER_IS_GNUCC)
       # NOTE: GCC >= 4.6 is needed for -Wunused-but-set-variable
       -Wunused-but-set-variable)
 
-    add_flags(CMAKE_C_FLAGS_DEBUG ${STRICT_FLAGS})
-    add_flags(CMAKE_C_FLAGS_RELEASE ${STRICT_FLAGS})
-    add_flags(CMAKE_C_FLAGS_RELWITHDEBINFO ${STRICT_FLAGS})
   endif()
 endif()
 
+set(CMAKE_C_FLAGS_DEBUG "-O0 ${DEBUG_FLAGS} ${STRICT_FLAGS}")
+set(CMAKE_C_FLAGS_RELEASE "-O2 ${RELEASE_FLAGS} ${STRICT_FLAGS}")
+set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 ${RELEASE_FLAGS} ${DEBUG_FLAGS} ${STRICT_FLAGS}")
+
 # Add library project
 add_subdirectory(src)
 add_subdirectory(examples)