| ||||||||||
Глава 28. Система автоматического построения PHPPHP 4.0 предлагает чрезвычайно гибкую систему автоматического построения/build. Все модули находятся в поддиректории ext. Помимо своих собственных ресурсов, каждый модуль состоит из файла M4 (например, см. http://www.gnu.org/manual/m4/html_mono/m4.html) о конфигурации и файле Makefile.in), который отвечает за компиляцию (результаты работы autoconf и automake; см. http://sourceware.cygnus.com/autoconf/autoconf.html и http://sourceware.cygnus.com/automake/automake.html). Оба файла генерируются автоматически вместе с .cvsignore небольшим скриптом оболочки под названием ext_skel, который находится в директории ext. В качестве аргумента он принимает имя создаваемого модуля. Скрипт затем создаёт директорию с тем же именем и соответствующие файлы config.m4 и Makefile.in. Пошагово этот процесс выглядит так:
Эта инструкция создаёт вышеупомянутые файлы. Для того чтобы включить новый модель в процесс автоматической конфигурации и построения, вы должны запустить buildconf, который регенерирует скрипт configure путём поиска в директории ext и включения всех найденных файлов config.m4. Наконец, запуск configure разбирает все опции конфигурации и генерирует makefile на основе этих опций и опций, специфицированных в Makefile.in. В Листинге 9.1 показан сгенерированный Makefile.in: Рисунок 28-1. Листинг 9.1. Файл Makefile.in по умолчанию.
Тут мало что можно сказать: Он содержит имена входного и выходного файлов. Вы можете также специфицировать build-инструкции для других файлов, если ваш модуль строится из нескольких исходных файлов. Файл config.m4 по умолчанию, показанный в Листинге 9.2, немного сложнее: Рисунок 28-2. Листинг 9.2. Файл config.m4 по умолчанию.
Если вы плохо знакомы с M4-файлами (теперь самое время познакомиться с ними получше), всё это может вызвать некоторое замешательство; но в действительности всё довольно просто.
Файл config.m4 отвечает за разбор опций командной строки, передаваемых в configure на этапе конфигурирования. Это означает, что он должен проверять наличие требуемых внешних файлов и выполнять схожие задачи по конфигурированию и установке. Файл по умолчанию создаёт две директивы конфигурирования в скрипте configure:
--with-my_module и --enable-my_module. По умолчанию файл config.m4, созданный скриптом
ext_skel, принимает обе директивы и автоматически включает ваше расширение. Включение
расширения выполняется путём использования макроса PHP_EXTENSION. Для изменения поведения по умолчанию и подключения вашего модуля в
исполняемый PHP, когда это нужно пользователю (явно специфицируя --enable-my_module или
Это может потребовать от вас использования --enable-my_module каждый раз при реконфигурировании и рекомпиляции PHP.
Далее в этой главе мы обсудим детали работы макросов M4, доступных вашим скриптам конфигурирования. Пока же мы просто используем файлы по умолчанию. Все примеры исходников на CD-ROM работают с файлами config.m4. Для включения их процесс построения PHP, просто скопируйте директории исходников в вашу директорию ext РНР, запустите buildconf, а затем подключите сэмплы необходимых модулей путём использования соответствующих директив--enable-* совместно с configure. | ||||||||||
|