]> granicus.if.org Git - apache/blob - configure.in
Get us closer to building on Unix. Not perfect yet, but we no longer
[apache] / configure.in
1 dnl ## Process this file with autoconf to produce a configure script
2
3 AC_PREREQ(2.13)
4 AC_INIT(acinclude.m4)
5
6 AC_CONFIG_HEADER(include/ap_config_auto.h)
7 AC_CONFIG_AUX_DIR(.)
8  
9 dnl ## This is the central place where Apache's version should be kept.
10 dnl AM_INIT_AUTOMAKE(apache, 2.0-dev)
11
12 VERSION="apache-2.0-dev"
13         
14 APACHE_VERSION=$VERSION
15 APACHE_SUBST(APACHE_VERSION)
16
17 test "$exec_prefix" = "NONE" && exec_prefix='${prefix}'
18 test "$prefix" = "NONE" && prefix='/usr/local'
19
20 dnl Absolute source/build directory
21 abs_srcdir=`(cd $srcdir && pwd)`
22 abs_builddir=`pwd`
23
24 MKDIR=$abs_srcdir/srclib/apr/build/mkdir.sh
25
26 APACHE_CONFIG_NICE(config.nice)
27
28 dnl If the source dir is not equal to the build dir, 
29 dnl then we are running in VPATH mode.
30
31 if test "$abs_builddir" != "$abs_srcdir"; then
32   USE_VPATH=1
33 fi
34
35 AC_CANONICAL_SYSTEM
36
37 dnl
38 dnl ## Preload our OS configuration
39 APR_PRELOAD
40 APACHE_PRELOAD
41
42 dnl
43 dnl Process command line arguments. This is done early in the process so the
44 dnl user can get feedback quickly in case of an error.
45 dnl
46 dnl ### need to move some of the arguments "up here"
47
48 dnl ## Check for programs
49
50 AC_PATH_PROG(RM, rm)
51 AC_PROG_AWK
52 AC_PROG_CC
53 AC_PROG_CPP
54 AC_PROG_INSTALL
55 AC_PROG_LN_S
56 AC_CHECK_TOOL(RANLIB, ranlib, true)
57 dnl AC_PATH_PROG(PERL_PATH, perl)
58
59 #
60 # Play with CPPFLAGS given what was learned from APR_PRELOAD.
61 #
62 # XXX: APR only sets this if threads are enabled.  Either APR should be
63 # fixed to always set it (most likely), or we should test for threads.
64 #
65 if test -n "$THREAD_CPPFLAGS"; then
66     CPPFLAGS="$CPPFLAGS $THREAD_CPPFLAGS"
67 fi
68
69 dnl various OS checks that apparently set required flags
70 AC_AIX
71 AC_ISC_POSIX
72 AC_MINIX
73
74 dnl ## Check for libraries
75
76 dnl ## Check for header files
77
78 dnl I think these are just used all over the place, so just check for
79 dnl them at the base of the tree. If some are specific to a single
80 dnl directory, they should be moved (Comment #Spoon)
81
82 dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols
83 dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for
84 dnl explicitly so that the normal HAVE_xxx_H symbol is defined.
85
86 AC_HEADER_STDC
87 AC_CHECK_HEADERS( \
88 string.h \
89 limits.h \
90 unistd.h \
91 sys/socket.h \
92 pwd.h \
93 grp.h \
94 strings.h
95 )
96 AC_HEADER_SYS_WAIT
97
98 dnl ## Check for typedefs, structures, and compiler characteristics.
99
100 AC_C_CONST
101
102 dnl ## Check for library functions
103
104 dnl See Comment #Spoon
105
106 AC_CHECK_FUNCS( \
107 initgroups \
108 )
109
110 AC_CHECK_LIB(nsl, gethostbyname)
111 AC_CHECK_LIB(nsl, gethostname)
112 AC_CHECK_LIB(socket, socket)
113
114 AC_ARG_WITH(optim,[  --with-optim="FLAG"       obsolete (use OPTIM environment variable)],
115         [AC_MSG_ERROR('option --with-optim is obsolete; use OPTIM environment variable instead')])
116
117 AC_ARG_WITH(port,[  --with-port=PORT        Port on which to listen (default is 80)],
118         [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi],
119         [PORT=80])
120
121 AC_ARG_WITH(debug,[  --with-debug            Turn on debugging and compile time warnings],
122         [if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -g -Wall"; else CFLAGS="$CFLAGS -g"; fi])
123
124 AC_ARG_WITH(maintainer-mode,[  --with-maintainer-mode  Turn on debugging and compile time warnings],
125         [if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -g -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -DAP_DEBUG"; else CFLAGS="$CFLAGS -g"; fi])
126
127 APACHE_ENABLE_LAYOUT
128 APACHE_ENABLE_MODULES
129
130 INCLUDES="-I\$(top_srcdir)/include -I\$(top_srcdir)/srclib/apr/include -I\$(top_srcdir)/srclib/apr-util/include"
131 if test -n "$USE_VPATH"; then
132   INCLUDES="$INCLUDES -I\$(top_builddir)/include -I\$(top_builddir)/srclib/apr/include"
133 fi
134
135 dnl reading config stubs
136 esyscmd(./build/config-stubs .)
137
138 INCLUDES="$INCLUDES -I\$(top_srcdir)/os/\$(OS_DIR)"
139 EXTRA_LIBS="$EXTRA_LIBS $LIBS"
140 EXTRA_LDFLAGS="$LDFLAGS"
141 LIBS=""
142 LDFLAGS=""
143 APACHE_SUBST(progname)
144 APACHE_SUBST(EXTRA_CFLAGS)
145 APACHE_SUBST(EXTRA_LDFLAGS)
146 APACHE_SUBST(EXTRA_LIBS)
147 APACHE_SUBST(INCLUDES)
148 APACHE_SUBST(MPM_LIB)
149 APACHE_SUBST(OS)
150 APACHE_SUBST(OS_DIR)
151 APACHE_SUBST(BUILTIN_LIBS)
152
153 AM_DISABLE_SHARED
154 AM_PROG_LIBTOOL
155 APACHE_LIBTOOL_SILENT
156
157 if test "$apache_need_shared" = "yes"; then
158   $SHELL $srcdir/ltconfig --output=shlibtool --disable-static --srcdir=$srcdir --cache-file=./config.cache $srcdir/ltmain.sh
159   case $PLATFORM in
160     *os390)
161       CFLAGS="$CFLAGS -Wc,DLL,EXPORTALL"
162       ;;
163   esac
164 fi
165
166 AC_ARG_WITH(program-name,
167 [  --with-program-name     alternate executable name],[
168   progname="$withval" ], [
169   progname="httpd"] )
170
171 # SuExec parameters
172 AC_ARG_WITH(suexec-caller,
173 [  --with-suexec-caller    User allowed to call SuExec],[
174   AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] )
175
176 AC_ARG_WITH(suexec-userdir,
177 [  --with-suexec-userdir   User subdirectory],[
178   AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] )
179
180 AC_ARG_WITH(suexec-docroot,
181 [  --with-suexec-docroot   SuExec root directory],[
182   AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] )
183
184 AC_ARG_WITH(suexec-uidmin,
185 [  --with-suexec-uidmin    Minimal allowed UID],[
186   AC_DEFINE_UNQUOTED(AP_UID_MIN, "$withval", [Minimal allowed UID] ) ] )
187
188 AC_ARG_WITH(suexec-gidmin,
189 [  --with-suexec-gidmin    Minimal allowed GID],[
190   AC_DEFINE_UNQUOTED(AP_GID_MIN, "$withval", [Minimal allowed GID] ) ] )
191
192 AC_ARG_WITH(suexec-logfile,
193 [  --with-suexec-logfile   Set the logfile],[
194   AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] )
195
196 AC_ARG_WITH(suexec-safepath,
197 [  --with-suexec-safepath  Set the safepath],[
198   AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] )
199
200 dnl AP_LIB_DIRS specifies the additional libs from srclib/ that we need
201 dnl AP_LIBS specifies the actual libraries. note we have some required libs.
202 AP_LIBS="srclib/pcre/libpcre.la srclib/apr-util/libaprutil.la $AP_LIBS"
203
204 dnl APR should go after the other libs, so the right symbols can be picked up
205 AP_LIBS="$AP_LIBS srclib/apr/libapr.la"
206 APACHE_SUBST(AP_LIB_DIRS)
207 APACHE_SUBST(AP_LIBS)
208
209 AC_DEFINE(AP_USING_AUTOCONF, 1,
210                 [Using autoconf to configure Apache])
211
212 if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then
213     AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1, 
214               [This platform doesn't suffer from the thundering herd problem])
215 fi
216
217 dnl check for endianness
218 if test "$cross_compiling" = "no"; then
219   AC_C_BIGENDIAN
220 else
221   AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
222                 [byte order is unknown due to cross-compilation])
223 fi
224
225 APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile) 
226 APACHE_FAST_OUTPUT(os/beos/Makefile os/os2/Makefile os/Makefile)
227 APACHE_FAST_OUTPUT(os/unix/Makefile server/Makefile)
228 APACHE_FAST_OUTPUT(support/Makefile srclib/pcre/Makefile)
229 for i in $AP_LIB_DIRS; do
230   APACHE_FAST_OUTPUT(srclib/$i/Makefile)
231 done
232
233 if test -d ./test; then
234     APACHE_FAST_OUTPUT(test/Makefile)
235 fi
236
237 dnl ## Run configure for packages Apache uses
238 dnl ## This has been placed at this location for a reason.  This allows
239 dnl ## Apache to set some variable that APR needs (like whether to enable
240 dnl ## or disable threads), while still allowing APR to run and generate
241 dnl ## APRVARS before Apache generates it's Makefiles and the related files.
242 dnl ## This allows APR to detect libraries like dl and tell Apache that it
243 dnl ## needs to include or not include them.
244 APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --disable-shared")
245 APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --disable-shared")
246 APR_SUBDIR_CONFIG(srclib/pcre)
247 . ./srclib/apr/APRVARS
248
249 dnl get the exported vars from APRUTIL
250 . ./srclib/apr-util/export_vars.sh
251 EXTRA_LIBS="$EXTRA_LIBS $APRUTIL_EXPORT_LIBS"
252 AP_LIBS="$AP_LIBS $LIBTOOL_LIBS"
253
254 APACHE_GEN_CONFIG_VARS
255
256 dnl ## Build modules.c
257 rm -f modules.c
258 echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
259
260 AC_DEFINE_UNQUOTED(HTTPD_ROOT, "$prefix",
261         [Root directory of the Apache install area])
262 AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "conf/$progname.conf",
263         [Location of the config file, relative to the Apache root directory])
264 AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
265         [Location of the source for the current MPM])
266
267 perlbin=`$srcdir/build/PrintPath perl`
268 AC_SUBST(perlbin)
269
270 dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
271
272 BSD_MAKEFILE=no
273 case "$host_alias" in
274 *bsdi*)
275     # Check whether they've installed GNU make
276     if make --version > /dev/null 2>&1; then
277         true
278     else
279         BSD_MAKEFILE=yes
280     fi
281     ;;
282 esac
283
284 AC_OUTPUT($APACHE_OUTPUT_FILES support/apxs support/apachectl,,[
285   APACHE_GEN_MAKEFILES
286 ])
287