summaryrefslogtreecommitdiffstats
path: root/source4/configure.ac
blob: e5bcc0254b5b43701b1de66dcf34643383aedc4c (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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
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)

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)
m4_include(torture/libsmbclient/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)
dnl nsswitch must be before auth as it sets some variable
dnl tested by auth/config.m4, libiiniparser must be even before
dnl because nsswitch depend also on it
m4_include(../lib/iniparser_build/config.m4)
m4_include(../nsswitch/config.m4)
m4_include(auth/config.m4)
m4_include(kdc/config.m4)
m4_include(ntvfs/sysdep/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(Makefile)

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"