xref: /aosp_15_r20/external/libcap-ng/configure.ac (revision 8dd5e09d5faf27a871e8654ddaa2d2af7c696578)
1*8dd5e09dSSadaf Ebrahimi
2*8dd5e09dSSadaf Ebrahimidnl
3*8dd5e09dSSadaf Ebrahimidefine([AC_INIT_NOTICE],
4*8dd5e09dSSadaf Ebrahimi[### Generated automatically using autoconf version] AC_ACVERSION [
5*8dd5e09dSSadaf Ebrahimi### Copyright 2009-2023 Steve Grubb <[email protected]>
6*8dd5e09dSSadaf Ebrahimi###
7*8dd5e09dSSadaf Ebrahimi### Permission is hereby granted, free of charge, to any person obtaining a
8*8dd5e09dSSadaf Ebrahimi### copy of this software and associated documentation files (the "Software"),
9*8dd5e09dSSadaf Ebrahimi### to deal in the Software without restriction, including without limitation
10*8dd5e09dSSadaf Ebrahimi### the rights to use, copy, modify, merge, publish, distribute, sublicense,
11*8dd5e09dSSadaf Ebrahimi### and/or sell copies of the Software, and to permit persons to whom the
12*8dd5e09dSSadaf Ebrahimi### Software is furnished to do so, subject to the following conditions:
13*8dd5e09dSSadaf Ebrahimi###
14*8dd5e09dSSadaf Ebrahimi### The above copyright notice and this permission notice shall be included
15*8dd5e09dSSadaf Ebrahimi### in all copies or substantial portions of the Software.
16*8dd5e09dSSadaf Ebrahimi###
17*8dd5e09dSSadaf Ebrahimi### THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18*8dd5e09dSSadaf Ebrahimi### IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19*8dd5e09dSSadaf Ebrahimi### FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20*8dd5e09dSSadaf Ebrahimi### THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
21*8dd5e09dSSadaf Ebrahimi### OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
22*8dd5e09dSSadaf Ebrahimi### ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23*8dd5e09dSSadaf Ebrahimi### OTHER DEALINGS IN THE SOFTWARE.
24*8dd5e09dSSadaf Ebrahimi###
25*8dd5e09dSSadaf Ebrahimi### For usage, run `./configure --help'
26*8dd5e09dSSadaf Ebrahimi### For more detailed information on installation, read the file `INSTALL'.
27*8dd5e09dSSadaf Ebrahimi###
28*8dd5e09dSSadaf Ebrahimi### If configuration succeeds, status is in the file `config.status'.
29*8dd5e09dSSadaf Ebrahimi### A log of configuration tests is in `config.log'.
30*8dd5e09dSSadaf Ebrahimi])
31*8dd5e09dSSadaf Ebrahimi
32*8dd5e09dSSadaf EbrahimiAC_REVISION($Revision: 1.3 $)dnl
33*8dd5e09dSSadaf EbrahimiAC_INIT([libcap-ng],[0.8.5])
34*8dd5e09dSSadaf EbrahimiAC_PREREQ([2.50])dnl
35*8dd5e09dSSadaf EbrahimiAC_CONFIG_HEADERS([config.h])
36*8dd5e09dSSadaf EbrahimiAC_CONFIG_MACRO_DIR([m4])
37*8dd5e09dSSadaf Ebrahimi
38*8dd5e09dSSadaf Ebrahimiecho Configuring libcap-ng $VERSION
39*8dd5e09dSSadaf Ebrahimi
40*8dd5e09dSSadaf EbrahimiAC_CANONICAL_TARGET
41*8dd5e09dSSadaf EbrahimiAM_INIT_AUTOMAKE
42*8dd5e09dSSadaf EbrahimiLT_INIT
43*8dd5e09dSSadaf EbrahimiAC_SUBST(LIBTOOL_DEPS)
44*8dd5e09dSSadaf Ebrahimi
45*8dd5e09dSSadaf Ebrahimiecho .
46*8dd5e09dSSadaf Ebrahimiecho Checking for programs
47*8dd5e09dSSadaf Ebrahimi
48*8dd5e09dSSadaf EbrahimiAC_PROG_CC
49*8dd5e09dSSadaf EbrahimiAC_PROG_INSTALL
50*8dd5e09dSSadaf EbrahimiAC_PROG_AWK
51*8dd5e09dSSadaf Ebrahimi
52*8dd5e09dSSadaf Ebrahimiecho .
53*8dd5e09dSSadaf Ebrahimiecho Checking for header files
54*8dd5e09dSSadaf EbrahimiAC_CHECK_HEADERS(linux/capability.h, [], [AC_MSG_ERROR(linux/capability.h is required in order to build libcap-ng.)])
55*8dd5e09dSSadaf EbrahimiAC_CHECK_HEADERS(sys/xattr.h, [], [
56*8dd5e09dSSadaf Ebrahimi	AC_CHECK_HEADERS(attr/xattr.h, [], [AC_MSG_WARN(attr/xattr.h not found, disabling file system capabilities.)])
57*8dd5e09dSSadaf Ebrahimi	])
58*8dd5e09dSSadaf EbrahimiAC_CHECK_HEADERS(linux/securebits.h, [], [])
59*8dd5e09dSSadaf EbrahimiAC_CHECK_HEADERS(pthread.h,
60*8dd5e09dSSadaf Ebrahimi	[AC_SEARCH_LIBS(pthread_atfork, pthread)],
61*8dd5e09dSSadaf Ebrahimi	[AC_MSG_WARN(pthread.h not found, disabling pthread_atfork.)])
62*8dd5e09dSSadaf EbrahimiAC_CHECK_HEADERS(sys/vfs.h, [
63*8dd5e09dSSadaf Ebrahimi	AC_CHECK_HEADERS(linux/magic.h, [], [AC_MSG_WARN(linux/magic.h is required in order to verify procfs.)])
64*8dd5e09dSSadaf Ebrahimi	], [AC_MSG_WARN(sys/vfs.h is required in order to verify procfs.)])
65*8dd5e09dSSadaf Ebrahimi
66*8dd5e09dSSadaf EbrahimiAC_ARG_WITH([capability_header],
67*8dd5e09dSSadaf Ebrahimi        [AS_HELP_STRING([--with-capability_header=path : path to capability.h])],
68*8dd5e09dSSadaf Ebrahimi        [CAPABILITY_HEADER=$withval],
69*8dd5e09dSSadaf Ebrahimi        [CAPABILITY_HEADER=/usr/include/linux/capability.h])
70*8dd5e09dSSadaf EbrahimiAC_SUBST(CAPABILITY_HEADER)
71*8dd5e09dSSadaf Ebrahimi
72*8dd5e09dSSadaf EbrahimiALLWARNS=""
73*8dd5e09dSSadaf EbrahimiALLDEBUG="-g"
74*8dd5e09dSSadaf EbrahimiOPT="-O"
75*8dd5e09dSSadaf Ebrahimiif test x"$GCC" = x"yes"; then
76*8dd5e09dSSadaf Ebrahimi  OPT="-O2 -pipe"
77*8dd5e09dSSadaf Ebrahimi  case "$target" in
78*8dd5e09dSSadaf Ebrahimi    *linux*)
79*8dd5e09dSSadaf Ebrahimi             ALLWARNS="-W -Wall -Wundef -Wpointer-arith -Wcast-align \
80*8dd5e09dSSadaf Ebrahimi-Wwrite-strings -Waggregate-return -Wstrict-prototypes \
81*8dd5e09dSSadaf Ebrahimi-Wmissing-prototypes -Wmissing-declarations -Wredundant-decls \
82*8dd5e09dSSadaf Ebrahimi-Wnested-externs -Winline -Wfloat-equal -Wchar-subscripts"
83*8dd5e09dSSadaf Ebrahimi             ;;
84*8dd5e09dSSadaf Ebrahimi    esac
85*8dd5e09dSSadaf Ebrahimifi
86*8dd5e09dSSadaf Ebrahimi
87*8dd5e09dSSadaf EbrahimiALLDEBUG="-g"
88*8dd5e09dSSadaf EbrahimiAC_ARG_WITH(debug,
89*8dd5e09dSSadaf Ebrahimi[  --with-debug            turn on debugging [[default=no]]],
90*8dd5e09dSSadaf Ebrahimi[
91*8dd5e09dSSadaf Ebrahimiif test "x${withval}" = xyes; then
92*8dd5e09dSSadaf Ebrahimi        DEBUG="$ALLDEBUG"
93*8dd5e09dSSadaf Ebrahimi        OPT="-O"
94*8dd5e09dSSadaf Ebrahimi        AM_CONDITIONAL(DEBUG, true)
95*8dd5e09dSSadaf Ebrahimielse
96*8dd5e09dSSadaf Ebrahimi        DEBUG="-DNDEBUG"
97*8dd5e09dSSadaf Ebrahimi        AM_CONDITIONAL(DEBUG, false)
98*8dd5e09dSSadaf Ebrahimifi
99*8dd5e09dSSadaf Ebrahimi],
100*8dd5e09dSSadaf Ebrahimi[ DEBUG="-DNDEBUG"; AM_CONDITIONAL(DEBUG, false) ])
101*8dd5e09dSSadaf Ebrahimi
102*8dd5e09dSSadaf EbrahimiAC_MSG_CHECKING(__attr_dealloc_free support)
103*8dd5e09dSSadaf EbrahimiAC_COMPILE_IFELSE(
104*8dd5e09dSSadaf Ebrahimi  [AC_LANG_SOURCE(
105*8dd5e09dSSadaf Ebrahimi    [[
106*8dd5e09dSSadaf Ebrahimi      #include <stdio.h>
107*8dd5e09dSSadaf Ebrahimi      extern char *test(const char *name) __attr_dealloc_free;
108*8dd5e09dSSadaf Ebrahimi      int main(void) { return 0; }]])],
109*8dd5e09dSSadaf Ebrahimi  [DEALLOC="yes"],
110*8dd5e09dSSadaf Ebrahimi  [DEALLOC="no"]
111*8dd5e09dSSadaf Ebrahimi)
112*8dd5e09dSSadaf EbrahimiAC_MSG_RESULT($DEALLOC)
113*8dd5e09dSSadaf Ebrahimi
114*8dd5e09dSSadaf EbrahimiAC_ARG_WITH(warn,
115*8dd5e09dSSadaf Ebrahimi[  --with-warn             turn on warnings [[default=yes]]],
116*8dd5e09dSSadaf Ebrahimi[
117*8dd5e09dSSadaf Ebrahimiif test "x${withval}" = xyes; then
118*8dd5e09dSSadaf Ebrahimi        WARNS="$ALLWARNS"
119*8dd5e09dSSadaf Ebrahimielse
120*8dd5e09dSSadaf Ebrahimi        WARNS=""
121*8dd5e09dSSadaf Ebrahimifi
122*8dd5e09dSSadaf Ebrahimi],WARNS="$ALLWARNS")
123*8dd5e09dSSadaf EbrahimiAC_SUBST(DEBUG)
124*8dd5e09dSSadaf Ebrahimi
125*8dd5e09dSSadaf EbrahimiWFLAGS=""
126*8dd5e09dSSadaf EbrahimiAC_MSG_CHECKING(for -Wformat-truncation)
127*8dd5e09dSSadaf EbrahimiTMPCFLAGS="${CFLAGS}"
128*8dd5e09dSSadaf EbrahimiCFLAGS="${CFLAGS} -Wformat-truncation"
129*8dd5e09dSSadaf EbrahimiAC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[WFLAGS="-Wno-format-truncation"
130*8dd5e09dSSadaf Ebrahimi	AC_MSG_RESULT(yes)],
131*8dd5e09dSSadaf Ebrahimi	[AC_MSG_RESULT(no)])
132*8dd5e09dSSadaf EbrahimiCFLAGS="${TMPCFLAGS}"
133*8dd5e09dSSadaf EbrahimiAC_SUBST(WFLAGS)
134*8dd5e09dSSadaf Ebrahimi
135*8dd5e09dSSadaf EbrahimiAC_CHECK_HEADER(sys/syscall.h,
136*8dd5e09dSSadaf Ebrahimi	[AC_DEFINE([HAVE_SYSCALL_H], [1],
137*8dd5e09dSSadaf Ebrahimi	[Define to 1 if you have <sys/syscall.h>.])], [],)
138*8dd5e09dSSadaf Ebrahimi
139*8dd5e09dSSadaf Ebrahimidnl; This is to record in the build logs what options are being taken
140*8dd5e09dSSadaf EbrahimiAC_CHECK_DECLS([PR_CAP_AMBIENT], [], [], [[#include <sys/prctl.h>]])
141*8dd5e09dSSadaf EbrahimiAC_CHECK_DECLS([VFS_CAP_REVISION_2], [], [], [[#include <linux/capability.h>]])
142*8dd5e09dSSadaf EbrahimiAC_CHECK_DECLS([VFS_CAP_REVISION_3], [], [], [[#include <linux/capability.h>]])
143*8dd5e09dSSadaf EbrahimiAC_CHECK_DECLS([CAP_EPOLLWAKEUP], [], [], [[#include <linux/capability.h>]])
144*8dd5e09dSSadaf EbrahimiAC_CHECK_DECLS([CAP_WAKE_ALARM], [], [], [[#include <linux/capability.h>]])
145*8dd5e09dSSadaf EbrahimiAC_CHECK_DECLS([CAP_BLOCK_SUSPEND], [], [], [[#include <linux/capability.h>]])
146*8dd5e09dSSadaf EbrahimiAC_CHECK_DECLS([CAP_AUDIT_READ], [], [], [[#include <linux/capability.h>]])
147*8dd5e09dSSadaf EbrahimiAC_CHECK_DECLS([CAP_PERFMON], [], [], [[#include <linux/capability.h>]])
148*8dd5e09dSSadaf EbrahimiAC_CHECK_DECLS([CAP_BPF], [], [], [[#include <linux/capability.h>]])
149*8dd5e09dSSadaf EbrahimiAC_CHECK_DECLS([CAP_CHECKPOINT_RESTORE], [], [], [[#include <linux/capability.h>]])
150*8dd5e09dSSadaf Ebrahimi
151*8dd5e09dSSadaf Ebrahimidnl only build libdrop_ambient if support for ambient capabilities was found (which is normal)
152*8dd5e09dSSadaf Ebrahimiif test x"${ac_cv_have_decl_PR_CAP_AMBIENT}" = x"no" ; then
153*8dd5e09dSSadaf Ebrahimi    AC_MSG_WARN("PR_CAP_AMBIENT not available - libdrop_ambient will not be built")
154*8dd5e09dSSadaf Ebrahimifi
155*8dd5e09dSSadaf EbrahimiAM_CONDITIONAL(BUILD_LIBDROP_AMBIENT, test x"${ac_cv_have_decl_PR_CAP_AMBIENT}" = x"yes")
156*8dd5e09dSSadaf Ebrahimi
157*8dd5e09dSSadaf EbrahimiAC_CHECK_PROG(swig_found, swig, yes, no)
158*8dd5e09dSSadaf Ebrahimiif test x"${swig_found}" = x"no" ; then
159*8dd5e09dSSadaf Ebrahimi	AC_MSG_WARN("Swig not found - python bindings will not be made")
160*8dd5e09dSSadaf Ebrahimifi
161*8dd5e09dSSadaf EbrahimiAM_CONDITIONAL(HAVE_SWIG, test x"${swig_found}" = x"yes")
162*8dd5e09dSSadaf Ebrahimi
163*8dd5e09dSSadaf Ebrahimiwithval=""
164*8dd5e09dSSadaf EbrahimiAC_MSG_CHECKING(whether to create python3 bindings)
165*8dd5e09dSSadaf EbrahimiAC_ARG_WITH(python3,
166*8dd5e09dSSadaf EbrahimiAS_HELP_STRING([--with-python3],[enable building python3 bindings]),
167*8dd5e09dSSadaf Ebrahimiuse_python3=$withval,
168*8dd5e09dSSadaf Ebrahimiuse_python3=auto)
169*8dd5e09dSSadaf Ebrahimiif test x$use_python3 = xno ; then
170*8dd5e09dSSadaf Ebrahimi	AC_MSG_RESULT(no)
171*8dd5e09dSSadaf Ebrahimielse
172*8dd5e09dSSadaf Ebrahimi	AC_MSG_RESULT(investigating)
173*8dd5e09dSSadaf Ebrahimi	AC_PATH_PROG([use_python3], [python3-config], [no])
174*8dd5e09dSSadaf Ebrahimi	if test ${use_python3} = no ; then
175*8dd5e09dSSadaf Ebrahimi		if test ${withval} = yes ; then
176*8dd5e09dSSadaf Ebrahimi			echo "Python3 bindings were selected but python3-config was not found."
177*8dd5e09dSSadaf Ebrahimi			echo "Please ensure that it's installed or pass --without-python3 to ./configure"
178*8dd5e09dSSadaf Ebrahimi			exit 1
179*8dd5e09dSSadaf Ebrahimi		fi
180*8dd5e09dSSadaf Ebrahimi		echo "Python3 bindings will NOT be built"
181*8dd5e09dSSadaf Ebrahimi	else
182*8dd5e09dSSadaf Ebrahimi	echo "Python3 bindings WILL be built"
183*8dd5e09dSSadaf Ebrahimi	use_python3=yes
184*8dd5e09dSSadaf Ebrahimi	AM_PATH_PYTHON([3.1],, [:])
185*8dd5e09dSSadaf Ebrahimi	PYTHON3_CFLAGS=`python3-config --cflags 2> /dev/null`
186*8dd5e09dSSadaf Ebrahimi	PYTHON3_LIBS=`python3-config --libs 2> /dev/null`
187*8dd5e09dSSadaf Ebrahimi	PYTHON3_INCLUDES=`python3-config --includes 2> /dev/null`
188*8dd5e09dSSadaf Ebrahimi	AC_SUBST(PYTHON3_CFLAGS)
189*8dd5e09dSSadaf Ebrahimi	AC_SUBST(PYTHON3_LIBS)
190*8dd5e09dSSadaf Ebrahimi	AC_SUBST(PYTHON3_INCLUDES)
191*8dd5e09dSSadaf Ebrahimi	fi
192*8dd5e09dSSadaf Ebrahimifi
193*8dd5e09dSSadaf EbrahimiAM_CONDITIONAL(USE_PYTHON3, test ${use_python3} = "yes")
194*8dd5e09dSSadaf Ebrahimi
195*8dd5e09dSSadaf EbrahimiAC_CONFIG_FILES([Makefile src/Makefile src/libcap-ng.pc src/test/Makefile
196*8dd5e09dSSadaf Ebrahimi	bindings/Makefile
197*8dd5e09dSSadaf Ebrahimi	bindings/python3/Makefile bindings/src/Makefile
198*8dd5e09dSSadaf Ebrahimi	bindings/python3/test/Makefile utils/Makefile
199*8dd5e09dSSadaf Ebrahimi	m4/Makefile docs/Makefile])
200*8dd5e09dSSadaf EbrahimiAC_OUTPUT
201*8dd5e09dSSadaf Ebrahimi
202*8dd5e09dSSadaf Ebrahimiecho .
203*8dd5e09dSSadaf Ebrahimiecho "
204*8dd5e09dSSadaf Ebrahimi
205*8dd5e09dSSadaf Ebrahimi  libcap-ng Version:      $VERSION
206*8dd5e09dSSadaf Ebrahimi  Target:                 $target
207*8dd5e09dSSadaf Ebrahimi  Installation prefix:    $prefix
208*8dd5e09dSSadaf Ebrahimi  PYTHON_PREFIX:          $PYTHON_PREFIX
209*8dd5e09dSSadaf Ebrahimi  Compiler:               $CC
210*8dd5e09dSSadaf Ebrahimi  Compiler flags:
211*8dd5e09dSSadaf Ebrahimi`echo $CFLAGS | fmt -w 50 | sed 's,^,                          ,'`
212*8dd5e09dSSadaf Ebrahimi  __attr_dealloc_free support:  $DEALLOC
213*8dd5e09dSSadaf Ebrahimi"
214