# - Find Linux quota support # # This module checks whether the system provides the headers and symbols # needed by mars_nwe's Linux user quota backend. # # It sets: # QUOTA_FOUND - true if usable quota support was found # QUOTA_USE_SYS_QUOTA_H - true if should be used # QUOTA_USE_LINUX_QUOTA_H - true if should be used # QUOTA_HAVE_Q_SETQUOTA - true if Q_SETQUOTA is available # QUOTA_HAVE_Q_SETQLIM - true if Q_SETQLIM is available # # Modern Linux/glibc systems declare quotactl() in . Prefer # that header. Older systems may only have , which is kept # as a fallback for the historical mars_nwe code path. include(CheckIncludeFile) include(CheckSymbolExists) set(QUOTA_FOUND FALSE) set(QUOTA_USE_SYS_QUOTA_H FALSE) set(QUOTA_USE_LINUX_QUOTA_H FALSE) check_include_file("sys/quota.h" QUOTA_HAVE_SYS_QUOTA_H) check_include_file("linux/quota.h" QUOTA_HAVE_LINUX_QUOTA_H) if(QUOTA_HAVE_SYS_QUOTA_H) check_symbol_exists(quotactl "sys/types.h;sys/quota.h" QUOTA_HAVE_QUOTACTL_SYS) check_symbol_exists(QCMD "sys/types.h;sys/quota.h" QUOTA_HAVE_QCMD_SYS) check_symbol_exists(Q_GETQUOTA "sys/types.h;sys/quota.h" QUOTA_HAVE_Q_GETQUOTA_SYS) check_symbol_exists(USRQUOTA "sys/types.h;sys/quota.h" QUOTA_HAVE_USRQUOTA_SYS) check_symbol_exists(Q_SETQUOTA "sys/types.h;sys/quota.h" QUOTA_HAVE_Q_SETQUOTA_SYS) check_symbol_exists(Q_SETQLIM "sys/types.h;sys/quota.h" QUOTA_HAVE_Q_SETQLIM_SYS) if(QUOTA_HAVE_QUOTACTL_SYS AND QUOTA_HAVE_QCMD_SYS AND QUOTA_HAVE_Q_GETQUOTA_SYS AND QUOTA_HAVE_USRQUOTA_SYS AND (QUOTA_HAVE_Q_SETQUOTA_SYS OR QUOTA_HAVE_Q_SETQLIM_SYS)) set(QUOTA_FOUND TRUE) set(QUOTA_USE_SYS_QUOTA_H TRUE) set(QUOTA_HAVE_Q_SETQUOTA ${QUOTA_HAVE_Q_SETQUOTA_SYS}) set(QUOTA_HAVE_Q_SETQLIM ${QUOTA_HAVE_Q_SETQLIM_SYS}) endif() endif() if(NOT QUOTA_FOUND AND QUOTA_HAVE_LINUX_QUOTA_H) check_symbol_exists(QCMD "linux/quota.h" QUOTA_HAVE_QCMD_LINUX) check_symbol_exists(Q_GETQUOTA "linux/quota.h" QUOTA_HAVE_Q_GETQUOTA_LINUX) check_symbol_exists(USRQUOTA "linux/quota.h" QUOTA_HAVE_USRQUOTA_LINUX) check_symbol_exists(Q_SETQUOTA "linux/quota.h" QUOTA_HAVE_Q_SETQUOTA_LINUX) check_symbol_exists(Q_SETQLIM "linux/quota.h" QUOTA_HAVE_Q_SETQLIM_LINUX) if(QUOTA_HAVE_QCMD_LINUX AND QUOTA_HAVE_Q_GETQUOTA_LINUX AND QUOTA_HAVE_USRQUOTA_LINUX AND (QUOTA_HAVE_Q_SETQUOTA_LINUX OR QUOTA_HAVE_Q_SETQLIM_LINUX)) set(QUOTA_FOUND TRUE) set(QUOTA_USE_LINUX_QUOTA_H TRUE) set(QUOTA_HAVE_Q_SETQUOTA ${QUOTA_HAVE_Q_SETQUOTA_LINUX}) set(QUOTA_HAVE_Q_SETQLIM ${QUOTA_HAVE_Q_SETQLIM_LINUX}) endif() endif() if(QUOTA_FOUND) if(QUOTA_USE_SYS_QUOTA_H) message(STATUS "Found Quota: sys/quota.h") else() message(STATUS "Found Quota: linux/quota.h") endif() else() message(STATUS "Could NOT find Quota") endif() mark_as_advanced( QUOTA_HAVE_SYS_QUOTA_H QUOTA_HAVE_LINUX_QUOTA_H QUOTA_HAVE_QUOTACTL_SYS QUOTA_HAVE_QCMD_SYS QUOTA_HAVE_Q_GETQUOTA_SYS QUOTA_HAVE_USRQUOTA_SYS QUOTA_HAVE_Q_SETQUOTA_SYS QUOTA_HAVE_Q_SETQLIM_SYS QUOTA_HAVE_QCMD_LINUX QUOTA_HAVE_Q_GETQUOTA_LINUX QUOTA_HAVE_USRQUOTA_LINUX QUOTA_HAVE_Q_SETQUOTA_LINUX QUOTA_HAVE_Q_SETQLIM_LINUX )