Fix build errors when C flags include -Werror
Instructing the compiler to treat warnings as errors caused some of the
compiler tests to fail, because the test code was not 100% clean.
Note that we now use check_symbol_exists() to check for memset() and
memcpy(), since the test code for check_function_exists() produces a
compiler warning due to not including <string.h>.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c6b007d..b132a30 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -363,9 +363,9 @@
check_include_files(sys/types.h NEED_SYS_TYPES_H)
# Check for functions
- include(CheckFunctionExists)
- check_function_exists(memset HAVE_MEMSET)
- check_function_exists(memcpy HAVE_MEMCPY)
+ include(CheckSymbolExists)
+ check_symbol_exists(memset string.h HAVE_MEMSET)
+ check_symbol_exists(memcpy string.h HAVE_MEMCPY)
if(NOT HAVE_MEMSET AND NOT HAVE_MEMCPY)
set(NEED_BSD_STRINGS 1)
endif()
@@ -375,7 +375,7 @@
check_type_size("unsigned short" UNSIGNED_SHORT)
# Check for compiler features
- check_c_source_compiles("int main(void) { typedef struct undefined_structure *undef_struct_ptr; }"
+ check_c_source_compiles("int main(void) { typedef struct undefined_structure *undef_struct_ptr; undef_struct_ptr ptr = 0; return ptr != 0; }"
INCOMPLETE_TYPES)
if(INCOMPLETE_TYPES)
message(STATUS "Compiler supports pointers to undefined structures.")
@@ -433,7 +433,7 @@
endif()
endif()
foreach(inline ${INLINE_OPTIONS})
- check_c_source_compiles("${inline} static void foo(void) {} int main(void) { foo(); }"
+ check_c_source_compiles("${inline} static int foo(void) { return 0; } int main(void) { return foo(); }"
INLINE_WORKS)
if(INLINE_WORKS)
set(INLINE ${inline})