1dnl 2dnl Autoconf configuration for Apache httpd 3dnl 4dnl Use ./buildconf to produce a configure script 5dnl 6 7AC_PREREQ(2.50) 8AC_INIT(ABOUT_APACHE) 9 10AC_CONFIG_HEADER(include/ap_config_auto.h) 11AC_CONFIG_AUX_DIR(build) 12 13dnl Absolute source/build directory 14abs_srcdir=`(cd $srcdir && pwd)` 15abs_builddir=`pwd` 16 17dnl Ensure that the httpd version is included 18HTTPD_VERSION=`$abs_srcdir/build/get-version.sh all $abs_srcdir/include/ap_release.h AP_SERVER` 19AC_SUBST(HTTPD_VERSION) 20 21dnl # 22dnl # Include our own M4 macros along with those for APR and libtool 23dnl # 24sinclude(build/apr_common.m4) 25sinclude(build/find_apr.m4) 26sinclude(build/find_apu.m4) 27sinclude(acinclude.m4) 28 29dnl Later versions of autoconf (>= 2.62) by default cause the produced 30dnl configure script to emit at least warnings when it comes across unknown 31dnl command line options. These versions also have the macro 32dnl AC_DISABLE_OPTION_CHECKING defined which turns this off by default. 33dnl We want to have this turned off here since our configure calls can 34dnl contain options for APR / APR-UTIL configure that are unknown to us. 35dnl So avoid confusing the user by turning this off. See also PR 45221. 36ifdef([AC_DISABLE_OPTION_CHECKING], [AC_DISABLE_OPTION_CHECKING]) 37 38dnl XXX we can't just use AC_PREFIX_DEFAULT because that isn't subbed in 39dnl by configure until it is too late. Is that how it should be or not? 40dnl Something seems broken here. 41AC_PREFIX_DEFAULT(/usr/local/apache2) 42 43dnl Get the layout here, so we can pass the required variables to apr 44APR_ENABLE_LAYOUT(Apache, [errordir iconsdir htdocsdir cgidir]) 45 46dnl reparse the configure arguments. 47APR_PARSE_ARGUMENTS 48 49dnl export expanded and relative configure argument variables 50APACHE_EXPORT_ARGUMENTS 51 52dnl Save user-defined environment settings for later restoration 53dnl 54APR_SAVE_THE_ENVIRONMENT(CPPFLAGS) 55APR_SAVE_THE_ENVIRONMENT(CFLAGS) 56APR_SAVE_THE_ENVIRONMENT(CXXFLAGS) 57APR_SAVE_THE_ENVIRONMENT(LDFLAGS) 58APR_SAVE_THE_ENVIRONMENT(LIBS) 59APR_SAVE_THE_ENVIRONMENT(INCLUDES) 60 61dnl Generate ./config.nice for reproducing runs of configure 62dnl 63APR_CONFIG_NICE(config.nice) 64 65nl=' 66' 67dnl Check that mkdir -p works 68APR_MKDIR_P_CHECK($top_srcdir/build/mkdir.sh) 69 70dnl get an EGREP to use in the Makefiles 71AC_PROG_EGREP 72APACHE_SUBST(EGREP) 73 74dnl ## Run configure for packages Apache uses 75 76dnl shared library support for these packages doesn't currently 77dnl work on some platforms 78 79AC_CANONICAL_SYSTEM 80 81orig_prefix="$prefix" 82 83AC_MSG_NOTICE([]) 84AC_MSG_NOTICE([Configuring Apache Portable Runtime library...]) 85AC_MSG_NOTICE([]) 86 87AC_ARG_WITH(included-apr, 88APACHE_HELP_STRING(--with-included-apr,Use bundled copies of APR/APR-Util)) 89 90if test "x$with_included_apr" = "xyes"; then 91 apr_found=reconfig 92 if test ! -d srclib/apr && test ! -d $srcdir/srclib/apr; then 93 AC_MSG_ERROR([Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.]) 94 fi 95else 96 APR_FIND_APR("$srcdir/srclib/apr", "./srclib/apr", 1, 1 2, [ 97 version=`$apr_config --version` 98 case x${version} in 99 x1.[[0-3]].*) 100 AC_MSG_WARN([APR version 1.4.0 or later is required, found $version]) 101 apr_acceptable=no 102 ;; 103 esac 104 unset version 105 ]) 106fi 107 108if test "$apr_found" = "no"; then 109 AC_MSG_ERROR([APR not found. Please read the documentation.]) 110fi 111 112if test "$apr_found" = "reconfig"; then 113 APR_SUBDIR_CONFIG(srclib/apr, 114 [$apache_apr_flags --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir --datadir=$datadir --with-installbuilddir=$installbuilddir], 115 [--enable-layout=*|\'--enable-layout=*]) 116 dnl We must be the first to build and the last to be cleaned 117 AP_BUILD_SRCLIB_DIRS="apr $AP_BUILD_SRCLIB_DIRS" 118 AP_CLEAN_SRCLIB_DIRS="$AP_CLEAN_SRCLIB_DIRS apr" 119 120 dnl We have to find apr-N-config when we reconfigure APR. 121 for majorver in 1 2; do 122 test_apr_config="./srclib/apr/apr-${majorver}-config" 123 if test -f "$test_apr_config"; then 124 apr_config="$test_apr_config" 125 fi 126 done 127fi 128 129APR_SETIFNULL(CC, `$apr_config --cc`) 130APR_SETIFNULL(CPP, `$apr_config --cpp`) 131APR_ADDTO(CFLAGS, `$apr_config --cflags`) 132APR_ADDTO(CPPFLAGS, `$apr_config --cppflags`) 133dnl internal-only CPPFLAGS (shouldn't affect third-party module builds) 134INTERNAL_CPPFLAGS="" 135APR_ADDTO(LDFLAGS, `$apr_config --ldflags`) 136SHLIBPATH_VAR=`$apr_config --shlib-path-var` 137APR_BINDIR=`$apr_config --bindir` 138APR_INCLUDEDIR=`$apr_config --includedir` 139APR_INCLUDES=`$apr_config --includes` 140APR_VERSION=`$apr_config --version` 141apr_major_version=`echo ${APR_VERSION} | sed 's,\..*,,'` 142APR_CONFIG="$APR_BINDIR/apr-${apr_major_version}-config" 143 144AC_MSG_NOTICE([]) 145AC_MSG_NOTICE([Configuring Apache Portable Runtime Utility library...]) 146AC_MSG_NOTICE([]) 147 148if test "x${apr_major_version}" = "x2"; then 149 apu_found=obsolete 150elif test "x$with_included_apr" = "xyes"; then 151 apu_found=reconfig 152 if test ! -d srclib/apr-util && test ! -d $srcdir/srclib/apr-util; then 153 AC_MSG_ERROR([Bundled APR-Util requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.]) 154 fi 155else 156 dnl If httpd is buildconf'ed against an apr 2.x tree, then 1.x 157 dnl isn't supported. 158 ifdef([APR_FIND_APU], [ 159 APR_FIND_APU("$srcdir/srclib/apr-util", "./srclib/apr-util", 160 1, ${apr_major_version}) 161 ], [apu_found=no]) 162fi 163 164if test "$apu_found" = "no"; then 165 AC_MSG_ERROR([APR-util not found. Please read the documentation.]) 166fi 167 168# Catch some misconfigurations: 169case ${apr_found}.${apu_found} in 170reconfig.yes) 171 AC_MSG_ERROR([Cannot use an external APR-util with the bundled APR]) 172 ;; 173yes.reconfig) 174 AC_MSG_ERROR([Cannot use an external APR with the bundled APR-util]) 175 ;; 176esac 177 178if test "$apu_found" = "reconfig"; then 179 APR_SUBDIR_CONFIG(srclib/apr-util, 180 [--with-apr=../apr --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir], 181 [--enable-layout=*|\'--enable-layout=*]) 182 dnl We must be the last to build and the first to be cleaned 183 AP_BUILD_SRCLIB_DIRS="$AP_BUILD_SRCLIB_DIRS apr-util" 184 AP_CLEAN_SRCLIB_DIRS="apr-util $AP_CLEAN_SRCLIB_DIRS" 185 dnl APR and APR-Util major versions must match 186 apu_config="./srclib/apr-util/apu-${apr_major_version}-config" 187fi 188 189if test "$apu_found" = "obsolete"; then 190 AC_MSG_NOTICE([APR-util obsoleted, woohoo]) 191else 192 APR_ADDTO(LDFLAGS, `$apu_config --ldflags`) 193 APU_BINDIR=`$apu_config --bindir` 194 APU_INCLUDEDIR=`$apu_config --includedir` 195 APU_INCLUDES=`$apu_config --includes` 196 APU_VERSION=`$apu_config --version` 197 APU_CONFIG="$APU_BINDIR/apu-`echo ${APU_VERSION} | sed 's,\..*,,'`-config" 198fi 199 200dnl In case we picked up CC and CPP from APR, get that info into the 201dnl config cache so that PCRE uses it. Otherwise, CC and CPP used for 202dnl PCRE and for our config tests will be whatever PCRE determines. 203AC_PROG_CC 204AC_PROG_CPP 205 206dnl Try to get c99 support for variadic macros 207ifdef([AC_PROG_CC_C99], [AC_PROG_CC_C99]) 208 209if test "x${cache_file}" = "x/dev/null"; then 210 # Likewise, ensure that CC and CPP are passed through to the pcre 211 # configure script iff caching is disabled (the autoconf 2.5x default). 212 export CC; export CPP 213fi 214 215AC_ARG_WITH(pcre, 216APACHE_HELP_STRING(--with-pcre=PATH,Use external PCRE library)) 217 218AC_PATH_PROG(PCRE_CONFIG, pcre-config, false) 219if test -d "$with_pcre" && test -x "$with_pcre/bin/pcre-config"; then 220 PCRE_CONFIG=$with_pcre/bin/pcre-config 221elif test -x "$with_pcre"; then 222 PCRE_CONFIG=$with_pcre 223fi 224 225if test "$PCRE_CONFIG" != "false"; then 226 if $PCRE_CONFIG --version >/dev/null 2>&1; then :; else 227 AC_MSG_ERROR([Did not find pcre-config script at $PCRE_CONFIG]) 228 fi 229 case `$PCRE_CONFIG --version` in 230 [[1-5].*]) 231 AC_MSG_ERROR([Need at least pcre version 6.0]) 232 ;; 233 esac 234 AC_MSG_NOTICE([Using external PCRE library from $PCRE_CONFIG]) 235 APR_ADDTO(PCRE_INCLUDES, [`$PCRE_CONFIG --cflags`]) 236 APR_ADDTO(PCRE_LIBS, [`$PCRE_CONFIG --libs`]) 237else 238 AC_MSG_ERROR([pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/]) 239fi 240APACHE_SUBST(PCRE_LIBS) 241 242AC_MSG_NOTICE([]) 243AC_MSG_NOTICE([Configuring Apache httpd...]) 244AC_MSG_NOTICE([]) 245 246dnl If the source dir is not equal to the build dir, 247dnl then we are running in VPATH mode. 248 249APR_ADDTO(INCLUDES, [-I.]) 250 251if test "$abs_builddir" != "$abs_srcdir"; then 252 APR_ADDTO(INCLUDES, [-I\$(top_builddir)/include]) 253fi 254 255APR_ADDTO(INCLUDES, [-I\$(top_srcdir)/os/\$(OS_DIR) -I\$(top_srcdir)/include]) 256 257# apr/apr-util --includes may pick up system paths for dependent 258# libraries, so ensure these are later in INCLUDES than local source 259# directories. 260APR_ADDTO(INCLUDES, $APR_INCLUDES) 261APR_ADDTO(INCLUDES, $APU_INCLUDES) 262 263dnl Add in path to PCRE includes 264APR_ADDTO(INCLUDES, $PCRE_INCLUDES) 265 266AC_MSG_NOTICE([]) 267AC_MSG_NOTICE([Applying OS-specific hints for httpd...]) 268AC_MSG_NOTICE([]) 269 270case $host in 271 *os2*) 272 # Use a custom made libtool replacement 273 echo "using aplibtool" 274 LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool" 275 SH_LIBTOOL="$LIBTOOL --shared --export-all" 276 SH_LIBS="\$(ALL_LIBS)" 277 CORE_IMPLIB_FILE="ApacheCoreOS2.la" 278 CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE" 279 MK_IMPLIB="emximp" 280 other_targets="$other_targets os2core" 281 INSTALL_PROG_FLAGS="-e .exe" 282 SHLTCFLAGS="" 283 LTCFLAGS="" 284 ;; 285 *) 286 if test "x$LTFLAGS" = "x"; then 287 LTFLAGS='--silent' 288 fi 289 my_libtool=`$apr_config --apr-libtool` 290 LIBTOOL="$my_libtool \$(LTFLAGS)" 291 libtoolversion=`$my_libtool --version` 292 case $libtoolversion in 293 *1.[[45]]* | *[[2-9]].[[0-9]]*) 294 SH_LIBTOOL='$(LIBTOOL)' 295 SHLTCFLAGS="-prefer-pic" 296 LTCFLAGS="-prefer-non-pic -static" 297 ;; 298 *) 299 SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool $(LTFLAGS)' 300 SHLTCFLAGS="" 301 LTCFLAGS="" 302 ;; 303 esac 304 ;; 305esac 306APACHE_SUBST(SHLTCFLAGS) 307APACHE_SUBST(LTCFLAGS) 308 309case $host in 310 *-apple-aux3*) 311 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1]) 312 ;; 313 *os2-emx*) 314 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1]) 315 ;; 316 *-linux-*) 317 case `uname -r` in 318 # Unserialized accept() was not recommended until Linux 2.2. 319 [[01]].* | 2.[[01]]* ) 320 ;; 321 * ) 322 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1]) 323 ;; 324 esac 325 ;; 326 *486-*-bsdi* | *-netbsd* | *-freebsd* | *-apple-darwin* | *-dec-osf* | *-qnx) 327 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1]) 328 ;; 329 *-solaris2*) 330 dnl This is a hack -- we should be using AC_TRY_RUN instead 331 ap_platform_runtime_link_flag="-R" 332 dnl solaris 8 and above don't have a thundering herd 333 dnl not sure about rev's before this one. 334 case `uname -r` in 335 5.[567]*) 336 ;; 337 * ) 338 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1]) 339 ;; 340 esac 341 ;; 342 *cygwin*) 343 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1]) 344 ;; 345 *mingw32*) 346 APR_ADDTO(INTERNAL_CPPFLAGS, [-DAP_DECLARE_EXPORT]) 347 APR_SETIFNULL(ac_cv_func_times, [no]) 348 APR_SETIFNULL(ac_cv_func_getpwnam, [no]) 349 APR_SETIFNULL(ac_cv_func_getgrnam, [no]) 350 ;; 351 *aix*) 352 aixver=`echo $host | sed 's/^[[^0-9]]*//' | sed 's/\.//g'` 353 if test $aixver -ge 4320; then 354 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1]) 355 fi 356 ;; 357 *os390*) 358 APR_SETVAR(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, [1]) 359 ;; 360esac 361 362APR_SETVAR(AP_NONBLOCK_WHEN_MULTI_LISTEN, [1]) 363 364dnl 365dnl Process command line arguments. This is done early in the process so the 366dnl user can get feedback quickly in case of an error. 367dnl 368dnl ### need to move some of the arguments "up here" 369 370dnl ## Check for programs 371 372AC_PATH_PROG(RM, rm) 373AC_PATH_PROG(PKGCONFIG, pkg-config) 374AC_PATH_PROG(RSYNC, rsync) 375AC_PROG_AWK 376AC_PROG_LN_S 377AC_CHECK_TOOL(RANLIB, ranlib, true) 378dnl AC_PATH_PROG(PERL_PATH, perl) 379AC_CHECK_PROGS(LYNX_PATH,[lynx links elinks], [lynx]) 380 381# Hard-coded install programs 382MKINSTALLDIRS="\$(abs_srcdir)/build/mkdir.sh" 383INSTALL="\$(LIBTOOL) --mode=install \$(abs_srcdir)/build/install.sh -c" 384APACHE_SUBST(MKINSTALLDIRS) 385APACHE_SUBST(INSTALL) 386 387dnl Various OS checks that apparently set required flags 388ifdef([AC_USE_SYSTEM_EXTENSIONS], [ 389AC_USE_SYSTEM_EXTENSIONS 390], [ 391AC_AIX 392AC_MINIX 393]) 394 395AC_ISC_POSIX 396 397# Ensure that satisfactory versions of apr and apr-util are 398# found if external copies are configured. 399if test "${apr_found}" = "yes"; then 400 # Require at least APR 1.3.x otherwise fail 401 APACHE_CHECK_APxVER([apr], 1, 3) 402fi 403 404if test "${apu_found}" = "yes"; then 405 # Require at least APR-util 1.3.x otherwise fail 406 if test "${apr_found}" = "yes"; then 407 # we need to add the APR includes to CPPFLAGS 408 apu_ckver_CPPFLAGS="$CPPFLAGS" 409 CPPFLAGS="$CPPFLAGS `$apr_config --includes`" 410 APACHE_CHECK_APxVER([apu], 1, 3) 411 CPPFLAGS="$apu_ckver_CPPFLAGS" 412 else 413 APACHE_CHECK_APxVER([apu], 1, 3) 414 fi 415fi 416 417dnl Check for what we can generate dependency files with 418APR_CHECK_DEPEND 419 420dnl ## Check for libraries 421 422dnl ## Check for header files 423 424dnl I think these are just used all over the place, so just check for 425dnl them at the base of the tree. If some are specific to a single 426dnl directory, they should be moved (Comment #Spoon) 427 428dnl Regarding standard header files: AC_HEADER_STDC doesn't set symbols 429dnl HAVE_STRING_H, HAVE_STDLIB_H, etc., so those are checked for 430dnl explicitly so that the normal HAVE_xxx_H symbol is defined. 431 432AC_HEADER_STDC 433AC_CHECK_HEADERS( \ 434string.h \ 435limits.h \ 436unistd.h \ 437sys/socket.h \ 438pwd.h \ 439grp.h \ 440strings.h \ 441sys/prctl.h \ 442sys/processor.h \ 443sys/sem.h \ 444sys/sdt.h \ 445sys/loadavg.h 446) 447AC_HEADER_SYS_WAIT 448 449dnl ## Check for typedefs, structures, and compiler characteristics. 450 451AC_C_CONST 452 453dnl ## Check for library functions 454dnl ## sqrt() only needed in support/ab.c 455saved_LIBS="$LIBS" 456LIBS="" 457AC_SEARCH_LIBS(sqrt, m) 458MATH_LIBS="$LIBS" 459APACHE_SUBST(MATH_LIBS) 460LIBS="$saved_LIBS" 461 462saved_LIBS="$LIBS" 463LIBS="" 464AC_SEARCH_LIBS(crypt, crypt) 465CRYPT_LIBS="$LIBS" 466APACHE_SUBST(CRYPT_LIBS) 467LIBS="$saved_LIBS" 468 469dnl See Comment #Spoon 470 471AC_CHECK_FUNCS( \ 472getpwnam \ 473getgrnam \ 474initgroups \ 475bindprocessor \ 476prctl \ 477timegm \ 478getpgid \ 479fopen64 \ 480getloadavg 481) 482 483dnl confirm that a void pointer is large enough to store a long integer 484APACHE_CHECK_VOID_PTR_LEN 485 486AC_CACHE_CHECK([for gettid()], ac_cv_gettid, 487[AC_TRY_RUN(#define _GNU_SOURCE 488#include <unistd.h> 489#include <sys/syscall.h> 490#include <sys/types.h> 491int main(int argc, char **argv) { 492pid_t t = syscall(SYS_gettid); return t == -1 ? 1 : 0; }, 493[ac_cv_gettid=yes], [ac_cv_gettid=no], [ac_cv_gettid=no])]) 494if test "$ac_cv_gettid" = "yes"; then 495 AC_DEFINE(HAVE_GETTID, 1, [Define if you have gettid()]) 496fi 497 498dnl ## Check for the tm_gmtoff field in struct tm to get the timezone diffs 499AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff, 500[AC_TRY_COMPILE([#include <sys/types.h> 501#include <time.h>], [struct tm tm; tm.tm_gmtoff;], 502 ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)]) 503if test "$ac_cv_struct_tm_gmtoff" = "yes"; then 504 AC_DEFINE(HAVE_GMTOFF, 1, [Define if struct tm has a tm_gmtoff field]) 505fi 506 507dnl ## Set up any appropriate OS-specific environment variables for apachectl 508 509case $host in 510 *aix*) 511 # for 32-bit builds, increase MAXDATA to allow lots of threads 512 if test x$OBJECT_MODE != x64; then 513 OS_SPECIFIC_VARS="LDR_CNTRL=\"MAXDATA=0x80000000\" ; export LDR_CNTRL ;" 514 fi 515 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS AIXTHREAD_SCOPE=S ; export AIXTHREAD_SCOPE" 516 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_MUTEX_DEBUG=OFF ; export AIXTHREAD_MUTEX_DEBUG" 517 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_RWLOCK_DEBUG=OFF ; export AIXTHREAD_RWLOCK_DEBUG" 518 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; AIXTHREAD_COND_DEBUG=OFF ; export AIXTHREAD_COND_DEBUG" 519 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; SPINLOOPTIME=1000 ; export SPINLOOPTIME" 520 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; YIELDLOOPTIME=8 ; export YIELDLOOPTIME" 521 OS_SPECIFIC_VARS="$OS_SPECIFIC_VARS ; MALLOCMULTIHEAP=considersize,heaps:8 ; export MALLOCMULTIHEAP" 522 ;; 523 *os390*) 524 OS_SPECIFIC_VARS="export _CEE_RUNOPTS=\"STACK(,,ANY)\" ; export _EDC_ADD_ERRNO2=1" 525 ;; 526 *) 527 OS_SPECIFIC_VARS="" 528esac 529 530AC_ARG_WITH(port,APACHE_HELP_STRING(--with-port=PORT,Port on which to listen (default is 80)), 531 [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-port requires a value (the TCP port number)'); else PORT="$withval"; fi], 532 [PORT=80]) 533 534AC_ARG_WITH(sslport,APACHE_HELP_STRING(--with-sslport=SSLPORT,Port on which to securelisten (default is 443)), 535 [if test "$withval" = "yes"; then AC_MSG_ERROR('option --with-sslport requires a value (the SSL TCP port number)'); else SSLPORT="$withval"; fi], 536 [SSLPORT=443]) 537 538DTRACE=true 539AC_ARG_ENABLE(dtrace,APACHE_HELP_STRING(--enable-dtrace,Enable DTrace probes), 540[ 541 enable_dtrace=$enableval 542 if test "$enableval" = "yes"; then 543 APR_ADDTO(CPPFLAGS, -DAPR_DTRACE_PROVIDER) 544 AC_MSG_ERROR('DTrace Support in the build system is not complete. Patches Welcome!') 545 fi 546], 547[ 548 enable_dtrace=no 549]) 550 551dnl Disabled dtrace build for now. 552enable_dtrace=no 553 554case $host in 555 *-solaris2*) 556 if test $enable_dtrace = "yes" -a "$ac_cv_header_sys_sdt_h" = "yes"; then 557 AC_DEFINE(AP_ENABLE_DTRACE, 1, 558 [Enable DTrace probes]) 559 DTRACE="/usr/sbin/dtrace $DTRACEFLAGS" 560 test -f include/apache_probes.h || $DTRACE -h -s apache_probes.d -o include/apache_probes.h 561 fi 562 ;; 563esac 564 565APACHE_SUBST(DTRACE) 566 567AC_ARG_ENABLE(hook-probes,APACHE_HELP_STRING(--enable-hook-probes,Enable APR hook probes), 568[ 569 if test "$enableval" = "yes"; then 570 AC_DEFINE(AP_HOOK_PROBES_ENABLED, 1, 571 [Enable the APR hook probes capability, reading from ap_hook_probes.h]) 572 APR_ADDTO(INTERNAL_CPPFLAGS, -DAP_HOOK_PROBES_ENABLED) 573 fi 574])dnl 575 576AC_ARG_ENABLE(exception-hook,APACHE_HELP_STRING(--enable-exception-hook,Enable fatal exception hook), 577[ 578 if test "$enableval" = "yes"; then 579 AC_DEFINE(AP_ENABLE_EXCEPTION_HOOK, 1, 580 [Allow modules to run hook after a fatal exception]) 581 fi 582])dnl 583 584AC_ARG_ENABLE(load-all-modules,APACHE_HELP_STRING(--enable-load-all-modules,Load all modules), 585[ 586 LOAD_ALL_MODULES=$enableval 587 AC_MSG_NOTICE([Setting "LOAD_ALL_MODULES" to $LOAD_ALL_MODULES]) 588], 589[ 590 LOAD_ALL_MODULES="no" 591]) 592 593AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings and load all compiled modules), 594[ 595 if test "$enableval" = "yes"; then 596 APR_ADDTO(CPPFLAGS, -DAP_DEBUG) 597 if test "$GCC" = "yes"; then 598 APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wpointer-arith]) 599 APACHE_ADD_GCC_CFLAG([-Wdeclaration-after-statement]) 600 APACHE_ADD_GCC_CFLAG([-Werror=declaration-after-statement]) 601 APACHE_ADD_GCC_CFLAG([-Wformat]) 602 APACHE_ADD_GCC_CFLAG([-Wformat-security]) 603 APACHE_ADD_GCC_CFLAG([-Werror=format-security]) 604 elif test "$AIX_XLC" = "yes"; then 605 APR_ADDTO(CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro) 606 fi 607 if test "x$enable_load_all_modules" = "x"; then 608 LOAD_ALL_MODULES=yes 609 AC_MSG_NOTICE([Maintainer mode setting "LOAD_ALL_MODULES" to $LOAD_ALL_MODULES]) 610 fi 611 if test "x$enable_bucketeer" = "x"; then 612 enable_bucketeer=yes 613 AC_MSG_NOTICE([Maintainer mode setting "enable_bucketeer" to yes]) 614 fi 615 fi 616])dnl 617 618AC_ARG_ENABLE(debugger-mode,APACHE_HELP_STRING(--enable-debugger-mode,Turn on debugging and compile time warnings and turn off optimization), 619[ 620 if test "$enableval" = "yes"; then 621 APR_ADDTO(CPPFLAGS, -DAP_DEBUG) 622 if test "$GCC" = "yes"; then 623 APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wpointer-arith -O0]) 624 APACHE_ADD_GCC_CFLAG([-Wdeclaration-after-statement]) 625 APACHE_ADD_GCC_CFLAG([-Werror=declaration-after-statement]) 626 APACHE_ADD_GCC_CFLAG([-Wformat]) 627 APACHE_ADD_GCC_CFLAG([-Wformat-security]) 628 APACHE_ADD_GCC_CFLAG([-Werror=format-security]) 629 elif test "$AIX_XLC" = "yes"; then 630 APR_ADDTO(CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro) 631 fi 632 fi 633])dnl 634 635dnl Conditionally enable PIE support for GNU toolchains. 636AC_ARG_ENABLE(pie,APACHE_HELP_STRING(--enable-pie,Build httpd as a Position Independent Executable)) 637if test "$enable_pie" = "yes"; then 638 AC_CACHE_CHECK([whether $CC accepts PIE flags], [ap_cv_cc_pie], [ 639 save_CFLAGS=$CFLAGS 640 save_LDFLAGS=$LDFLAGS 641 CFLAGS="$CFLAGS -fPIE" 642 LDFLAGS="$LDFLAGS -pie" 643 AC_TRY_RUN([static int foo[30000]; int main () { return 0; }], 644 [ap_cv_cc_pie=yes], [ap_cv_cc_pie=no], [ap_cv_cc_pie=yes]) 645 CFLAGS=$save_CFLAGS 646 LDFLAGS=$save_LDFLAGS 647 ]) 648 if test "$ap_cv_cc_pie" = "yes"; then 649 PICFLAGS="-fPIE" 650 PILDFLAGS="-pie" 651 else 652 AC_ERROR([--enable-pie requested but $CC failed using PIE flags]) 653 fi 654fi 655APACHE_SUBST(PICFLAGS) 656APACHE_SUBST(PILDFLAGS) 657 658prefix="$orig_prefix" 659APACHE_ENABLE_MODULES 660 661dnl reading config stubs 662esyscmd(./build/config-stubs .) 663 664APACHE_SUBST(progname) 665APACHE_SUBST(OS) 666APACHE_SUBST(OS_DIR) 667APACHE_SUBST(BUILTIN_LIBS) 668APACHE_SUBST(SHLIBPATH_VAR) 669APACHE_SUBST(OS_SPECIFIC_VARS) 670 671PRE_SHARED_CMDS='echo ""' 672POST_SHARED_CMDS='echo ""' 673 674dnl apache_need_shared tells us if Apache modules are being built as DSOs 675 676if test "$apache_need_shared" = "yes"; then 677 if test -f $ac_aux_dir/ltconfig; then 678 $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh 679 fi 680 shared_build="shared-build" 681fi 682 683dnl enable_so tells us if *any* modules can be built as DSOs 684 685if test "$enable_so" = "yes" -o "$enable_so" = "static"; then 686 case $host in 687 *-ibm-aix*) 688 APR_ADDTO(HTTPD_LDFLAGS, [-Wl,-uXML_Parse -Wl,-bE:$abs_builddir/server/httpd.exp]) 689 APR_ADDTO(SH_LDFLAGS, [\$(EXTRA_LDFLAGS) \$(EXTRA_LIBS)]) 690 APR_ADDTO(UTIL_LDFLAGS, [-Wl,-uXML_Parse]) 691 ;; 692 *os390) 693 APR_ADDTO(HTTPD_LDFLAGS, [--main=$abs_srcdir/server/main.o --core-dll=$abs_srcdir/apachecore.dll]) 694 APR_ADDTO(SH_LDFLAGS, [--core-dll=$abs_srcdir/apachecore.dll]) 695 esac 696 MOD_SO_ENABLED=yes 697fi 698AC_SUBST(MOD_SO_ENABLED) 699 700APACHE_SUBST(PRE_SHARED_CMDS) 701APACHE_SUBST(POST_SHARED_CMDS) 702APACHE_SUBST(shared_build) 703 704AC_ARG_WITH(program-name, 705APACHE_HELP_STRING(--with-program-name,alternate executable name),[ 706 progname="$withval" ], [ 707 progname="httpd"] ) 708 709# SuExec parameters 710AC_ARG_WITH(suexec-bin, 711APACHE_HELP_STRING(--with-suexec-bin,Path to suexec binary),[ 712 AC_DEFINE_UNQUOTED(SUEXEC_BIN, "$withval", [Path to suexec binary] ) 713] ) 714 715AC_ARG_WITH(suexec-caller, 716APACHE_HELP_STRING(--with-suexec-caller,User allowed to call SuExec),[ 717 AC_DEFINE_UNQUOTED(AP_HTTPD_USER, "$withval", [User allowed to call SuExec] ) ] ) 718 719AC_ARG_WITH(suexec-userdir, 720APACHE_HELP_STRING(--with-suexec-userdir,User subdirectory),[ 721 AC_DEFINE_UNQUOTED(AP_USERDIR_SUFFIX, "$withval", [User subdirectory] ) ] ) 722 723AC_ARG_WITH(suexec-docroot, 724APACHE_HELP_STRING(--with-suexec-docroot,SuExec root directory),[ 725 AC_DEFINE_UNQUOTED(AP_DOC_ROOT, "$withval", [SuExec root directory] ) ] ) 726 727AC_ARG_WITH(suexec-uidmin, 728APACHE_HELP_STRING(--with-suexec-uidmin,Minimal allowed UID),[ 729 AC_DEFINE_UNQUOTED(AP_UID_MIN, $withval, [Minimum allowed UID] ) ] ) 730 731AC_ARG_WITH(suexec-gidmin, 732APACHE_HELP_STRING(--with-suexec-gidmin,Minimal allowed GID),[ 733 AC_DEFINE_UNQUOTED(AP_GID_MIN, $withval, [Minimum allowed GID] ) ] ) 734 735AC_ARG_WITH(suexec-logfile, 736APACHE_HELP_STRING(--with-suexec-logfile,Set the logfile),[ 737 AC_DEFINE_UNQUOTED(AP_LOG_EXEC, "$withval", [SuExec log file] ) ] ) 738 739AC_ARG_WITH(suexec-safepath, 740APACHE_HELP_STRING(--with-suexec-safepath,Set the safepath),[ 741 AC_DEFINE_UNQUOTED(AP_SAFE_PATH, "$withval", [safe shell path for SuExec] ) ] ) 742 743AC_ARG_WITH(suexec-umask, 744APACHE_HELP_STRING(--with-suexec-umask,umask for suexec'd process),[ 745 AC_DEFINE_UNQUOTED(AP_SUEXEC_UMASK, 0$withval, [umask for suexec'd process] ) ] ) 746 747dnl APR should go after the other libs, so the right symbols can be picked up 748if test x${apu_found} != xobsolete; then 749 AP_LIBS="$AP_LIBS `$apu_config --avoid-ldap --link-libtool --libs`" 750fi 751AP_LIBS="$AP_LIBS `$apr_config --link-libtool --libs`" 752APACHE_SUBST(AP_LIBS) 753APACHE_SUBST(AP_BUILD_SRCLIB_DIRS) 754APACHE_SUBST(AP_CLEAN_SRCLIB_DIRS) 755 756AC_DEFINE(AP_USING_AUTOCONF, 1, 757 [Using autoconf to configure Apache]) 758 759if test "$SINGLE_LISTEN_UNSERIALIZED_ACCEPT" = "1"; then 760 AC_DEFINE(SINGLE_LISTEN_UNSERIALIZED_ACCEPT, 1, 761 [This platform doesn't suffer from the thundering herd problem]) 762fi 763 764if test "$AP_NONBLOCK_WHEN_MULTI_LISTEN" = "1"; then 765 AC_DEFINE(AP_NONBLOCK_WHEN_MULTI_LISTEN, 1, 766 [Listening sockets are non-blocking when there are more than 1]) 767fi 768 769APR_CHECK_APR_DEFINE(APR_HAVE_IPV6) 770 771AC_ARG_ENABLE(v4-mapped,APACHE_HELP_STRING(--enable-v4-mapped,Allow IPv6 sockets to handle IPv4 connections), 772[ 773 v4mapped=$enableval 774], 775[ 776 case $host in 777 *freebsd[1234].*) 778 v4mapped=yes 779 ;; 780 *freebsd*|*netbsd*|*openbsd*) 781 v4mapped=no 782 ;; 783 *) 784 v4mapped=yes 785 ;; 786 esac 787 if ap_mpm_is_enabled winnt; then 788 dnl WinNT MPM doesn't support this. 789 v4mapped=no 790 fi 791]) 792 793if test $v4mapped = "yes" -a $ac_cv_define_APR_HAVE_IPV6 = "yes"; then 794 AC_DEFINE(AP_ENABLE_V4_MAPPED, 1, 795 [Allow IPv4 connections on IPv6 listening sockets]) 796fi 797 798APACHE_FAST_OUTPUT(Makefile modules/Makefile srclib/Makefile) 799APACHE_FAST_OUTPUT(os/Makefile server/Makefile) 800APACHE_FAST_OUTPUT(support/Makefile) 801 802if test -d ./test; then 803 APACHE_FAST_OUTPUT(test/Makefile) 804fi 805 806dnl ## Finalize the variables 807AC_MSG_NOTICE([]) 808AC_MSG_NOTICE([Restore user-defined environment settings...]) 809AC_MSG_NOTICE([]) 810 811APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_) 812APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_) 813APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_) 814APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_) 815APR_RESTORE_THE_ENVIRONMENT(LIBS, EXTRA_) 816APR_RESTORE_THE_ENVIRONMENT(INCLUDES, EXTRA_) 817 818AC_MSG_NOTICE([]) 819AC_MSG_NOTICE([Construct makefiles and header files...]) 820AC_MSG_NOTICE([]) 821 822APACHE_GEN_CONFIG_VARS 823 824dnl ## Build modules.c 825rm -f modules.c 826echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c 827 828APR_EXPAND_VAR(ap_prefix, $prefix) 829AC_DEFINE_UNQUOTED(HTTPD_ROOT, "${ap_prefix}", 830 [Root directory of the Apache install area]) 831AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "${rel_sysconfdir}/${progname}.conf", 832 [Location of the config file, relative to the Apache root directory]) 833AC_DEFINE_UNQUOTED(AP_TYPES_CONFIG_FILE, "${rel_sysconfdir}/mime.types", 834 [Location of the MIME types config file, relative to the Apache root directory]) 835 836perlbin=`$ac_aux_dir/PrintPath perl` 837if test "x$perlbin" = "x"; then 838 perlbin="/replace/with/path/to/perl/interpreter" 839fi 840AC_SUBST(perlbin) 841 842dnl If we are running on BSD/OS, we need to use the BSD .include syntax. 843 844BSD_MAKEFILE=no 845ap_make_include=include 846ap_make_delimiter=' ' 847case $host in 848*bsdi*) 849 # Check whether they've installed GNU make 850 if make --version > /dev/null 2>&1; then 851 true 852 else 853 BSD_MAKEFILE=yes 854 ap_make_include=.include 855 ap_make_delimiter='"' 856 fi 857 ;; 858esac 859AC_SUBST(ap_make_include) 860AC_SUBST(ap_make_delimiter) 861 862dnl Ensure that docs/conf is created. 863test -d docs/conf||$mkdir_p docs/conf 864 865AC_OUTPUT($APACHE_OUTPUT_FILES docs/conf/httpd.conf docs/conf/extra/httpd-autoindex.conf docs/conf/extra/httpd-dav.conf docs/conf/extra/httpd-default.conf docs/conf/extra/httpd-info.conf docs/conf/extra/httpd-languages.conf docs/conf/extra/httpd-manual.conf docs/conf/extra/httpd-mpm.conf docs/conf/extra/httpd-multilang-errordoc.conf docs/conf/extra/httpd-ssl.conf docs/conf/extra/httpd-userdir.conf docs/conf/extra/httpd-vhosts.conf docs/conf/extra/proxy-html.conf include/ap_config_layout.h support/apxs support/apachectl support/dbmmanage support/envvars-std support/log_server_status support/logresolve.pl support/phf_abuse_log.cgi support/split-logfile build/rules.mk build/pkg/pkginfo build/config_vars.sh,[true],[ 866 APACHE_GEN_MAKEFILES 867]) 868