Remove mostly all references to APACHE and CGI_BINARY from the code.
- Apache include files are no longer included by any PHP code, except for the Apache SAPI module.
- No server specific code is in any of the base PHP code.
Still left to be done:
- Eliminate any references to APACHE from the few remaining modules.
- Move request_info.c's logic to SAPI
- Modify the regex function names, and globals, so that we can always
include them, without having to fear any interference with Apache;
Always use the bundled regex library
- added support for externally built modules,
- improved support for in-tree shared modules,
- fixed diversion bugs,
- configure displays some informative messages,
- faster static build
(libtool isn't used anymore for compiling non-PIC objects),
- dependencies comparable to automake's without requiring GNU make or GCC,
- working make clean for non-GNU makes.
Apache 2.0 properly.
# This is extremely experimental because neither project is release
# quality yet. I expect this to drive bugs out of Apache 2.0's configure
# process as well as provide a useful version of PHP for Apache 2.0, so it
# may take some time for this to become stable. I will commit changes to
# PHP as needed although more modifications will be on the Apache side.
system, apache, or php's regex library by using the --with-regex option.
"php" is the default; if you use --with-apache in combination with
Apache 1.3.x, the default is "apache".
with libtool components
* SAPI targets can enable thread-safe mode and define
shared/static/program build target
* all configure scripts use the same config.cache
* phplibdir is $(top_builddir)/modules to avoid
permission problems
* sapi/*/Makefile.inc are gone
* runpath handling cleaned up
* top-level Makefile.in obsoleted through Makefile.am
* --enable-versioning uses libtool's cleaner and more
portable -export-symbols feature
extensions you are including. Got rid of configure.in.in.
Moved the last Apache-specific files into sapi/apache and made both
static and DSO build work again (it still doesn't run properly).
implementation now has its own directory under sapi/, just like
extensions have theirs under ext/. To make the final targets appear
in the main dir, the top-level Makefile includes sapi/NN/Makefile.inc
from the selected sapi backend. This is a plan Makefile stub without
any autoconf substitutions. Each SAPI backend also has its own
config.m4 like extensions (read at the end of diversion 2) and
config.h.stub files.
Each SAPI backend has to contain:
config.m4: just like for extensions, this file contains
autoconf/automake directives that end up in the configure script. The
only difference is that the sapi config.m4 files are read in diversion
(output block) 2 instead of 3. The sapi config.m4 files should set
two variables: PHP_SAPI (which sapi backend to choose) and SAPI_TARGET
(the name of the resulting library or program, previously BINNAME).
If they are not specified, they will default to "cgi" and "php",
respectively.
Makefile.inc: has to exist, has to define "INSTALL_IT" to the command
used to install the final target (or ":" for no operation). It also
has to define a plain Makefile rule (without autoconf substitutions)
to build $(SAPI_TARGET)
Makefile.am: just what you think. Make sure your target is called
"libphpsapi_NNN.a", where NNN is the value of PHP_SAPI.
Some testing and fixing probably remains. To make everything hang
together, I've done some ugly tricks that I can imagine causing some
problems. I've built and run the CGI version and built the Apache
DSO.