| 1 | # serial 5 -*- Autoconf -*-
|
|---|
| 2 | # Copyright (C) 2006-2007, 2009-2022 Free Software Foundation, Inc.
|
|---|
| 3 | # This file is free software; the Free Software Foundation
|
|---|
| 4 | # gives unlimited permission to copy and/or distribute it,
|
|---|
| 5 | # with or without modifications, as long as this notice is preserved.
|
|---|
| 6 |
|
|---|
| 7 | # From Jim Meyering
|
|---|
| 8 | # Provide <selinux/selinux.h>, if necessary.
|
|---|
| 9 | # If it is already present, provide wrapper functions to guard against
|
|---|
| 10 | # misbehavior from getfilecon, lgetfilecon, and fgetfilecon.
|
|---|
| 11 |
|
|---|
| 12 | AC_DEFUN([gl_HEADERS_SELINUX_SELINUX_H],
|
|---|
| 13 | [
|
|---|
| 14 | AC_REQUIRE([gl_LIBSELINUX])
|
|---|
| 15 | if test "$with_selinux" != no; then
|
|---|
| 16 | AC_CHECK_HEADERS([selinux/selinux.h])
|
|---|
| 17 |
|
|---|
| 18 | if test "$ac_cv_header_selinux_selinux_h" = yes; then
|
|---|
| 19 | # We do have <selinux/selinux.h>, so do compile getfilecon.c
|
|---|
| 20 | # and arrange to use its wrappers.
|
|---|
| 21 | gl_CHECK_NEXT_HEADERS([selinux/selinux.h])
|
|---|
| 22 | AC_DEFINE([getfilecon], [rpl_getfilecon],
|
|---|
| 23 | [Always use our getfilecon wrapper.])
|
|---|
| 24 | AC_DEFINE([lgetfilecon], [rpl_lgetfilecon],
|
|---|
| 25 | [Always use our lgetfilecon wrapper.])
|
|---|
| 26 | AC_DEFINE([fgetfilecon], [rpl_fgetfilecon],
|
|---|
| 27 | [Always use our fgetfilecon wrapper.])
|
|---|
| 28 | fi
|
|---|
| 29 |
|
|---|
| 30 | case "$ac_cv_search_setfilecon:$ac_cv_header_selinux_selinux_h" in
|
|---|
| 31 | no:*) # already warned
|
|---|
| 32 | ;;
|
|---|
| 33 | *:no)
|
|---|
| 34 | AC_MSG_WARN([libselinux was found but selinux/selinux.h is missing.])
|
|---|
| 35 | AC_MSG_WARN([AC_PACKAGE_NAME will be compiled without SELinux support.])
|
|---|
| 36 | esac
|
|---|
| 37 | else
|
|---|
| 38 | # Do as if <selinux/selinux.h> does not exist, even if
|
|---|
| 39 | # AC_CHECK_HEADERS_ONCE has already determined that it exists.
|
|---|
| 40 | AC_DEFINE([HAVE_SELINUX_SELINUX_H], [0])
|
|---|
| 41 | fi
|
|---|
| 42 | ])
|
|---|
| 43 |
|
|---|
| 44 | AC_DEFUN([gl_LIBSELINUX],
|
|---|
| 45 | [
|
|---|
| 46 | AC_REQUIRE([AC_CANONICAL_HOST])
|
|---|
| 47 | AC_REQUIRE([AC_CANONICAL_BUILD])
|
|---|
| 48 |
|
|---|
| 49 | AC_ARG_WITH([selinux],
|
|---|
| 50 | AS_HELP_STRING([--without-selinux], [do not use SELinux, even on systems with SELinux]),
|
|---|
| 51 | [], [with_selinux=maybe])
|
|---|
| 52 |
|
|---|
| 53 | LIB_SELINUX=
|
|---|
| 54 | if test "$with_selinux" != no; then
|
|---|
| 55 | gl_save_LIBS=$LIBS
|
|---|
| 56 | AC_SEARCH_LIBS([setfilecon], [selinux],
|
|---|
| 57 | [test "$ac_cv_search_setfilecon" = "none required" ||
|
|---|
| 58 | LIB_SELINUX=$ac_cv_search_setfilecon])
|
|---|
| 59 | LIBS=$gl_save_LIBS
|
|---|
| 60 | fi
|
|---|
| 61 | AC_SUBST([LIB_SELINUX])
|
|---|
| 62 |
|
|---|
| 63 | # Warn if SELinux is found but libselinux is absent;
|
|---|
| 64 | if test "$ac_cv_search_setfilecon" = no; then
|
|---|
| 65 | if test "$host" = "$build" && test -d /selinux; then
|
|---|
| 66 | AC_MSG_WARN([This system supports SELinux but libselinux is missing.])
|
|---|
| 67 | AC_MSG_WARN([AC_PACKAGE_NAME will be compiled without SELinux support.])
|
|---|
| 68 | fi
|
|---|
| 69 | with_selinux=no
|
|---|
| 70 | fi
|
|---|
| 71 | ])
|
|---|