summaryrefslogtreecommitdiff
path: root/m4/st_selinux.m4
blob: da72a485d279ac7c3054bc40dc30b974fd4c43b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/usr/bin/m4
#
# Copyright (c) 2020 The strace developers.
# All rights reserved.
#
# SPDX-License-Identifier: LGPL-2.1-or-later

AC_DEFUN([st_SELINUX], [dnl

libselinux_CPPFLAGS=
libselinux_LDFLAGS=
libselinux_LIBS=
enable_secontext=no

AC_ARG_WITH([libselinux],
	    [AS_HELP_STRING([--with-libselinux],
			    [use libselinux to collect security contexts])],
	    [case "${withval}" in
	     yes|no|check) ;;
	     *) with_libselinux=yes
		libselinux_CPPFLAGS="-I${withval}/include"
		libselinux_LDFLAGS="-L${withval}/lib" ;;
	     esac],
	    [with_libselinux=check]
)

AS_IF([test "x$with_libselinux" != xno],
      [saved_CPPFLAGS="$CPPFLAGS"
       CPPFLAGS="$CPPFLAGS $libselinux_CPPFLAGS"
       found_selinux_h=no
       AC_CHECK_HEADERS([selinux/selinux.h],
			[found_selinux_h=yes])
       CPPFLAGS="$saved_CPPFLAGS"
       AS_IF([test "x$found_selinux_h" = xyes],
	     [saved_LDFLAGS="$LDFLAGS"
	      LDFLAGS="$LDFLAGS $libselinux_LDFLAGS"
	      AC_CHECK_LIB([selinux],[getpidcon],
		[libselinux_LIBS="-lselinux"
		 enable_secontext=yes
		],
		[if test "x$with_libselinux" != xcheck; then
		   AC_MSG_FAILURE([failed to find getpidcon in libselinux])
		 fi
		]
	      )
	      AC_CHECK_LIB([selinux],[getfilecon],
		[libselinux_LIBS="-lselinux"
		 enable_secontext=yes
		],
		[if test "x$with_libselinux" != xcheck; then
		   AC_MSG_FAILURE([failed to find getfilecon in libselinux])
		 fi
		]
	      )
	      LDFLAGS="$saved_LDFLAGS"
	     ],
	     [if test "x$with_libselinux" != xcheck; then
		AC_MSG_FAILURE([failed to find selinux.h])
	      fi
	     ]
       )
      ]
)

AC_MSG_CHECKING([whether to enable security contexts support])
AS_IF([test "x$enable_secontext" = xyes],
      [AC_DEFINE([ENABLE_SECONTEXT], [1],
			  [Define to enable SELinux security contexts support])
       AC_DEFINE([HAVE_SELINUX_RUNTIME], [1],
			  [Define to enable SELinux security contexts testing])
       AC_SUBST(libselinux_LIBS)
       AC_SUBST(libselinux_LDFLAGS)
       AC_SUBST(libselinux_CPPFLAGS)
       AC_MSG_RESULT([yes])],
      [AC_MSG_RESULT([no])])

AM_CONDITIONAL([ENABLE_SECONTEXT], [test "x$enable_secontext" = xyes])
AM_CONDITIONAL([HAVE_SELINUX_RUNTIME], [test "x$enable_secontext" = xyes])

])