1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-27 03:21:53 +03:00
samba-mirror/source4/configure.ac
Andrew Tridgell fd43e0ee09 added a uid_wrapper library
This library intercepts seteuid and related calls, and simulates them
in a manner similar to the nss_wrapper and socket_wrapper
libraries. This allows us to enable the vfs_unixuid NTVFS module in
the build farm, which means we are more likely to catch errors in the
token manipulation.

The simulation is not complete, but it is enough for Samba4 for
now. The major areas of incompleteness are:

 - no emulation of setreuid, setresuid or saved uids. These would be
   needed for use in Samba3

 - no emulation of ruid changing. That would also be needed for Samba3

 - no attempt to emulate file ownership changing, so code that (for
   example) tests whether st.st_uid matches geteuid() needs special
   handling
2009-08-05 10:51:00 +10:00

217 lines
6.0 KiB
Plaintext

dnl -*- mode: m4-mode -*-
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.54)
AC_INIT([samba],[4],[samba-technical@samba.org])
AC_CONFIG_SRCDIR([include/includes.h])
AC_CONFIG_HEADER(include/config_tmp.h)
AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h.])
# Configuration rules.
m4_include(build/m4/env.m4)
m4_include(../lib/replace/samba.m4)
m4_include(lib/smbreadline/readline.m4)
m4_include(heimdal_build/config.m4)
m4_include(../lib/util/fault.m4)
m4_include(../lib/util/signal.m4)
m4_include(../lib/util/util.m4)
m4_include(../lib/util/fsusage.m4)
m4_include(../lib/util/xattr.m4)
m4_include(../lib/util/capability.m4)
m4_include(../lib/util/time.m4)
m4_include(../lib/popt/samba.m4)
m4_include(../lib/util/charset/config.m4)
m4_include(lib/socket/config.m4)
m4_include(../lib/zlib/zlib.m4)
AC_ZLIB([
SMB_EXT_LIB(ZLIB, [${ZLIB_LIBS}])
],[
SMB_INCLUDE_MK(lib/zlib.mk)
])
m4_include(../nsswitch/nsstest.m4)
m4_include(../pidl/config.m4)
m4_include(client/config.m4)
AC_CONFIG_FILES(lib/registry/registry.pc)
AC_CONFIG_FILES(librpc/dcerpc.pc)
AC_CONFIG_FILES(../librpc/ndr.pc)
AC_CONFIG_FILES(../librpc/ndr_standard.pc)
AC_CONFIG_FILES(../lib/torture/torture.pc)
AC_CONFIG_FILES(auth/gensec/gensec.pc)
AC_CONFIG_FILES(param/samba-hostconfig.pc)
AC_CONFIG_FILES(librpc/dcerpc_samr.pc)
AC_CONFIG_FILES(librpc/dcerpc_atsvc.pc)
m4_include(min_versions.m4)
SMB_INCLUDED_LIB_PKGCONFIG(LIBTALLOC, talloc >= TALLOC_MIN_VERSION, [],
[
m4_include(../lib/talloc/libtalloc.m4)
SMB_INCLUDE_MK(../lib/talloc/config.mk)
]
)
SMB_INCLUDED_LIB_PKGCONFIG(LIBTDB, tdb >= TDB_MIN_VERSION,
[
AC_MSG_CHECKING([for Python TDB bindings])
if $PYTHON -c "from tdb import open" 2>/dev/null; then
AC_MSG_RESULT(yes)
else
SMB_INCLUDE_MK(../lib/tdb/python.mk)
AC_MSG_RESULT(no)
fi
],
[
m4_include(../lib/tdb/libtdb.m4)
SMB_INCLUDE_MK(../lib/tdb/config.mk)
SMB_INCLUDE_MK(../lib/tdb/python.mk)
]
)
SMB_INCLUDED_LIB_PKGCONFIG(LIBTEVENT, tevent = TEVENT_REQUIRED_VERSION,
[],[m4_include(../lib/tevent/samba.m4)]
)
SMB_INCLUDED_LIB_PKGCONFIG(LIBLDB, ldb = LDB_REQUIRED_VERSION,
[
SMB_INCLUDE_MK(lib/ldb/ldb_ildap/config.mk)
SMB_INCLUDE_MK(lib/ldb/tools/config.mk)
define_ldb_modulesdir=no
AC_MSG_CHECKING([for Python LDB bindings])
if $PYTHON -c "import ldb" 2>/dev/null; then
AC_MSG_RESULT(yes)
else
SMB_INCLUDE_MK(lib/ldb/python.mk)
AC_MSG_RESULT(no)
fi
],
[
# Here we need to do some tricks
# with AC_CONFIG_COMMANDS_PRE
# as that's the deferrs the commands
# to location after $prefix and $exec_prefix
# have usefull values and directly before
# creating config.status.
#
# The 'eval eval echo' trick is used to
# actually get the raw absolute directory
# path as this is needed in config.h
define_ldb_modulesdir=yes
AC_CONFIG_COMMANDS_PRE([
if test x"$define_ldb_modulesdir" = x"yes";then
LDB_MODULESDIR=`eval eval echo ${modulesdir}/ldb`
AC_DEFINE_UNQUOTED(LDB_MODULESDIR, "${LDB_MODULESDIR}" , [ldb Modules directory])
fi
])
ldbdir=lib/ldb
AC_SUBST(ldbdir)
m4_include(lib/ldb/sqlite3.m4)
m4_include(lib/ldb/libldb.m4)
SMB_INCLUDE_MK(lib/ldb/config.mk)
AC_CONFIG_FILES(lib/ldb/ldb.pc)
SMB_INCLUDE_MK(lib/ldb/python.mk)
])
m4_include(lib/tls/config.m4)
m4_include(torture/libnetapi/config.m4)
dnl m4_include(auth/kerberos/config.m4)
m4_include(auth/gensec/config.m4)
m4_include(smbd/process_model.m4)
m4_include(ntvfs/posix/config.m4)
m4_include(ntvfs/unixuid/config.m4)
m4_include(../lib/socket_wrapper/config.m4)
m4_include(../lib/nss_wrapper/config.m4)
m4_include(../lib/uid_wrapper/config.m4)
m4_include(auth/config.m4)
m4_include(kdc/config.m4)
m4_include(ntvfs/sysdep/config.m4)
m4_include(../nsswitch/config.m4)
#################################################
# add *_CFLAGS only for the real build
CFLAGS="${CFLAGS} ${DEVELOPER_CFLAGS}"
#################################################
# final configure stuff
AC_MSG_CHECKING([configure summary])
AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
AC_MSG_RESULT(yes),
AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
AC_MSG_WARN([cannot run when cross-compiling]))
LIBS=`echo $LIBS | sed -e 's/ *//g'`
if test x"$LIBS" != x""; then
echo "LIBS: $LIBS"
AC_MSG_WARN([the global \$LIBS variable contains some libraries!])
AC_MSG_WARN([this should not happen, please report to samba-technical@lists.samba.org!])
AC_MSG_ERROR([only _EXT macros from aclocal.m4 should be used!])
fi
dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
LIB_REMOVE_USR_LIB(LDFLAGS)
LIB_REMOVE_USR_LIB(LIBS)
dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
AC_SUBST(ac_default_prefix)
for d in build/smb_build bin include ; do
test -d ${builddir}/$d || AS_MKDIR_P(${builddir}/$d)
done
AC_SUBST(INTERN_LDFLAGS)
AC_SUBST(INSTALL_LINK_FLAGS)
if test $USESHARED = "true";
then
INTERN_LDFLAGS="-L\$(shliboutputdir) -L\${builddir}/bin/static"
INSTALL_LINK_FLAGS="-Wl,-rpath-link,\$(shliboutputdir)";
else
INTERN_LDFLAGS="-L\${builddir}/bin/static -L\$(shliboutputdir)"
fi
builddir_headers=""
if test "x$ac_abs_srcdir" != "x$ac_abs_builddir"
then
builddir_headers="-I\$(builddir)/include -I\$(builddir) -I\$(builddir)/lib ";
fi
CPPFLAGS="$builddir_headers-I\$(srcdir)/include -I\$(srcdir) -I\$(srcdir)/lib -I\$(srcdir)/../lib/replace -I\$(srcdir)/../lib/talloc -I\$(srcdir)/.. -D_SAMBA_BUILD_=4 -DHAVE_CONFIG_H $CPPFLAGS"
SMB_WRITE_PERLVARS(build/smb_build/config.pm)
echo "configure: creating config.mk"
cat >config.mk<<CEOF
# config.mk - Autogenerated by configure, DO NOT EDIT!
$SMB_INFO_EXT_LIBS
$SMB_INFO_SUBSYSTEMS
$SMB_INFO_LIBRARIES
CEOF
SMB_BUILD_RUN(data.mk)
AC_OUTPUT
cmp include/config_tmp.h include/config.h >/dev/null 2>&1
CMP_RET=$?
if test $CMP_RET != 0; then
cp include/config_tmp.h include/config.h
fi
SMB_WRITE_MAKEVARS(mkconfig.mk)
if test $USESHARED = true
then
echo "To run binaries without installing, set the following environment variable:"
echo "$LIB_PATH_VAR=$builddir/bin/shared"
fi
echo
echo "To build Samba, run $MAKE"