r26068: Import improved Python bindings for LDB, including tests.
[abartlet/samba.git/.git] / source4 / configure.ac
1 dnl -*- mode: m4-mode -*-
2 dnl Process this file with autoconf to produce a configure script.
3
4 dnl disabled 2.53 requirement - we do work with 2.52 on suse 7.3 for example
5 dnl AC_PREREQ(2.53)
6
7 AC_INIT([samba],[],[samba-technical@samba.org])
8
9 AC_CONFIG_SRCDIR([include/includes.h])
10 AC_CONFIG_HEADER(include/config_tmp.h)
11 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
12
13 # Configuration rules.
14 m4_include(build/m4/env.m4)
15 m4_include(lib/replace/samba.m4)
16 m4_include(lib/smbreadline/readline.m4)
17 m4_include(heimdal_build/config.m4)
18 m4_include(lib/util/fault.m4)
19 m4_include(lib/util/signal.m4)
20 m4_include(lib/util/util.m4)
21 m4_include(lib/util/fsusage.m4)
22 m4_include(lib/util/xattr.m4)
23 m4_include(lib/util/capability.m4)
24 m4_include(lib/util/time.m4)
25 m4_include(lib/popt/samba.m4)
26 m4_include(lib/charset/config.m4)
27 m4_include(lib/socket/config.m4)
28 m4_include(nsswitch/nsstest.m4)
29
30 SMB_EXT_LIB_FROM_PKGCONFIG(LIBTALLOC, talloc >= 1.1.0,
31         [],
32         [
33                 m4_include(lib/talloc/libtalloc.m4)
34                 SMB_INCLUDE_MK(lib/talloc/config.mk)
35         ]
36 )
37
38 SMB_EXT_LIB_FROM_PKGCONFIG(LIBTDB, tdb >= 1.1.0,
39         [],
40         [
41                 m4_include(lib/tdb/libtdb.m4)
42                 SMB_INCLUDE_MK(lib/tdb/config.mk)
43         ]
44 )
45
46 SMB_EXT_LIB_FROM_PKGCONFIG(LIBLDB, ldb >= 0.9.1,
47         [
48                 SMB_INCLUDE_MK(lib/ldb/ldb_ildap/config.mk)
49                 SMB_INCLUDE_MK(lib/ldb/tools/config.mk)
50                 SMB_SUBSYSTEM(ldb_map, [], [LIBLDB])
51                 define_ldb_modulesdir=no
52         ],
53         [
54                 # Here we need to do some tricks
55                 # with AC_CONFIG_COMMANDS_PRE
56                 # as that's the deferrs the commands
57                 # to location after $prefix and $exec_prefix
58                 # have usefull values and directly before
59                 # creating config.status.
60                 #
61                 # The 'eval eval echo' trick is used to
62                 # actually get the raw absolute directory
63                 # path as this is needed in config.h
64                 define_ldb_modulesdir=yes
65                 AC_CONFIG_COMMANDS_PRE([
66                 if test x"$define_ldb_modulesdir" = x"yes";then
67                         LDB_MODULESDIR=`eval eval echo ${modulesdir}/ldb`
68                         AC_DEFINE_UNQUOTED(LDB_MODULESDIR, "${LDB_MODULESDIR}" , [ldb Modules directory])
69                 fi
70                 ])
71                 m4_include(lib/ldb/sqlite3.m4)
72                 m4_include(lib/ldb/libldb.m4)
73                 SMB_INCLUDE_MK(lib/ldb/config.mk)
74         ]
75 )
76
77 m4_include(lib/tls/config.m4)
78 m4_include(lib/events/config.m4)
79
80 dnl m4_include(auth/kerberos/config.m4)
81
82 AC_ARG_VAR([PYTHON_VERSION],[The installed Python
83         version to use, for example '2.3'. This string 
84         will be appended to the Python interpreter
85         canonical name.])
86
87 AC_PATH_PROG([PYTHON],[python[$PYTHON_VERSION]])
88 if test -z "$PYTHON"; then
89         AC_MSG_ERROR([No python found])
90 fi
91
92 AC_SUBST(PYTHON)
93
94 #
95 # Check for a version of Python >= 2.1.0
96 #
97 AC_MSG_CHECKING([for a version of Python >= '2.1.0'])
98 ac_supports_python_ver=`$PYTHON -c "import sys, string; \
99         ver = string.split(sys.version)[[0]]; \
100         print ver >= '2.1.0'"`
101 if test "$ac_supports_python_ver" != "True"; then
102         AC_MSG_RESULT([no])
103         AC_MSG_ERROR([No recent version of python found])
104 else 
105         AC_MSG_RESULT([yes])
106 fi
107
108 #
109 # Check if you have distutils, else fail
110 #
111 AC_MSG_CHECKING([for the distutils Python package])
112 ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
113 if test -z "$ac_distutils_result"; then
114         AC_MSG_RESULT([yes])
115 else
116         AC_MSG_RESULT([no])
117         AC_MSG_ERROR([distutils not available])
118 fi
119
120 #
121 # Check for Python include path
122 #
123 AC_MSG_CHECKING([for Python include path])
124 if test -z "$PYTHON_CPPFLAGS"; then
125         python_path=`$PYTHON -c "import distutils.sysconfig; \
126                         print distutils.sysconfig.get_python_inc();"`
127         if test -n "${python_path}"; then
128                 python_path="-I$python_path"
129         fi
130         PYTHON_CPPFLAGS=$python_path
131 fi
132 AC_MSG_RESULT([$PYTHON_CPPFLAGS])
133 AC_SUBST([PYTHON_CPPFLAGS])
134
135 #
136 # Check for Python library path
137 #
138 AC_MSG_CHECKING([for Python library path])
139 if test -z "$PYTHON_LDFLAGS"; then
140         # (makes two attempts to ensure we've got a version number
141         # from the interpreter)
142         py_version=`$PYTHON -c "from distutils.sysconfig import *; \
143                 from string import join; \
144                 print join(get_config_vars('VERSION'))"`
145         if test "$py_version" == "[None]"; then
146                 if test -n "$PYTHON_VERSION"; then
147                         py_version=$PYTHON_VERSION
148                 else
149                         py_version=`$PYTHON -c "import sys; \
150                                 print sys.version[[:3]]"`
151                 fi
152         fi
153
154         PYTHON_LDFLAGS=`$PYTHON -c "from distutils.sysconfig import *; \
155                 from string import join; \
156                 print '-L' + get_python_lib(0,1), \
157                         '-lpython';"`$py_version
158 fi              
159 AC_MSG_RESULT([$PYTHON_LDFLAGS])
160 AC_SUBST([PYTHON_LDFLAGS])
161
162 #
163 # Check for site packages
164 #
165 AC_MSG_CHECKING([for Python site-packages path])
166 if test -z "$PYTHON_SITE_PKG"; then
167         PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
168                         print distutils.sysconfig.get_python_lib(0,0);"`
169 fi
170 AC_MSG_RESULT([$PYTHON_SITE_PKG])
171 AC_SUBST([PYTHON_SITE_PKG])
172
173 #
174 # libraries which must be linked in when embedding
175 #
176 AC_MSG_CHECKING(python extra libraries)
177 if test -z "$PYTHON_EXTRA_LIBS"; then
178    PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
179                         conf = distutils.sysconfig.get_config_var; \
180                         print conf('LOCALMODLIBS'), conf('LIBS')"`
181 fi
182 AC_MSG_RESULT([$PYTHON_EXTRA_LIBS])
183 AC_SUBST(PYTHON_EXTRA_LIBS)
184
185 #
186 # linking flags needed when embedding
187 #
188 AC_MSG_CHECKING(python extra linking flags)
189 if test -z "$PYTHON_EXTRA_LDFLAGS"; then
190         PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \
191                 conf = distutils.sysconfig.get_config_var; \
192                 print conf('LINKFORSHARED')"`
193 fi
194 AC_MSG_RESULT([$PYTHON_EXTRA_LDFLAGS])
195 AC_SUBST(PYTHON_EXTRA_LDFLAGS)
196
197 SMB_EXT_LIB(LIBPYTHON, [$PYTHON_LDFLAGS], [$PYTHON_CPPFLAGS])
198 SMB_ENABLE(LIBPYTHON)
199
200 m4_include(auth/gensec/config.m4)
201 m4_include(smbd/process_model.m4)
202 m4_include(ntvfs/posix/config.m4)
203 m4_include(ntvfs/unixuid/config.m4)
204 m4_include(lib/socket_wrapper/config.m4)
205 m4_include(lib/nss_wrapper/config.m4)
206 m4_include(auth/config.m4)
207 m4_include(kdc/config.m4)
208 m4_include(ntvfs/sysdep/config.m4)
209 m4_include(lib/appweb/config.m4)
210 m4_include(nsswitch/config.m4)
211 m4_include(libcli/config.m4)
212
213 #################################################
214 # add *_CFLAGS only for the real build
215 CFLAGS="${CFLAGS} ${DEVELOPER_CFLAGS}"
216
217 #################################################
218 # final configure stuff
219
220 AC_MSG_CHECKING([configure summary])
221 AC_TRY_RUN([#include "${srcdir-.}/build/tests/summary.c"],
222            AC_MSG_RESULT(yes),
223            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
224            AC_MSG_WARN([cannot run when cross-compiling]))
225
226 LIBS=`echo $LIBS | sed -e 's/ *//g'`
227 if test x"$LIBS" != x""; then
228         echo "LIBS: $LIBS"
229         AC_MSG_WARN([the global \$LIBS variable contains some libraries!])
230         AC_MSG_WARN([this should not happen, please report to samba-technical@lists.samba.org!])
231         AC_MSG_ERROR([only _EXT macros from aclocal.m4 should be used!])
232 fi
233
234 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
235 LIB_REMOVE_USR_LIB(LDFLAGS)
236 LIB_REMOVE_USR_LIB(LIBS)
237
238 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
239 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
240 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
241
242 AC_SUBST(ac_default_prefix)
243
244 for d in build/smb_build bin include ; do
245     test -d ${builddir}/$d || AS_MKDIR_P(${builddir}/$d)
246 done
247
248 echo "configure: creating build/smb_build/config.pm"
249 cat >build/smb_build/config.pm<<CEOF
250 # config.pm - Autogenerate by configure. DO NOT EDIT!
251
252 package config;
253 require Exporter;
254 @ISA = qw(Exporter);
255 @EXPORT_OK = qw(%enabled %config);
256 use strict;
257
258 use vars qw(%enabled %config);
259
260 %config = (AC_FOREACH([AC_Var], m4_defn([_AC_SUBST_VARS]), [
261         AC_Var => '$AC_Var',])
262 );
263
264 $SMB_INFO_ENABLES
265 1;
266 CEOF
267
268 echo "configure: creating config.mk"
269 cat >config.mk<<CEOF
270 # config.mk - Autogenerated by configure, DO NOT EDIT!
271 $SMB_INFO_EXT_LIBS
272 $SMB_INFO_SUBSYSTEMS
273 $SMB_INFO_LIBRARIES
274 CEOF
275
276 AC_OUTPUT_COMMANDS(
277 [
278 test "x$ac_abs_srcdir" != "x$ac_abs_builddir" && (
279         cd $builddir;
280         # NOTE: We *must* use -R so we don't follow symlinks (at least on BSD
281         # systems).
282         test -d heimdal || cp -R $srcdir/heimdal $builddir/
283         test -d heimdal_build || cp -R $srcdir/heimdal_build $builddir/
284         test -d build || builddir="$builddir" \
285                         srcdir="$srcdir" \
286                         $PERL ${srcdir}/script/buildtree.pl
287  )
288
289 $PERL -I${builddir} -I${builddir}/build \
290     -I${srcdir} -I${srcdir}/build \
291     ${srcdir}/build/smb_build/main.pl || exit $?
292 ],
293 [
294 srcdir="$srcdir"
295 builddir="$builddir"
296 PERL="$PERL"
297
298 export PERL
299 export srcdir
300 export builddir
301 ])
302 AC_OUTPUT
303
304 cmp include/config_tmp.h include/config.h >/dev/null 2>&1
305 CMP_RET=$?
306 if test $CMP_RET != 0; then
307         cp include/config_tmp.h include/config.h
308 fi