Annotation of embedaddon/php/README.UNIX-BUILD-SYSTEM, revision 1.1

1.1     ! misho       1: PHP Build System V5 Overview
        !             2: 
        !             3: - supports Makefile.ins during transition phase
        !             4: - not-really-portable Makefile includes have been eliminated
        !             5: - supports separate build directories without VPATH by using
        !             6:   explicit rules only
        !             7: - does not waste disk-space/CPU-time for building temporary libraries
        !             8:   => especially noticeable on slower systems
        !             9: - slow recursive make replaced with one global Makefile
        !            10: - eases integration of proper dependencies
        !            11: - adds PHP_DEFINE(what[, value]) which creates a single include-file
        !            12:   per what.  This will allow more fine-grained dependencies.
        !            13: - abandoning the "one library per directory" concept
        !            14: - improved integration of the CLI
        !            15: - several new targets
        !            16:   build-modules: builds and copies dynamic modules into modules/
        !            17:   install-cli: installs the CLI only, so that the install-sapi
        !            18:                target does only what its name says
        !            19: - finally abandoned automake (still requires aclocal at this time)
        !            20: - changed some configure-time constructs to run at buildconf-time
        !            21: - upgraded shtool to 1.5.4
        !            22: - removed $(moduledir) (use EXTENSION_DIR)
        !            23: 
        !            24: The Reason For a New System
        !            25: 
        !            26: It became more and more apparent that there is a severe need
        !            27: for addressing the portability concerns and improving the chance
        !            28: that your build is correct (how often have you been told to
        !            29: "make clean"? When this is done, you won't need to anymore).
        !            30: 
        !            31: 
        !            32: If You Build PHP on a Unix System
        !            33: 
        !            34: 
        !            35: You, as a user of PHP, will notice no changes.  Of course, the build
        !            36: system will be faster, look better and work smarter.
        !            37: 
        !            38: 
        !            39: 
        !            40: If You Are Developing PHP
        !            41: 
        !            42: 
        !            43: 
        !            44: 
        !            45: Extension developers:
        !            46: 
        !            47: Makefile.ins are abandoned.  The files which are to be compiled
        !            48: are specified in the config.m4 now using the following macro:
        !            49: 
        !            50: PHP_NEW_EXTENSION(foo, foo.c bar.c baz.cpp, $ext_shared)
        !            51: 
        !            52: E.g. this enables the extension foo which consists of three source-code
        !            53: modules, two in C and one in C++.  And, depending on the user's wishes,
        !            54: the extension will even be built as a dynamic module.
        !            55: 
        !            56: The full syntax:
        !            57: 
        !            58: PHP_NEW_EXTENSION(extname, sources [, shared [,sapi_class[, extra-cflags]]])
        !            59: 
        !            60: Please have a look at acinclude.m4 for the gory details and meanings
        !            61: of the other parameters.
        !            62: 
        !            63: And that's basically it for the extension side.
        !            64: 
        !            65: If you previously built sub-libraries for this module, add
        !            66: the source-code files here as well.  If you need to specify
        !            67: separate include directories, do it this way:
        !            68: 
        !            69: PHP_NEW_EXTENSION(foo, foo.c mylib/bar.c mylib/gregor.c,,,-I@ext_srcdir@/lib)
        !            70: 
        !            71: E.g. this builds the three files which are located relative to the
        !            72: extension source directory and compiles all three files with the
        !            73: special include directive (@ext_srcdir@ is automatically replaced).
        !            74: 
        !            75: Now, you need to tell the build system that you want to build files
        !            76: in a directory called $ext_builddir/lib:
        !            77: 
        !            78: PHP_ADD_BUILD_DIR($ext_builddir/lib)
        !            79: 
        !            80: Make sure to call this after PHP_NEW_EXTENSION, because $ext_builddir
        !            81: is only set by the latter.
        !            82: 
        !            83: If you have a complex extension, you might to need add special
        !            84: Make rules.  You can do this by calling PHP_ADD_MAKEFILE_FRAGMENT
        !            85: in your config.m4 after PHP_NEW_EXTENSION.
        !            86: 
        !            87: This will read a file in the source-dir of your extension called
        !            88: Makefile.frag.  In this file, $(builddir) and $(srcdir) will be
        !            89: replaced by the values which are correct for your extension
        !            90: and which are again determined by the PHP_NEW_EXTENSION macro.
        !            91: 
        !            92: Make sure to prefix *all* relative paths correctly with either
        !            93: $(builddir) or $(srcdir).  Because the build system does not
        !            94: change the working directory anymore, we must use either
        !            95: absolute paths or relative ones to the top build-directory.
        !            96: Correct prefixing ensures that.
        !            97: 
        !            98: 
        !            99: SAPI developers:
        !           100: 
        !           101: Instead of using PHP_SAPI=foo/PHP_BUILD_XYZ, you will need to type
        !           102: 
        !           103: PHP_SELECT_SAPI(name, type, sources.c)
        !           104: 
        !           105: I.e. specify the source-code files as above and also pass the
        !           106: information regarding how PHP is supposed to be built (shared
        !           107: module, program, etc).
        !           108: 
        !           109: For example for APXS:
        !           110: 
        !           111: PHP_SELECT_SAPI(apache, shared, sapi_apache.c mod_php5.c php_apache.c)
        !           112: 
        !           113: 
        !           114: 
        !           115: General info
        !           116: 
        !           117: The foundation for the new system is the flexible handling of
        !           118: sources and their contexts.  With the help of macros you
        !           119: can define special flags for each source-file, where it is
        !           120: located, in which target context it can work, etc.
        !           121: 
        !           122: Have a look at the well documented macros
        !           123: PHP_ADD_SOURCES(_X) in acinclude.m4.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>