]> granicus.if.org Git - apache/blob - configure.in
make it compile :(
[apache] / configure.in
1 dnl
2 dnl Autoconf configuration for Apache httpd
3 dnl
4 dnl     Use ./buildconf to produce a configure script
5 dnl
6
7 AC_PREREQ(2.13)
8 AC_INIT(ABOUT_APACHE)
9
10 AC_CONFIG_HEADER(include/ap_config_auto.h)
11 AC_CONFIG_AUX_DIR(srclib/apr/build)
12
13 dnl #
14 dnl # Include our own M4 macros along with those for APR and libtool
15 dnl #
16 sinclude(srclib/apr/build/apr_common.m4)
17 sinclude(srclib/apr/build/apr_network.m4)
18 sinclude(srclib/apr/build/apr_threads.m4)
19 sinclude(acinclude.m4)
20
21 dnl Save user-defined environment settings for later restoration
22 dnl
23 APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
24 APR_SAVE_THE_ENVIRONMENT(CFLAGS)
25 APR_SAVE_THE_ENVIRONMENT(CXXFLAGS)
26 APR_SAVE_THE_ENVIRONMENT(LDFLAGS)
27 APR_SAVE_THE_ENVIRONMENT(LIBS)
28 APR_SAVE_THE_ENVIRONMENT(INCLUDES)
29
30 dnl Generate ./config.nice for reproducing runs of configure
31 dnl
32 APR_CONFIG_NICE(config.nice)
33
34 nl='
35 '
36
37 dnl XXX we can't just use AC_PREFIX_DEFAULT because that isn't subbed in
38 dnl by configure until it is too late.  Is that how it should be or not?
39 dnl Something seems broken here.
40 AC_PREFIX_DEFAULT(/usr/local/apache2)
41 test "$prefix" = "NONE" && prefix='/usr/local/apache2'
42 test "$exec_prefix" = "NONE" && exec_prefix='${prefix}'
43
44 dnl ## Run configure for packages Apache uses
45
46 echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}"
47
48 APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --prefix=$prefix")
49
50 echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}"
51
52 APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --prefix=$prefix")
53
54 echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}"
55
56 APR_SUBDIR_CONFIG(srclib/pcre, "--prefix=$prefix")
57
58 echo $ac_n "${nl}Configuring Apache httpd ...${nl}"
59
60 echo $ac_n "obtaining flag settings from the sub-configures...${nl}"
61 . ./srclib/apr/APRVARS
62
63 dnl Now that we have APR's EXTRA_flags in our environment, move them over
64 dnl to the normal variables to avoid duplications and use them for testing.
65 dnl We ignore EXTRA_INCLUDES because our own includes will encompass them.
66 dnl
67 APR_ADDTO(CFLAGS, $EXTRA_CFLAGS)
68 APR_ADDTO(CPPFLAGS, $EXTRA_CPPFLAGS)
69 APR_ADDTO(LDFLAGS, $EXTRA_LDFLAGS)
70 APR_ADDTO(LIBS, $EXTRA_LIBS)
71 EXTRA_CFLAGS=
72 EXTRA_CPPFLAGS=
73 EXTRA_LDFLAGS=
74 EXTRA_LIBS=
75 EXTRA_INCLUDES=
76
77 dnl Absolute source/build directory
78 abs_srcdir=`(cd $srcdir && pwd)`
79 abs_builddir=`pwd`
80
81 dnl If the source dir is not equal to the build dir, 
82 dnl then we are running in VPATH mode.
83
84 if test "$abs_builddir" != "$abs_srcdir"; then
85   USE_VPATH=1
86   APR_ADDTO(INCLUDES, [-I. -I\$(srcdir) -I\$(top_builddir)/os/\$(OS_DIR) -I\$(top_srcdir)/os/\$(OS_DIR) -I\$(top_builddir)/server/mpm/\$(MPM_NAME) -I\$(top_srcdir)/server/mpm/\$(MPM_NAME) -I\$(top_builddir)/modules/http -I\$(top_srcdir)/modules/http -I\$(top_builddir)/include -I\$(top_srcdir)/include -I\$(top_builddir)/srclib/apr/include -I\$(top_srcdir)/srclib/apr/include -I\$(top_builddir)/srclib/apr-util/include -I\$(top_srcdir)/srclib/apr-util/include])
87 else
88   APR_ADDTO(INCLUDES, [-I. -I\$(top_srcdir)/os/\$(OS_DIR) -I\$(top_srcdir)/server/mpm/\$(MPM_NAME) -I\$(top_srcdir)/modules/http -I\$(top_srcdir)/include -I\$(top_srcdir)/srclib/apr/include -I\$(top_srcdir)/srclib/apr-util/include])
89 fi
90
91 echo $ac_n "${nl}Applying OS-specific hints for httpd ...${nl}"
92
93 AC_CANONICAL_SYSTEM
94
95 case $host in
96   *os2*)
97       # Use a custom made libtool replacement
98       echo "using aplibtool"
99       LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
100       SH_LIBTOOL="$LIBTOOL --shared --export-all"
101       CORE_IMPLIB_FILE="ApacheCoreOS2.la"
102       CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
103       MK_IMPLIB="emximp"
104       other_targets="$other_targets os2core"
105       INSTALL_PROG_FLAGS="-e .exe"
106       SHLTCFLAGS=""
107       LTCFLAGS=""
108       ;;
109   *)
110       if test "x$LTFLAGS" = "x"; then
111           LTFLAGS='--silent'
112       fi
113       LIBTOOL='$(SHELL) $(top_builddir)/srclib/apr/libtool $(LTFLAGS)'
114       libtoolversion=`$abs_builddir/srclib/apr/libtool --version`
115       case $libtoolversion in
116           *1.4*)
117               SH_LIBTOOL='$(LIBTOOL)'
118               SHLTCFLAGS="-prefer-pic"
119               LTCFLAGS="-prefer-non-pic -static"
120               ;;
121           *)
122               SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
123               SHLTCFLAGS=""
124               LTCFLAGS=""
125               ;;
126       esac
127       ;;
128 esac
129 APACHE_SUBST(SHLTCFLAGS)
130 APACHE_SUBST(LTCFLAGS)
131
132 case $host in
133   *-apple-aux3*)
134       APR_SETVAR(APACHE_MPM, [prefork])
135       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
136       ;;
137   *-beos*)
138       APR_SETVAR(APACHE_MPM, [beos])
139       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
140       ;;
141   *os2_emx*)
142       APR_SETVAR(APACHE_MPM, [mpmt_os2])
143       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
144       ;;
145   *-linux-*)
146       case `uname -r` in
147         2.[[2-9]]* ) APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
148             ;;
149         * )
150             ;;
151       esac
152       ;;
153   *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
154       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
155       ;;
156   *-solaris2*)
157       dnl  This is a hack -- we should be using AC_TRY_RUN instead
158       ap_platform_runtime_link_flag="-R"
159       ;;
160 esac
161
162 dnl
163 dnl Process command line arguments. This is done early in the process so the
164 dnl user can get feedback quickly in case of an error.
165 dnl
166 dnl ### need to move some of the arguments "up here"
167
168 dnl ## Check for programs
169
170 AC_PATH_PROG(RM, rm)
171 AC_PROG_AWK
172 AC_PROG_CC
173 AC_PROG_CPP
174 AC_PROG_INSTALL
175 AC_PROG_LN_S
176 AC_CHECK_TOOL(RANLIB, ranlib, true)
177 dnl AC_PATH_PROG(PERL_PATH, perl)
178
179 dnl various OS checks that apparently set required flags
180 AC_AIX
181 AC_ISC_POSIX
182 AC_MINIX
183
184 dnl ## Check for libraries
185
186 dnl ## Check for header files
187
188 dnl I think these are just used all over the place, so just check for
189 dnl them at the base of the tree. If some are specific to a single
190 dnl directory, they should be moved (Comment #Spoon)
191
192 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
193 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
194 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
195
196 AC_HEADER_STDC
197 AC_CHECK_HEADERS( \
198 string.h \
199 limits.h \
200 unistd.h \
201 sys/socket.h \
202 pwd.h \
203 grp.h \
204 strings.h \
205 sys/processor.h \
206 sys/sem.h
207 )
208 AC_HEADER_SYS_WAIT
209
210 dnl ## Check for typedefs, structures, and compiler characteristics.
211
212 AC_C_CONST
213 if test "$ac_cv_prog_gcc" = "yes"; then
214   APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
215 fi
216
217 dnl ## Check for library functions
218
219 dnl See Comment #Spoon
220
221 AC_CHECK_FUNCS( \
222 getpwnam \
223 getgrnam \
224 initgroups \
225 bindprocessor \
226 )
227
228 AC_CHECK_LIB(nsl, gethostbyname)
229 AC_CHECK_LIB(nsl, gethostname)
230 AC_CHECK_LIB(socket, socket)
231
232 AC_ARG_WITH(port,[  --with-port=PORT        Port on which to listen (default is 80)],
233         [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
234         [PORT=80])
235
236 AC_ARG_ENABLE(maintainer-mode,[  --enable-maintainer-mode  Turn on debugging and compile time warnings],
237 [
238   APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
239 ])dnl
240
241 APACHE_ENABLE_LAYOUT
242 APACHE_ENABLE_MODULES
243
244 dnl reading config stubs
245 esyscmd(./build/config-stubs .)
246
247 APACHE_SUBST(progname)
248 APACHE_SUBST(MPM_LIB)
249 APACHE_SUBST(OS)
250 APACHE_SUBST(OS_DIR)
251 APACHE_SUBST(BUILTIN_LIBS)
252
253 PRE_SHARED_CMDS='echo ""'
254 POST_SHARED_CMDS='echo ""'
255
256 if test "$apache_need_shared" = "yes"; then
257   $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
258   case $host in
259     *-ibm-aix*)
260       HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-bE:$abs_srcdir/server/httpd.exp"
261       SH_LDFLAGS="$SH_LDFLAGS -Wl,-bI:$abs_srcdir/server/httpd.exp"
262       ;;
263     *beos)
264       SH_LDFLAGS='$(top_builddir)/_APP_'
265       PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
266       POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
267       ;;
268     *os390)
269       HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
270       SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
271   esac
272   shared_build="shared-build"
273 fi
274
275 APACHE_SUBST(PRE_SHARED_CMDS)
276 APACHE_SUBST(POST_SHARED_CMDS)
277 APACHE_SUBST(shared_build)
278
279 AC_ARG_WITH(program-name,
280 [  --with-program-name     alternate executable name],[
281   progname="$withval" ], [
282   progname="httpd"] )
283
284 # SuExec parameters
285 AC_ARG_WITH(suexec-caller,
286 [  --with-suexec-caller    User allowed to call SuExec],[
287   AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
288
289 AC_ARG_WITH(suexec-userdir,
290 [  --with-suexec-userdir   User subdirectory],[
291   AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
292
293 AC_ARG_WITH(suexec-docroot,
294 [  --with-suexec-docroot   SuExec root directory],[
295   AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
296
297 AC_ARG_WITH(suexec-uidmin,
298 [  --with-suexec-uidmin    Minimal allowed UID],[
299   AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
300
301 AC_ARG_WITH(suexec-gidmin,
302 [  --with-suexec-gidmin    Minimal allowed GID],[
303   AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
304
305 AC_ARG_WITH(suexec-logfile,
306 [  --with-suexec-logfile   Set the logfile],[
307   AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
308
309 AC_ARG_WITH(suexec-safepath,
310 [  --with-suexec-safepath  Set the safepath],[
311   AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
312
313 AC_ARG_WITH(suexec-umask,
314 [  --with-suexec-umask     umask for suexec'd process],[
315   AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
316
317 dnl AP_LIB_DIRS specifies the additional libs from srclib/ that we need
318 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
319 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $abs_builddir/srclib/apr-util/libaprutil.la $AP_LIBS"
320
321 dnl APR should go after the other libs, so the right symbols can be picked up
322 AP_LIBS="$AP_LIBS $abs_builddir/srclib/apr/libapr.la"
323 APACHE_SUBST(AP_LIB_DIRS)
324 APACHE_SUBST(AP_LIBS)
325
326 AC_DEFINE(AP_USING_AUTOCONF, 1,
327                 [Using autoconf to configure Apache])
328
329 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
330     AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1, 
331               [This platform doesn't suffer from the thundering herd problem])
332 fi
333
334 dnl check for endianness
335 if test "$cross_compiling" = "no"; then
336   AC_C_BIGENDIAN
337 else
338   AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
339                 [byte order is unknown due to cross-compilation])
340 fi
341
342 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile) 
343 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
344 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
345 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
346 for i in $AP_LIB_DIRS; do
347   APACHE_FAST_OUTPUT(srclib/$i/Makefile)
348 done
349
350 if test -d ./test; then
351     APACHE_FAST_OUTPUT(test/Makefile)
352 fi
353
354 dnl get the exported vars from APRUTIL
355 . ./srclib/apr-util/export_vars.sh
356 APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS)
357 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
358
359 dnl ## Finalize the variables
360 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
361
362 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
363 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
364 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
365 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
366 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
367 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
368
369 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
370
371 APACHE_GEN_CONFIG_VARS
372
373 dnl ## Build modules.c
374 rm -f modules.c
375 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
376
377 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "$prefix",
378         [Root directory of the Apache install area])
379 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "conf/$progname.conf",
380         [Location of the config file, relative to the Apache root directory])
381 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
382         [Location of the source for the current MPM])
383
384 perlbin=`$ac_aux_dir/PrintPath perl`
385 if test "x$perlbin" = "x"; then
386     perlbin="/replace/with/path/to/perl/interpreter"
387 fi
388 AC_SUBST(perlbin)
389
390 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
391
392 BSD_MAKEFILE=no
393 case $host in
394 *bsdi*)
395     # Check whether they've installed GNU make
396     if make --version > /dev/null 2>&1; then
397         true
398     else
399         BSD_MAKEFILE=yes
400     fi
401     ;;
402 esac
403
404 AC_OUTPUT($APACHE_OUTPUT_FILES support/apxs support/apachectl support/dbmmanage support/log_server_status support/logresolve.pl support/phf_abuse_log.cgi support/split-logfile build/rules.mk,,[
405   APACHE_GEN_MAKEFILES
406 ])
407