Make HAVE_ICONV/HAVE_LIBICONV available through the more
fine-grained approach using a single include file per
directive. This will significantly reduce the price of
full dependencies for developers, because basically each
file today includes php.h which includes php_config.h.
If PHP_ATOM_INC is defined, these include files can be used.
For all PHP_DEFINEs, empty files are created upon configure start.
It is pointless here, because we don't need any "void" statement.
There already is a statement and all it will do in the worst case
is generate an empty line
# If someone more familiar with the build system sees a problem with this
# feel free to revert it. It simply escapes #'s that are put into
# config_vars.mk
to maintain legacy configure options without clutter in the
configure help and checking output.
# Hopefully this encourages module writers to finally adopt
# standard naming conventions for their configure options!
pcntl) only with cgi/cli sapi's. This was done by adding 3rd optional
parameter to PHP_EXTENSION macro which should be set to "cli" if
the extension only makes sense for that class of api's.
checking for their existance first
old behaviour was to fail on the next library check with misleading
messages, now configure will work but make will fail with a
'lib not found' message
There are some variables which are needed for Makefiles and files
created by AC_OUTPUT; we use PHP_SUBST_OLD for those now.
genif.sh was moved to an appropiate place.
Some sed tools don't match strings which are not terminated with LF.
Some shells still support the ^ as a synonym for the pipe character.
Submitted by: Stanislav Malyshev
against it. When dealing with static libraries, the link order is
important and it might be necessary to add a library multiple times to
satisfy mutual symbol requirements.
In your extension's config.m4, you need to use the m4 macro
PHP_REQUIRE_CXX
This shall be called only, if your extension is enabled.
C++ source files shall not be put into the LTLIBRARY_SOURCES macro.
Instead, the filename of the object shall be put into
LTLIBRARY_OBJECTS_X. I.e. if your extension foo consists of foo.cxx, use
LTLIBRARY_OBJECTS_X = foo.lo
This is important, because the system checks will yield different
results depending on whether POSIX threads are enabled or not.
We also use PTHREADS_CFLAGS only in ZTS mode now. Using these flags
in non-ZTS mode causes complete build failures on some platforms
(i.e. FreeBSD 2.2.x). This will cause harmless warnings on some
platforms (i.e. Solaris 2).
Store EXTENSION_DIR in php-config
Ignore errors during header installation
Automatically enable modules in self-contained mode
Create empty .deps in builddir
This lets you replace
if test "$ext_shared" = "yes"; then
FOO_SHARED_LIBADD="-R$LIBDIR -L$LIBDIR -l$LIB"
else
AC_ADD_LIBRARY_WITH_PATH($LIB, $LIBDIR)
fi
with
AC_ADD_LIBRARY_WITH_PATH($LIB, $LIBDIR, FOO_SHARED_LIBADD)
The following new/revived shared modules are available now:
... MySQL (*)
... PCRE (*)
... Session
... SWF
(*) capable of using bundled library or external library
All changes:
The m4 macro PHP_EXTENSION was revamped. Uses LIB_BUILD now.
This effectively means that all extensions have to use dynlib.
ext/mysql/config.m4 was revamped.
Uses LIB_BUILD for building bundled library.
ext/pcre/config.m4 was revamped.
Uses LIB_BUILD for building bundled library.
ext/ext_skel was changed to reflect that more modules should be
compileable as shared module.
ext/Makefile.in has been simplified enormously.
Dependencies are now stored in the build tree.
Empty dependencies are not generated by buildconf anymore. They
are now dynamically created during the build process.
Implicit rules for .S were removed.
The NO_RECURSION feature was removed.
"libs.mk" has been added to all cvsignore files in ext.
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.
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).
- improve genif.sh to also consider all header files for inclusion
(checks for phpext_)
- use vsnprintf in main.c to avoid buffer overflows
- improve sessions's mm module to cope better with OOM situations
within the shared memory segment
- fix typo wrt session.auto_start
Examples on how to test:
./configure --with-xml static
./configure --with-xml=/opt static
./configure --with-xml=shared shared
./configure --with-xml=shared,/opt shared
The difference between these two is that when the extension is shared, it
is not merged into libphpext.a. The shared extension is currently always
built. I can't find a way to do just one or the other with automake/libtool,
if someone has a clever idea, please come forward. :-)
"make install" installs the .so (as well as a lot of other cruft) in
$prefix/lib/php.
fhttpd module taken out of functions, functions is ready to go.
The only extensions I have tested are gd+freetype and odbc(solid).
Please try compiling in your favourite extensions and let me know how it
works.
sub-directories and started to move extension code into ext/<name>. For now,
I have moved the "standard" extension (which is quite a mix of everything
right now) and the GD extension into their own subdirs in ext/.
The configure script now also runs configure in the libzend directory
automatically and makes sure php4 and libzend use the same config.cache file.
To avoid running configure in libzend, use the --no-recursion option.
"make" in php4 also builds libzend now.
The Apache module doesn't compile right now, but a fix for that is
coming up.