Manuel PHP
Précédent | Chapitre 46. API Zend : Modification du coeur de PHP | Suivant

# Reference: Some Configuration Macros

## `config.m4`

The file `config.m4` is processed by `buildconf` and must contain all the instructions to be executed during configuration. For example, these can include tests for required external files, such as header files, libraries, and so on. PHP defines a set of macros that can be used in this process, the most useful of which are described in Tableau 46-18.

Tableau 46-18. M4 Macros for `config.m4`

Macro | Description
`AC_MSG_CHECKING(message)` | Prints a "checking <message>" text during `configure`.
`AC_MSG_RESULT(value)` | Gives the result to `AC_MSG_CHECKING`; should specify either `yes` or `no` as `value`.
`AC_MSG_ERROR(message)` | Prints `message` as error message during `configure` and aborts the script.
`AC_DEFINE(name,value,description)` | Adds `#define` to `php_config.h` with the value of `value` and a comment that says `description` (this is useful for conditional compilation of your module).
`AC_ADD_INCLUDE(path)` | Adds a compiler include path; for example, used if the module needs to add search paths for header files.
`AC_ADD_LIBRARY_WITH_PATH(libraryname,librarypath)` | Specifies an additional library to link.

`AC_ARG_WITH(modulename,description,unconditionaltest,conditionaltest)`

Quite a powerful macro, adding the module with `description` to the `configure --help` output. PHP checks whether the option `--with-<modulename>` is given to the `configure` script. If so, it runs the script `unconditionaltest` (for example, `--with-myext=yes`), in which case the value of the option is contained in the variable `$withval`. Otherwise, it executes `conditionaltest`.

`PHP_EXTENSION(modulename, [shared])` | This macro is a must to call for PHP to configure your extension. You can supply a second argument in addition to your module name, indicating whether you intend compilation as a shared module. This will result in a definition at compile time for your source as `COMPILE_DL_<modulename>`.

Précédent | Sommaire | Suivant
Where to Go from Here | Niveau supérieur | API Macros