Files
mars-nwe/cmake/modules/FindXAttr.cmake
Mario Fetka b031402933
All checks were successful
Source release / source-package (push) Successful in 41s
Archive-xattr-Patch
2026-05-25 21:07:46 +02:00

59 lines
1.7 KiB
CMake

# - Find Linux extended attribute support
#
# This module sets:
# XATTR_FOUND - true if getxattr/setxattr are available
# XATTR_LIBRARIES - libraries needed for xattr functions, if any
#
# Modern glibc exposes getxattr/setxattr from libc. Older systems may
# require libattr, so check libc first and then retry with -lattr.
include(CheckIncludeFile)
include(CheckSymbolExists)
set(XATTR_FOUND FALSE)
set(XATTR_LIBRARIES "")
check_include_file("sys/xattr.h" XATTR_HAVE_SYS_XATTR_H)
if(XATTR_HAVE_SYS_XATTR_H)
check_symbol_exists(getxattr "sys/types.h;sys/xattr.h" XATTR_HAVE_GETXATTR)
check_symbol_exists(setxattr "sys/types.h;sys/xattr.h" XATTR_HAVE_SETXATTR)
if(XATTR_HAVE_GETXATTR AND XATTR_HAVE_SETXATTR)
set(XATTR_FOUND TRUE)
else()
find_library(XATTR_ATTR_LIBRARY attr)
if(XATTR_ATTR_LIBRARY)
set(_XATTR_SAVE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}")
set(CMAKE_REQUIRED_LIBRARIES "${XATTR_ATTR_LIBRARY}")
check_symbol_exists(getxattr "sys/types.h;sys/xattr.h" XATTR_HAVE_GETXATTR_ATTR)
check_symbol_exists(setxattr "sys/types.h;sys/xattr.h" XATTR_HAVE_SETXATTR_ATTR)
set(CMAKE_REQUIRED_LIBRARIES "${_XATTR_SAVE_REQUIRED_LIBRARIES}")
if(XATTR_HAVE_GETXATTR_ATTR AND XATTR_HAVE_SETXATTR_ATTR)
set(XATTR_FOUND TRUE)
set(XATTR_LIBRARIES "${XATTR_ATTR_LIBRARY}")
endif()
endif()
endif()
endif()
if(XATTR_FOUND)
if(XATTR_LIBRARIES)
message(STATUS "Found XAttr: ${XATTR_LIBRARIES}")
else()
message(STATUS "Found XAttr: libc")
endif()
else()
message(STATUS "Could NOT find XAttr")
endif()
mark_as_advanced(
XATTR_ATTR_LIBRARY
XATTR_HAVE_SYS_XATTR_H
XATTR_HAVE_GETXATTR
XATTR_HAVE_SETXATTR
XATTR_HAVE_GETXATTR_ATTR
XATTR_HAVE_SETXATTR_ATTR
)