#!@prefix@/bin/php -Cq 1) { die("No support yet for multiple libraries in one package.\n"); } if ($debug) { $wp = fopen("php://stdout", "w"); } else { $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"); } $who = $env["USER"]; $when = gmdate('Y-m-d h:i'); fwrite($wp, "# This file was generated by `pearize' by $who at $when GMT\n\n"); foreach ($libdata as $lib => $info) { extract($info); fwrite($wp, "\ INCLUDES = $includes LTLIBRARY_NAME = lib{$lib}.la LTLIBRARY_SOURCES = $sources LTLIBRARY_SHARED_NAME = {$lib}.la LTLIBRARY_SHARED_LIBADD = $libadd "); } if (sizeof($libdata) > 0) { fwrite($wp, "include \$(top_srcdir)/build/dynlib.mk\n"); } fclose($wp); print "done.\n"; } // }}} // {{{ parse_package_file() function parse_package_file($file) { global $in_file, $curlib, $curelem, $libdata, $cdata; global $currinstalldir, $baseinstalldir; $in_file = false; $curlib = ''; $curelem = ''; $libdata = array(); $cdata = array(); $baseinstalldir = array(); $currinstalldir = 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, true); $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, $curfile, $filerole; global $baseinstalldir, $currinstalldir; switch ($elem) { case "FILE": { $curfile = ''; $filerole = $attrs['ROLE']; switch ($filerole) { case "ext": { $in_file = true; $cdata = array(); break; } case "php": default: { break; } } break; } case "DIR": { $cdir = $currinstalldir[sizeof($currinstalldir)-1]; $bdir = $baseinstalldir[sizeof($baseinstalldir)-1]; array_push($currinstalldir, "$cdir/{$attrs[NAME]}"); if (isset($attrs["BASEINSTALLDIR"])) { array_push($baseinstalldir, "$bdir/{$attrs[BASEINSTALLDIR]}"); } else { array_push($baseinstalldir, $bdir); } 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; global $baseinstalldir, $currinstalldir; 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; } case "DIR": { array_pop($currinstalldir); array_pop($baseinstalldir); break; } } } // }}} // {{{ cdata_handler() function cdata_handler($xp, $data) { global $curelem, $cdata, $curfile; switch ($curelem) { case "FILE": { $curfile .= $data; break; } case "INCLUDES": case "LIBADD": case "LIBNAME": case "SOURCES": { $cdata[$curelem] .= $data; break; } } } // }}} /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ ?>