diff options
author | Stig Bakken <ssb@php.net> | 2001-05-28 11:15:19 +0000 |
---|---|---|
committer | Stig Bakken <ssb@php.net> | 2001-05-28 11:15:19 +0000 |
commit | fc7d897490361d82b2006339c18467c811632feb (patch) | |
tree | f9d7c546a3f5e275a3767933613fe0643de2990e | |
parent | 9f3434264a2e7bbcdadda08e3ef176d9986b5dc7 (diff) | |
download | php-git-fc7d897490361d82b2006339c18467c811632feb.tar.gz |
@Added "pearize" script to generate Makefile.in files for PEAR extensions
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | pear/Makefile.in | 5 | ||||
-rw-r--r-- | pear/scripts/pearize.in | 165 |
3 files changed, 170 insertions, 2 deletions
diff --git a/configure.in b/configure.in index b094b792ca..7bce7b2de6 100644 --- a/configure.in +++ b/configure.in @@ -911,7 +911,7 @@ PHP_GEN_CONFIG_VARS $php_shtool mkdir -p pear/scripts ALL_OUTPUT_FILES="php4.spec Zend/Makefile main/build-defs.h \ pear/scripts/pear pear/scripts/phpize pear/scripts/php-config \ -TSRM/Makefile $PHP_OUTPUT_FILES" +pear/scripts/pearize TSRM/Makefile $PHP_OUTPUT_FILES" AC_OUTPUT($ALL_OUTPUT_FILES, [], [ diff --git a/pear/Makefile.in b/pear/Makefile.in index 93127bf355..898674974f 100644 --- a/pear/Makefile.in +++ b/pear/Makefile.in @@ -139,7 +139,7 @@ BUILD_FILES = \ dynlib.m4 \ acinclude.m4 -bin_SCRIPTS = phpize php-config pear +bin_SCRIPTS = phpize php-config pear pearize install-build: $(mkinstalldirs) $(INSTALL_ROOT)$(phpbuilddir) $(INSTALL_ROOT)$(bindir) && \ @@ -184,5 +184,8 @@ scripts/pear: scripts/pear.in $(top_builddir)/config.status scripts/phpize: scripts/phpize.in $(top_builddir)/config.status (cd ..;CONFIG_FILES=pear/scripts/phpize CONFIG_HEADERS= $(top_builddir)/config.status) +scripts/pearize: scripts/pearize.in $(top_builddir)/config.status + (cd ..;CONFIG_FILES=pear/scripts/pearize CONFIG_HEADERS= $(top_builddir)/config.status) + scripts/php-config: scripts/php-config.in $(top_builddir)/config.status (cd ..;CONFIG_FILES=pear/scripts/php-config CONFIG_HEADERS= $(top_builddir)/config.status) diff --git a/pear/scripts/pearize.in b/pear/scripts/pearize.in new file mode 100644 index 0000000000..0f03d21083 --- /dev/null +++ b/pear/scripts/pearize.in @@ -0,0 +1,165 @@ +#!@prefix@/bin/php -Cq +<?php // -*- PHP -*- + +main($argc, $argv, $HTTP_ENV_VARS); + +// {{{ main() + +function main(&$argc, &$argv, &$env) +{ + $file = check_options($argc, $argv, $env); + parse_package_file($file); + make_makefile_in($env); +} + +// }}} +// {{{ check_options() + +function check_options(&$argc, &$argv, &$env) +{ + $file = $argv[1]; + if (empty($file)) { + $file = "package.xml"; + } + return $file; +} + +// }}} +// {{{ make_makefile_in() + +function make_makefile_in(&$env) +{ + global $libdata; + if (sizeof($libdata) == 0) { + exit; + } elseif (sizeof($libdata) > 1) { + die("No support yet for multiple libraries in one package.\n"); + } + + $wp = @fopen("Makefile.in", "w"); + if (is_resource($wp)) { + print "Creating Makefile.in..."; + flush(); + } else { + die("Could not create Makefile.in in current directory.\n"); + } + + foreach ($libdata as $lib => $info) { + extract($info); + $_who = $env["USER"]; + $_when = gmdate('Y-m-d h:i'); + fwrite($wp, "\ +# This file was generated by `pearize' by $_who at $_when GMT +INCLUDES = $includes +LTLIBRARY_NAME = lib{$lib}.la +LTLIBRARY_SOURCES = $sources +LTLIBRARY_SHARED_NAME = {$lib}.la +LTLIBRARY_SHARED_LIBADD = $libadd + +include \$(top_srcdir)/build/dynlib.mk +"); + } + fclose($wp); + print "done.\n"; +} + +// }}} +// {{{ parse_package_file() + +function parse_package_file($file) +{ + global $in_file, $curlib, $curelem, $libdata, $cdata; + + $in_file = false; + $curlib = ''; + $curelem = ''; + $libdata = array(); + $cdata = array(); + + $xp = xml_parser_create(); + xml_set_element_handler($xp, "start_handler", "end_handler"); + xml_set_character_data_handler($xp, "cdata_handler"); + xml_parser_set_option($xp, XML_OPTION_CASE_FOLDING, false); + + $fp = @fopen($file, "r"); + if (!is_resource($fp)) { + die("Could not open file `$file'.\n"); + } + while (!feof($fp)) { + xml_parse($xp, fread($fp, 2048), feof($fp)); + } + xml_parser_free($xp); +} + +// }}} +// {{{ start_handler() + +function start_handler($xp, $elem, $attrs) +{ + global $cdata, $in_file, $curelem; + switch ($elem) { + case "File": { + switch ($attrs['Role']) { + case "ext": { + $in_file = true; + $cdata = array(); + break; + } + case "php": default: { + break; + } + } + break; + } + case "Includes": + case "LibName": + case "LibAdd": + case "Sources": { + $curelem = $elem; + break; + } + } +} + +// }}} +// {{{ end_handler() + +function end_handler($xp, $elem) +{ + global $in_file, $curlib, $curelem, $libdata, $cdata; + switch ($elem) { + case "File": { + if ($in_file === true) { + $libname = trim($cdata['LibName']); + $libdata[$libname] = array( + "sources" => trim($cdata['Sources']), + "includes" => trim($cdata['Includes']), + "libadd" => trim($cdata['LibAdd']), + ); + $in_file = false; + } + break; + } + } +} + +// }}} +// {{{ cdata_handler() + +function cdata_handler($xp, $data) +{ + global $curelem, $cdata; + switch ($curelem) { + case "Includes": + case "LibAdd": + case "LibName": + case "Sources": { + $cdata[$curelem] .= $data; + break; + } + } +} + +// }}} + +?> |