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