From: Stig Bakken Date: Mon, 28 May 2001 11:15:19 +0000 (+0000) Subject: @Added "pearize" script to generate Makefile.in files for PEAR extensions X-Git-Tag: PRE_GRANULAR_GARBAGE_FIX~202 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fc7d897490361d82b2006339c18467c811632feb;p=php @Added "pearize" script to generate Makefile.in files for PEAR extensions --- 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 + 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; + } + } +} + +// }}} + +?>