cmake: Added code coverage support. check only for C (no C++) support. Check attr...
[rrq/fuse_xattrs.git] / CMakeLists.txt
index fa26eb935d46ccdef41f17c633578449d462ef55..1343d3ff514a9dc9c981888274ee4e8304f847cf 100644 (file)
@@ -1,19 +1,38 @@
 cmake_minimum_required(VERSION 2.8)
-project(fuse_xattrs)
-
-include (CheckIncludeFileCXX)
-check_include_file_cxx (attr/xattr.h HAVE_ATTR_XATTR_H)
-check_include_file_cxx (sys/xattr.h HAVE_SYS_XATTR_H)
-
-# Check if xattr functions take extra argument.
-include (CheckCXXSourceCompiles)
-CHECK_CXX_SOURCE_COMPILES ("#include <sys/types.h>
-  #include <sys/xattr.h>
-  int main() { getxattr(0,0,0,0,0,0); return 1; } " XATTR_ADD_OPT)
-
+project(fuse_xattrs C)
+
+# Check xattr headers
+include (CheckIncludeFile)
+check_include_file (sys/xattr.h HAVE_SYS_XATTR_H)
+if(NOT HAVE_SYS_XATTR_H)
+    message(FATAL_ERROR "sys/xattr.h not found")
+endif()
+
+include (CheckCSourceCompiles)
+check_c_source_compiles ("
+  #include <sys/types.h>
+  #include <attr/xattr.h>
+  int main() { return 1; }
+  " HAVE_ATTR_XATTR_H)
+if(NOT HAVE_ATTR_XATTR_H)
+    message(FATAL_ERROR "attr/xattr.h not found")
+endif()
+
+# set required definitions
 add_definitions (-D_FILE_OFFSET_BITS=64)
 
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMakeModules/")
+
+option(ENABLE_CODECOVERAGE "Enable code coverage testing support" )
+if(ENABLE_CODECOVERAGE)
+    include (CodeCoverage)
+    set(CMAKE_C_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage")
+    setup_target_for_coverage(
+            fuse_xattrs_coverage
+            ./run_tests.sh
+            coverage
+    )
+endif(ENABLE_CODECOVERAGE)
 
 set(SOURCE_FILES
         compat/fuse_opt.c