]> granicus.if.org Git - apache/blob - configure.in
Use the autoconf variable "host" consistently for platform checks.
[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 --disable-shared --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 --disable-shared --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       ;;
106   *)
107       if test "x$LTFLAGS" = "x"; then
108           LTFLAGS='--silent'
109       fi
110       LIBTOOL='$(SHELL) $(top_builddir)/srclib/apr/libtool $(LTFLAGS)'
111       SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)'
112       ;;
113 esac
114
115 case $host in
116   *-apple-aux3*)
117       APR_SETVAR(APACHE_MPM, [prefork])
118       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
119       ;;
120   *-beos*)
121       APR_SETVAR(APACHE_MPM, [beos])
122       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
123       ;;
124   *os2_emx*)
125       APR_SETVAR(APACHE_MPM, [spmt_os2])
126       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
127       ;;
128   *-linux-*)
129       case `uname -r` in
130         2.[[2-9]]* ) APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
131             ;;
132         * )
133             ;;
134       esac
135       ;;
136   *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx)
137       APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1])
138       ;;
139   *-solaris2*)
140       dnl  This is a hack -- we should be using AC_TRY_RUN instead
141       ap_platform_runtime_link_flag="-R"
142       ;;
143 esac
144
145 dnl
146 dnl Process command line arguments. This is done early in the process so the
147 dnl user can get feedback quickly in case of an error.
148 dnl
149 dnl ### need to move some of the arguments "up here"
150
151 dnl ## Check for programs
152
153 AC_PATH_PROG(RM, rm)
154 AC_PROG_AWK
155 AC_PROG_CC
156 AC_PROG_CPP
157 AC_PROG_INSTALL
158 AC_PROG_LN_S
159 AC_CHECK_TOOL(RANLIB, ranlib, true)
160 dnl AC_PATH_PROG(PERL_PATH, perl)
161
162 dnl various OS checks that apparently set required flags
163 AC_AIX
164 AC_ISC_POSIX
165 AC_MINIX
166
167 dnl ## Check for libraries
168
169 dnl ## Check for header files
170
171 dnl I think these are just used all over the place, so just check for
172 dnl them at the base of the tree. If some are specific to a single
173 dnl directory, they should be moved (Comment #Spoon)
174
175 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
176 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
177 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
178
179 AC_HEADER_STDC
180 AC_CHECK_HEADERS( \
181 string.h \
182 limits.h \
183 unistd.h \
184 sys/socket.h \
185 pwd.h \
186 grp.h \
187 strings.h \
188 sys/processor.h
189 )
190 AC_HEADER_SYS_WAIT
191
192 dnl ## Check for typedefs, structures, and compiler characteristics.
193
194 AC_C_CONST
195 if test "$ac_cv_prog_gcc" = "yes"; then
196   APR_ADDTO(NOTEST_CPPFLAGS,-DAP_HAVE_DESIGNATED_INITIALIZER)
197 fi
198
199 dnl ## Check for library functions
200
201 dnl See Comment #Spoon
202
203 AC_CHECK_FUNCS( \
204 initgroups \
205 bindprocessor \
206 )
207
208 AC_CHECK_LIB(nsl, gethostbyname)
209 AC_CHECK_LIB(nsl, gethostname)
210 AC_CHECK_LIB(socket, socket)
211
212 AC_ARG_WITH(port,[  --with-port=PORT        Port on which to listen (default is 80)],
213         [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
214         [PORT=80])
215
216 AC_ARG_ENABLE(maintainer-mode,[  --enable-maintainer-mode  Turn on debugging and compile time warnings],
217 [
218   APR_ADDTO(CPPFLAGS, -DAP_DEBUG)
219 ])dnl
220
221 APACHE_ENABLE_LAYOUT
222 APACHE_ENABLE_MODULES
223
224 dnl reading config stubs
225 esyscmd(./build/config-stubs .)
226
227 APACHE_SUBST(progname)
228 APACHE_SUBST(MPM_LIB)
229 APACHE_SUBST(OS)
230 APACHE_SUBST(OS_DIR)
231 APACHE_SUBST(BUILTIN_LIBS)
232
233 PRE_SHARED_CMDS='echo ""'
234 POST_SHARED_CMDS='echo ""'
235
236 if test "$apache_need_shared" = "yes"; then
237   $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
238   case $host in
239     *-ibm-aix*)
240       HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-bE:$abs_srcdir/server/httpd.exp"
241       SH_LDFLAGS="$SH_LDFLAGS -Wl,-bI:$abs_srcdir/server/httpd.exp"
242       ;;
243     *beos)
244       SH_LDFLAGS='$(top_builddir)/_APP_'
245       PRE_SHARED_CMDS='ln -s $(top_builddir)/httpd $(top_builddir)/_APP_'
246       POST_SHARED_CMDS='rm $(top_builddir)/_APP_'
247       ;;
248     *os390)
249       HTTPD_LDFLAGS="$HTTPD_LDFLAGS --main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll"
250       SH_LDFLAGS="$SH_LDFLAGS --core-dll=$abs_srcdir/apachecore.dll"
251   esac
252   shared_build="shared-build"
253 fi
254
255 APACHE_SUBST(PRE_SHARED_CMDS)
256 APACHE_SUBST(POST_SHARED_CMDS)
257 APACHE_SUBST(shared_build)
258
259 AC_ARG_WITH(program-name,
260 [  --with-program-name     alternate executable name],[
261   progname="$withval" ], [
262   progname="httpd"] )
263
264 # SuExec parameters
265 AC_ARG_WITH(suexec-caller,
266 [  --with-suexec-caller    User allowed to call SuExec],[
267   AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
268
269 AC_ARG_WITH(suexec-userdir,
270 [  --with-suexec-userdir   User subdirectory],[
271   AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
272
273 AC_ARG_WITH(suexec-docroot,
274 [  --with-suexec-docroot   SuExec root directory],[
275   AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
276
277 AC_ARG_WITH(suexec-uidmin,
278 [  --with-suexec-uidmin    Minimal allowed UID],[
279   AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] )
280
281 AC_ARG_WITH(suexec-gidmin,
282 [  --with-suexec-gidmin    Minimal allowed GID],[
283   AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] )
284
285 AC_ARG_WITH(suexec-logfile,
286 [  --with-suexec-logfile   Set the logfile],[
287   AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
288
289 AC_ARG_WITH(suexec-safepath,
290 [  --with-suexec-safepath  Set the safepath],[
291   AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
292
293 AC_ARG_WITH(suexec-umask,
294 [  --with-suexec-umask     umask for suexec'd process],[
295   AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] )
296
297 dnl AP_LIB_DIRS specifies the additional libs from srclib/ that we need
298 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
299 AP_LIBS="$abs_builddir/srclib/pcre/libpcre.la $abs_builddir/srclib/apr-util/libaprutil.la $AP_LIBS"
300
301 dnl APR should go after the other libs, so the right symbols can be picked up
302 AP_LIBS="$AP_LIBS $abs_builddir/srclib/apr/libapr.la"
303 APACHE_SUBST(AP_LIB_DIRS)
304 APACHE_SUBST(AP_LIBS)
305
306 AC_DEFINE(AP_USING_AUTOCONF, 1,
307                 [Using autoconf to configure Apache])
308
309 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
310     AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1, 
311               [This platform doesn't suffer from the thundering herd problem])
312 fi
313
314 dnl check for endianness
315 if test "$cross_compiling" = "no"; then
316   AC_C_BIGENDIAN
317 else
318   AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
319                 [byte order is unknown due to cross-compilation])
320 fi
321
322 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile) 
323 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
324 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
325 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
326 for i in $AP_LIB_DIRS; do
327   APACHE_FAST_OUTPUT(srclib/$i/Makefile)
328 done
329
330 if test -d ./test; then
331     APACHE_FAST_OUTPUT(test/Makefile)
332 fi
333
334 dnl get the exported vars from APRUTIL
335 . ./srclib/apr-util/export_vars.sh
336 APR_ADDTO(LIBS, $APRUTIL_EXPORT_LIBS)
337 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
338
339 dnl ## Finalize the variables
340 echo $ac_n "${nl}Restore user-defined environment settings...${nl}"
341
342 APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
343 APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_)
344 APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
345 APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
346 APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_)
347 APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_)
348
349 echo $ac_n "${nl}Construct makefiles and header files...${nl}"
350
351 APACHE_GEN_CONFIG_VARS
352
353 dnl ## Build modules.c
354 rm -f modules.c
355 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
356
357 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "$prefix",
358         [Root directory of the Apache install area])
359 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "conf/$progname.conf",
360         [Location of the config file, relative to the Apache root directory])
361 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
362         [Location of the source for the current MPM])
363
364 perlbin=`$ac_aux_dir/PrintPath perl`
365 if test "x$perlbin" = "x"; then
366     perlbin="/replace/with/path/to/perl/interpreter"
367 fi
368 AC_SUBST(perlbin)
369
370 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
371
372 BSD_MAKEFILE=no
373 case $host in
374 *bsdi*)
375     # Check whether they've installed GNU make
376     if make --version > /dev/null 2>&1; then
377         true
378     else
379         BSD_MAKEFILE=yes
380     fi
381     ;;
382 esac
383
384 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,,[
385   APACHE_GEN_MAKEFILES
386 ])
387