README.platforms revision d7a688d7e9b8599b4eba1901fd5fe5f752ce7adc
2ronwalf
2ronwalf Apache HTTP Server
2ronwalf
2ronwalf Platform specific notes:
2ronwalf ------------------------
2ronwalf
2ronwalf================
2ronwalf Darwin (OS X):
2ronwalf Apache 2 relies heavily on the use of autoconf and libtool to
2ronwalf provide a build environment. Darwin provides these tools as part
2ronwalf of the Developers Tools package. Under Darwin, however, GNUlibtool
2ronwalf is installed as 'glibtool' to avoid conflicting with the Darwin
2ronwalf 'libtool' program. Apache 2 knows about this so that's not a
2ronwalf problem.
2ronwalf
2ronwalf As of OS X 10.2 (Jaguar), the bundled versions work perfectly. Partly
2ronwalf this is due to the fact that /bin/sh is now 'bash' and not 'zsh' as
2ronwalf well as the fact that the bundled versions are up-to-date:
2ronwalf autoconf 2.52 and (g)libtool 1.4.2.
2ronwalf
2ronwalf Earlier versions of OS X are not so fortunate, and the bundled tools
2ronwalf are not only older versions, but also, for the most part, do not work
2ronwalf well. If you are interested in developing under Darwin, we
2ronwalf recommend that you obtain and install replacement versions of what
2ronwalf are normally installed on Darwin (and OS X, as of v10.1.5). If
2ronwalf you build your own versions of autoconf 2.52 and libtool 1.4.2, be
2ronwalf aware that there are some Darwin specific patches to the official
2ronwalf code that still must be applied for them to fully work. A useful
2ronwalf page to check out is:
2ronwalf
2ronwalf http://fink.sourceforge.net/doc/porting/libtool.php
2ronwalf
2ronwalf Pier Fumagalli also provides pre-built Darwin packages of the
2ronwalf patched autoconf and libtool suites, available at:
2ronwalf
2ronwalf http://www.apache.org/~pier/macosx/
2ronwalf
2ronwalf You will note that GNU libtool should actually be installed as
2ronwalf glibtool, to avoid conflict with a Darwin program of the same
2ronwalf name. Pier's packages have this change already. All files are
2ronwalf installed under /usr/local/ so to use these versions, and be sure
2ronwalf that /usr/local/bin is earlier in your PATH.
2ronwalf
2ronwalf There have been some reports that autoconf 2.52 prevents Apache's
2ronwalf build system from correctly handling passing multi-value envvars
2ronwalf to the build system (eg: CFLAGS="-g -O3" ./configure), causing
2ronwalf errors. Use of bash does not seem to help in this situation. If
2ronwalf this affects you, downgrading to autoconf 2.13 (which is installed
2ronwalf on Darwin) will help.
2ronwalf
2ronwalf With Leopard (at least up to 10.5.2), when running configure
2ronwalf you will likely see errors such as:
2ronwalf
2ronwalf rm: conftest.dSYM: is a directory
2ronwalf
2ronwalf This is a known issue and will be fixed in a later version of the
2ronwalf autoconf suite. These errors can be safely ignored.
2ronwalf
2ronwalf==========
2ronwalf FreeBSD:
2ronwalf autoconf 2.52 creates scripts that are incompatible with the Posix
2ronwalf shell implementation (/bin/sh) on FreeBSD. Be sure to use v2.13
2ronwalf of autoconf.
2ronwalf
2ronwalf Threaded MPMs are not supported on FreeBSD 4.x. Current releases of
2ronwalf FreeBSD 5.x (5.2 or later) support threaded MPMs correctly. You must pass
2ronwalf '--enable-threads=yes' to APR's configure in order to enable threads.
2ronwalf Additionally, you must use libthr or libkse via libmap.conf as the default
2ronwalf libc_r is still broken as of this writing. Please consult the man page for
2ronwalf libmap.conf for more details about configuring libthr or libkse.
2ronwalf================
2ronwalf HP-UX:
2ronwalf The dlopen() system call in HP-UX has problems when loading/unloading
2ronwalf C++ modules. The problem can be resolved by using shl_load() instead
2ronwalf of dlopen(). This is fixed in the Apache 2.0.44 release.
2ronwalf To enable loading of C++ modules, the httpd binary has to be linked with
2ronwalf the following libraries :
2ronwalf
2ronwalf HP-UX (11.0 / 11i):
2ronwalf When using shl_load : "cpprt0_stub.s -lcl"
2ronwalf When using dlopen : "cpprt0_stub.s -lcl -lCsup"
2ronwalf
2ronwalf HP-UX (11i version 1.5 and greater):
2ronwalf When using dlopen/shl_load : "cpprt0_stub.s -lcl -lunwind"
2ronwalf
2ronwalf The cpprt0_stub.s can be downloaded from the web site :
2ronwalf http://h21007.www2.hp.com/hpux-devtools/CXX/hpux-devtools.0107/0083.html
2ronwalf
Compile cpprt0_stub.s with the PIC option
cc -c +z cpprt0_stub.s
- OR -
gcc -c -fPIC cpprt0_stub.s
================
AIX, using the vendor C compiler with optimization:
There is an issue with compiling server/core.c with optimization enabled
which has been seen with C for AIX 5.0.2.3 and above. (5.0.2.0, 5.0.2.1,
and 5.0.2.2 have an additional problem with Apache 2.0.x, so either upgrade
the compiler or don't use optimization in order to avoid it.)
cc_r works fine with -O2 but xlc_r does not. In order to use xlc_r with
-O2, apply the patch at
http://www.apache.org/dist/httpd/patches/apply_to_2.0.49/aix_xlc_optimization.patch
(That patch works with many recent levels of Apache 2+.)
================
Solaris:
On Solaris, better performance may be achieved by using the Sun Studio
compiler instead of gcc. As of version 11, it is now free (registration
required). Download the compiler from:
http://developers.sun.com/prodtech/cc/downloads/index.jsp
If you use Sun Studio, the following compiler flags (CFLAGS) are
recommended:
-XO4 -xchip=generic