From 1c877a0712b7851c7f286007193668058ed2e987 Mon Sep 17 00:00:00 2001 From: Sean Burford Date: Tue, 19 Jul 2016 10:27:20 +1000 Subject: cmake: Support curl --xattr when built with cmake - Test for and set HAVE_FSETXATTR when support for extended file attributes is present. Closes https://github.com/curl/curl/pull/1176 --- CMake/CurlTests.c | 16 ++++++++++++++++ CMakeLists.txt | 8 ++++++++ lib/curl_config.h.cmake | 9 +++++++++ 3 files changed, 33 insertions(+) diff --git a/CMake/CurlTests.c b/CMake/CurlTests.c index ceff39151..bc36c8ef7 100644 --- a/CMake/CurlTests.c +++ b/CMake/CurlTests.c @@ -533,3 +533,19 @@ main () { return 0; } #endif +#ifdef HAVE_FSETXATTR_6 +#include /* header from libc, not from libattr */ +int +main() { + fsetxattr(0, 0, 0, 0, 0, 0); + return 0; +} +#endif +#ifdef HAVE_FSETXATTR_5 +#include /* header from libc, not from libattr */ +int +main() { + fsetxattr(0, 0, 0, 0, 0); + return 0; +} +#endif diff --git a/CMakeLists.txt b/CMakeLists.txt index 14ecceba8..17606bf65 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -611,6 +611,7 @@ check_include_file_concat("sys/types.h" HAVE_SYS_TYPES_H) check_include_file_concat("sys/uio.h" HAVE_SYS_UIO_H) check_include_file_concat("sys/un.h" HAVE_SYS_UN_H) check_include_file_concat("sys/utime.h" HAVE_SYS_UTIME_H) +check_include_file_concat("sys/xattr.h" HAVE_SYS_XATTR_H) check_include_file_concat("alloca.h" HAVE_ALLOCA_H) check_include_file_concat("arpa/inet.h" HAVE_ARPA_INET_H) check_include_file_concat("arpa/tftp.h" HAVE_ARPA_TFTP_H) @@ -822,6 +823,13 @@ check_symbol_exists(setsockopt "${CURL_INCLUDES}" HAVE_SETSOCKOPT) # symbol exists in win32, but function does not. check_function_exists(inet_pton HAVE_INET_PTON) +check_symbol_exists(fsetxattr "${CURL_INCLUDES}" HAVE_FSETXATTR) +if(HAVE_FSETXATTR) + foreach(CURL_TEST HAVE_FSETXATTR_5 HAVE_FSETXATTR_6) + curl_internal_test_run(${CURL_TEST}) + endforeach(CURL_TEST) +endif(HAVE_FSETXATTR) + # sigaction and sigsetjmp are special. Use special mechanism for # detecting those, but only if previous attempt failed. if(HAVE_SIGNAL_H) diff --git a/lib/curl_config.h.cmake b/lib/curl_config.h.cmake index 33c15cb6f..49c1b8a2d 100644 --- a/lib/curl_config.h.cmake +++ b/lib/curl_config.h.cmake @@ -518,6 +518,15 @@ /* Define to 1 if you have the send function. */ #cmakedefine HAVE_SEND 1 +/* Define to 1 if you have the 'fsetxattr' function. */ +#cmakedefine HAVE_FSETXATTR 1 + +/* fsetxattr() takes 5 args */ +#cmakedefine HAVE_FSETXATTR_5 1 + +/* fsetxattr() takes 6 args */ +#cmakedefine HAVE_FSETXATTR_6 1 + /* Define to 1 if you have the header file. */ #cmakedefine HAVE_SETJMP_H 1 -- cgit v1.2.1