cvs: phpdoc / configure.php
| From: | Hannes Magnusson | Date: | Sat, 08 Sep 2007 17:59:31 +0000 |
| Subject: | cvs: phpdoc / configure.php | ||
| Groups: | php.doc | ||
| Request: | Send a blank email to phpdoc+get-969378082@lists.php.net to get a copy of this message | ||
bjori Sat Sep 8 17:59:31 2007 UTC
Added files:
/phpdoc configure.php
Log:
Add "autoconf && ./configure && make test_xml" replacement
# Written by Dave Barr
http://cvs.php.net/viewvc.cgi/phpdoc/configure.php?view=markup&rev=1.1 Index: phpdoc/configure.php +++ phpdoc/configure.php <?php /* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2007 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.0 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_0.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Dave Barr <dave@php.net> | +----------------------------------------------------------------------+ $Id: configure.php,v 1.1 2007/09/08 17:59:31 bjori Exp $ */ $cvs_id = "$Id: configure.php,v 1.1 2007/09/08 17:59:31 bjori Exp $"; $srcdir = "./"; echo "configure.php: $cvs_id\n"; // Settings $cygwin_php_bat = '../phpdoc-tools/php.bat'; $cygwin_jade = '../phpdoc-tools/jade/jade.exe'; $cygwin_openjade = '../phpdoc-tools/openjade/openjade.exe'; $cygwin_nsgmls = '../phpdoc-tools/jade/nsgmls.exe'; $cygwin_onsgmls = '../phpdoc-tools/openjade/onsgmls.exe'; $cygwin_xsltproc = '../phpdoc-tools/libxml/xsltproc.exe'; $cygwin_xmllint = '../phpdoc-tools/libxml/xmllint.exe'; $php_bin_names = array('php', 'php5', 'cli/php', 'php.exe', 'php5.exe', 'php-cli.exe', 'php-cgi.exe'); $jade_bin_names = array('openjade', 'jade', 'openjade.exe', 'jade.exe'); $nsgmls_bin_names = array('onsgmls', 'nsgmls', 'onsgmls.exe', 'nsgmls.exe'); $xsltproc_bin_names = array('xsltproc', 'xsltproc.exe'); $xmllint_bin_names = array('xmllint', 'xmllint.exe'); $catalogs = array( "$srcdir/entities/ISO/catalog", "$srcdir/dsssl/docbook/catalog", "../phpdoc-tools/jade/catalog", "/usr/share/sgml/CATALOG.docbk41", "/usr/share/sgml/CATALOG.jade_dsl", "$srcdir/dsssl/defaults/catalog", ); $sources = array("$srcdir/../php-src", "$srcdir/../php5"); $pear_sources = array("$srcdir/../pear"); $pecl_sources = array("$srcdir/../pecl"); $infiles_cache = "$srcdir/infiles.cache"; // Reject old PHP installations if (phpversion() < 5) { echo "PHP 5 or above is required. Version detected: " . phpversion() . "\n"; exit(100); } else { echo "PHP version: " . phpversion() . "\n"; } echo "\n"; $ac = array(); $ac['srcdir'] = $srcdir; $ac['WORKDIR'] = $srcdir; $ac['PHP'] = ''; $ac['INIPATH'] = './scripts'; $ac['JADE'] = ''; $ac['WINJADE'] = 0; $ac['NSGMLS'] = ''; $ac['XSLTPROC'] = ''; $ac['XMLLINT'] = ''; $ac['DOCBOOK_HTML'] = "$srcdir/docbook/docbook-dsssl/html/docbook.dsl"; $ac['DOCBOOK_PRINT'] = "$srcdir/docbook/docbook-dsssl/print/docbook.dsl"; $ac['CATALOG'] = ''; $ac['PHP_SOURCE'] = ''; $ac['PEAR_SOURCE'] = ''; $ac['PECL_SOURCE'] = ''; $ac['EXT_SOURCE'] = ''; $ac['HTMLCSS'] = ''; $ac['CHMENABLED'] = 'no'; $ac['CHMONLY_INCL_BEGIN'] = '<!--'; $ac['CHMONLY_INCL_END'] = '-->'; $ac['INTERNALSDISABLED'] = 'no'; $ac['INTERNALS_EXCL_BEGIN'] = ''; $ac['INTERNALS_EXCL_END'] = ''; $ac['HACK_RTL_LANGS_PAGES'] = ''; $ac['HACK_RTL_LANGS_PHPWEB'] = ''; $ac['LANG_HACK_FOR_HE'] = 'no'; $ac['LANG'] = 'en'; $ac['LANGWEB'] = 'en'; $ac['PHP_BUILD_DATE'] = date('Y-m-d'); $ac['MANUAL'] = 'php_manual_en'; $ac['PAPER_TYPE'] = ''; $ac['PDF_PAPER_TYPE'] = ''; $ac['NUMBER_FIRST'] = '#f'; $ac['LEFT_MARGIN'] = ''; $ac['RIGHT_MARGIN'] = ''; $ac['TOP_MARGIN'] = ''; $ac['BOTTOM_MARGIN'] = ''; $ac['HEADER_MARGIN'] = ''; $ac['FOOTER_MARGIN'] = ''; $ac['LINE_SPACING'] = ''; $ac['HEAD_BEFORE'] = ''; $ac['HEAD_AFTER'] = ''; $ac['BODY_START'] = ''; $ac['BLOCK_SEP'] = ''; $ac['TREESAVING'] = '#f'; $ac['ENCODING'] = ''; $ac['PALMDOCTITLE'] = ''; $ac['HTMLHELP_ENCODING'] = ''; $ac['SP_OPTIONS'] = 'SP_ENCODING=XML SP_CHARSET_FIXED=YES'; $allowed_opts = array( 'help', 'with-php=', 'with-jade=', 'with-nsgmls=', 'with-xsltproc=', 'with-xmllint=', 'with-dsssl=', 'with-source=', 'with-pear-source==', 'with-pecl-source==', 'with-extension=', 'with-htmlcss=', 'with-chm=', 'without-internals', 'with-lang=', 'with-treesaving', ); foreach ($_SERVER['argv'] as $opt) { list($o, $v) = explode("=", $opt); switch ($o) { case '--help': usage(); exit(); case '--with-php': $ac['PHP'] = $v; break; case '--with-inipath': $ac['INIPATH'] = $v; break; case '--with-jade': $ac['JADE'] = $v; break; case '--with-nsgmls': $ac['NSGMLS'] = $v; break; case '--with-xsltproc': $ac['XSLTPROC'] = $v; break; case '--with-xmllint': $ac['XMLLINT'] = $v; break; case '--with-dsssl': $ac['DOCBOOK_HTML'] = "$v/html/docbook.dsl"; $ac['DOCBOOK_PRINT'] = "$v/print/docbook.dsl"; break; case '--with-source': $ac['PHP_SOURCE'] = $v; break; case '--with-pear-source': $ac['PEAR_SOURCE'] = $v != '' ? $v : 'yes'; break; case '--with-pecl-source': $ac['PECL_SOURCE'] = $v != '' ? $v : 'yes'; break; case '--with-extension': $ac['EXT_SOURCE'] = $v; break; case '--with-htmlcss': $ac['HTMLCSS'] = $v; break; case '--with-chm': $ac['CHMENABLED'] = $v; break; case '--without-internals': $ac['INTERNALSDISABLED'] = 'yes'; break; case '--with-lang': $ac['LANG'] = $v; break; case '--with-treesaving': $ac['TREESAVING'] = '#t'; break; } } function find_file($file_array) { $paths = explode(PATH_SEPARATOR, getenv('PATH')); if (is_array($paths)) { foreach ($paths as $path) { foreach ($file_array as $name) { if (file_exists("$path/$name") && is_file("$path/$name")) { return "$path/$name"; } } } } return ''; } // Check for PHP executable echo 'checking for php: '; if ($ac['PHP'] == '') { // Find PHP executable ourselves $ac['PHP'] = find_file($php_bin_names); } else if (file_exists($cygwin_php_bat)) { $ac['PHP'] = $cygwin_php_bat; echo "$cygwin_php_bat\n"; } if ($ac['PHP'] == '') { echo "no\n"; echo " Error: Could not find a PHP executable. Use --with-php=/path/to/php\n"; exit(103); } if (!file_exists($ac['PHP'])) { echo "no\n"; echo " Error: --with-php: {$ac['PHP']} does not exist.\n"; exit(104); } else if (!is_file($ac['PHP'])) { echo "no\n"; echo " Error: --with-php: {$ac['PHP']} is not a file.\n"; exit(105); } else { echo $ac['PHP'] . "\n"; } // Check for Jade/OpenJade executable echo 'checking for jade: '; if ($ac['JADE'] != '') { // User-supplied if (!file_exists($ac['JADE'])) { echo "no\n"; echo " Error: --with-jade: {$ac['JADE']} does not exist.\n"; exit(106); } else if (!is_file($ac['JADE'])) { echo "no\n"; echo " Error: --with-jade: {$ac['JADE']} is not a file.\n"; exit(107); } } else { // Find Jade executable ourselves $ac['JADE'] = find_file($jade_bin_names); } if ($ac['JADE'] == '' && file_exists($cygwin_jade) && is_file($cygwin_jade)) { $ac['JADE'] = $cygwin_jade; $ac['WINJADE'] = 1; } else if ($ac['JADE'] == '' && file_exists($cygwin_openjade) && is_file($cygwin_openjade)) { $ac['JADE'] = $cygwin_openjade; $ac['WINJADE'] = 1; } if ($ac['JADE'] == '') { echo "no\n"; echo " Error: Could not find a Jade/OpenJade executable. Use --with-jade=/path/to/jade\n"; } else { echo $ac['JADE'] . "\n"; } // Check for NSGMLS executable echo 'checking for nsgmls: '; if ($ac['NSGMLS'] != '') { // User-supplied if (!file_exists($ac['NSGMLS'])) { echo "no\n"; echo " Error: --with-nsgmls: {$ac['NSGMLS']} does not exist.\n"; exit(109); } else if (!is_file($ac['NSGMLS'])) { echo "no\n"; echo " Error: --with-nsgmls: {$ac['NSGMLS']} is not a file.\n"; exit(110); } } else { // Find NSGMLS executable ourselves $ac['NSGMLS'] = find_file($nsgmls_bin_names); } if ($ac['NSGMLS'] == '' && file_exists($cygwin_nsgmls) && is_file($cygwin_nsgmls)) { $ac['NSGMLS'] = $cygwin_nsgmls; } else if ($ac['NSGMLS'] == '' && file_exists($cygwin_onsgmls) && is_file($cygwin_onsgmls)) { $ac['NSGMLS'] = $cygwin_onsgmls; } if ($ac['NSGMLS'] == '') { echo "no\n"; echo " Error: Could not find a NSGMLS executable. Use --with-nsgmls=/path/to/jade\n"; } else { echo $ac['NSGMLS'] . "\n"; } // Check for XSLTPROC executable echo 'checking for xsltproc: '; if ($ac['XSLTPROC'] != '') { // User-supplied if (!file_exists($ac['XSLTPROC'])) { echo "no\n"; echo " Error: --with-xsltproc: {$ac['XSLTPROC']} does not exist.\n"; exit(112); } else if (!is_file($ac['XSLTPROC'])) { echo "no\n"; echo " Error: --with-xsltproc: {$ac['XSLTPROC']} is not a file.\n"; exit(113); } } else { // Find XSLTPROC executable ourselves $ac['XSLTPROC'] = find_file($xsltproc_bin_names); } if ($ac['XSLTPROC'] == '' && file_exists($cygwin_xsltproc) && is_file($cygwin_xsltproc)) { $ac['XSLTPROC'] = $cygwin_xsltproc; } if ($ac['XSLTPROC'] == '') { echo "no\n"; echo " Warning: Could not find a XSLTPROC executable. XSL Transformations won't work.\n"; } else { echo $ac['XSLTPROC'] . "\n"; } // Check for XMLLINT executable echo 'checking for xmllint: '; if ($ac['XMLLINT'] != '') { // User-supplied if (!file_exists($ac['XMLLINT'])) { echo "no\n"; echo " Error: --with-xmllint: {$ac['XMLLINT']} does not exist.\n"; exit(114); } else if (!is_file($ac['XMLLINT'])) { echo "no\n"; echo " Error: --with-xmllint: {$ac['XMLLINT']} is not a file.\n"; exit(115); } } else { // Find XMLLINT executable ourselves $ac['XMLLINT'] = find_file($xmllint_bin_names); } if ($ac['XMLLINT'] == '' && file_exists($cygwin_xmllint) && is_file($cygwin_xmllint)) { $ac['XMLLINT'] = $cygwin_xmllint; } if ($ac['XMLLINT'] == '') { echo "no\n"; echo " Warning: Could not find a XMLLINT executable. XSL Validation won't work.\n"; } else { echo $ac['XMLLINT'] . "\n"; } // Check for DocBook DSLs echo 'checking for docbook (HTML): '; if (!file_exists($ac['DOCBOOK_HTML'])) { echo "no\n"; echo " Warning: {$ac['DOCBOOK_HTML']} does not exist.\n"; } else if (!is_file($ac['DOCBOOK_HTML'])) { echo "no\n"; echo " Warning: {$ac['DOCBOOK_HTML']} is not a file.\n"; } else { echo $ac['DOCBOOK_HTML'] . "\n"; } echo 'checking for docbook (print): '; if (!file_exists($ac['DOCBOOK_PRINT'])) { echo "no\n"; echo " Warning: {$ac['DOCBOOK_PRINT']} does not exist.\n"; } else if (!is_file($ac['DOCBOOK_PRINT'])) { echo "no\n"; echo " Warning: {$ac['DOCBOOK_PRINT']} is not a file.\n"; } else { echo $ac['DOCBOOK_PRINT'] . "\n"; } // Check for Catalogs echo 'checking catalogs: '; foreach ($catalogs as $catalog) { if (file_exists($catalog) && is_file($catalog)) { $ac['CATALOG'] .= " -c $catalog"; } } if ($ac['CATALOG'] == '') { echo "no\n"; echo " Warning: No catalog files found.\n"; } else { $ac['CATALOG'] = substr($ac['CATALOG'], 1); echo $ac['CATALOG'] . "\n"; } // Check for PHP Source echo 'checking for PHP source: '; if ($ac['PHP_SOURCE'] != '') { if (!file_exists($ac['PHP_SOURCE'])) { echo "no\n"; echo " Warning: {$ac['PHP_SOURCE']} does not exist.\n"; } else if (!is_dir($ac['PHP_SOURCE'])) { echo "no\n"; echo " Warning: {$ac['PHP_SOURCE']} is not a directory.\n"; } else { echo $ac['PHP_SOURCE'] . "\n"; } } else { foreach ($sources as $source) { if (file_exists($source) && is_dir($source)) { $ac['PHP_SOURCE'] = $source; break; } } if ($ac['PHP_SOURCE'] == '') { echo "no\n"; echo " Warning: No PHP source directory found.\n"; } else { echo $ac['PHP_SOURCE'] . "\n"; } } // Check for PEAR Source echo 'checking for PEAR source: '; if ($ac['PEAR_SOURCE'] != '') { if ($ac['PEAR_SOURCE'] != 'yes') { if (!file_exists($ac['PEAR_SOURCE'])) { echo "no\n"; echo " Warning: {$ac['PEAR_SOURCE']} does not exist.\n"; } else if (!is_dir($ac['PEAR_SOURCE'])) { echo "no\n"; echo " Warning: {$ac['PEAR_SOURCE']} is not a directory.\n"; } else { echo $ac['PEAR_SOURCE'] . "\n"; } } else { foreach ($pear_sources as $source) { if (file_exists($source) && is_dir($source)) { $ac['PEAR_SOURCE'] = $source; break; } } if ($ac['PEAR_SOURCE'] == '') { echo "no\n"; echo " Warning: No PEAR source directory found.\n"; } else { echo $ac['PEAR_SOURCE'] . "\n"; } } } else { $ac['PEAR_SOURCE'] = 'no'; echo "no\n"; } // Check for PECL Source echo 'checking for PECL source: '; if ($ac['PECL_SOURCE'] != '') { if ($ac['PECL_SOURCE'] != 'yes') { if (!file_exists($ac['PECL_SOURCE'])) { echo "no\n"; echo " Warning: {$ac['PECL_SOURCE']} does not exist.\n"; } else if (!is_dir($ac['PECL_SOURCE'])) { echo "no\n"; echo " Warning: {$ac['PECL_SOURCE']} is not a directory.\n"; } else { echo $ac['PECL_SOURCE'] . "\n"; } } else { foreach ($pecl_sources as $source) { if (file_exists($source) && is_dir($source)) { $ac['PECL_SOURCE'] = $source; break; } } if ($ac['PECL_SOURCE'] == '') { echo "no\n"; echo " Warning: No PECL source directory found.\n"; } else { echo $ac['PECL_SOURCE'] . "\n"; } } } else { $ac['PECL_SOURCE'] = 'no'; echo "no\n"; } // Check for additional PHP extensions if ($ac['EXT_SOURCE'] != '') { echo "checking for additional PHP extensions:\n"; $exts = explode(',', $ac['EXT_SOURCE']); $ac['EXT_SOURCE'] = ''; foreach ($exts as $ext) { if (file_exists("$ext/manual") && is_dir("$ext/manual")) { $ac['EXT_SOURCE'] .= ":$ext"; echo " extension '$ext' ok\n"; } else { echo " extension '$ext' ignored\n"; } } } // Check for CSS to use for HTML docs echo 'checking for CSS to use for HTML docs: '; if ($ac['HTMLCSS'] != '') { echo $ac['HTMLCSS'] . "\n"; $ac['HTMLCSS'] = "(define %stylesheet% \"{$ac['HTMLCSS']}\")"; } else { echo "none\n"; } // Check for CHM echo 'checking for CHM-only inclusion: '; if ($ac['CHMENABLED'] == 'yes') { $ac['CHMONLY_INCL_BEGIN'] = ''; $ac['CHMONLY_INCL_END'] = ''; echo "enabled\n"; } else { $ac['CHMENABLED'] = 'no'; echo "disabled\n"; } // Check for internals echo 'checking for internals doc exclusion: '; if ($ac['INTERNALSDISABLED'] == 'yes') { $ac['INTERNALS_EXCL_BEGIN'] = '<!--'; $ac['INTERNALS_EXCL_END'] = '-->'; echo "yes\n"; } else { $ac['INTERNALSDISABLED'] = 'no'; echo "no\n"; } // Check for language echo 'checking for language: '; if ($ac['LANG'] != 'en') { if (!file_exists("$srcdir/{$ac['LANG']}")) { echo "no\n"; echo " Error: Language '{$ac['LANG']}' not supported!\n"; exit(116); } $ac['MANUAL'] = "php_manual_{$ac['LANG']}"; switch ($ac['LANG']) { case 'kr': $ac['LANG'] = 'ko'; $ac['LANGWEB'] = 'ko'; $ac['LANGDIR'] = 'kr'; break; case 'ja': $ac['LANG'] = 'ja'; $ac['LANGWEB'] = 'ja'; $ac['LANGDIR'] = 'ja'; $ac['PHP_BUILD_DATE'] = date('Y/m/d'); break; case 'he': $ac['LANG'] = 'en'; $ac['LANGWEB'] = 'he'; $ac['LANGDIR'] = 'he'; $ac['LANG_HACK_FOR_HE'] = 'yes'; $ac['HACK_RTL_LANGS_PAGES'] = $ac['PHP'] . ' ' . "$srcdir/scripts/rtlpatch/rtlpatch.php ./html"; $ac['HACK_RTL_LANGS_PHPWEB'] = $ac['PHP'] . ' ' . "$srcdir/scripts/rtlpatch/rtlpatch.php ./php"; break; case 'hk': $ac['LANG'] = 'zh_hk'; $ac['LANGWEB'] = 'zh_hk'; $ac['LANGDIR'] = 'hk'; break; case 'tw': $ac['LANG'] = 'zh_tw'; $ac['LANGWEB'] = 'zh_tw'; $ac['LANGDIR'] = 'tw'; break; case 'cn': $ac['LANG'] = 'zh_cn'; $ac['LANGWEB'] = 'zh_cn'; $ac['LANGDIR'] = 'tw'; break; default: $ac['LANGWEB'] = $ac['LANG']; $ac['LANGDIR'] = $ac['LANG']; break; } echo $ac['LANG'] . "\n"; } else { $ac['LANGDIR'] = $ac['LANG']; $ac['LANGWEB'] = $ac['LANG']; echo "en (default)\n"; } // Check paper type if (in_array($ac['LANG'], explode('|', 'ar|cs|de|hu|it|ja|ko|pl|ro|sk|tr|zh_hk|zh_tw|zh_cn'))) { $ac['PAPER_TYPE'] = 'A4'; $ac['PDF_PAPER_TYPE'] = 'a4'; } else { $ac['PAPER_TYPE'] = 'USletter'; $ac['PDF_PAPER_TYPE'] = 'letter'; } // Localize order of number and element name in some headers autogenerated by Jade if (in_array($ac['LANG'], explode('|', 'hu|ko'))) { $ac['NUMBER_FIRST'] = '#t'; } // Reduce margins? echo 'checking for treesaving: '; if ($ac['TREESAVING'] == '#t') { $ac['LEFT_MARGIN'] = '(define %left-margin% 4pi)'; $ac['RIGHT_MARGIN'] = '(define %right-margin% 3pi)'; $ac['TOP_MARGIN'] = '(define %top-margin% 3pi)'; $ac['HEADER_MARGIN'] = '(define %header-margin% 2pi)'; $ac['FOOTER_MARGIN'] = '(define %footer-margin% 2pi)'; $ac['BOTTOM_MARGIN'] = '(define %bottom-margin% 3pi)'; $ac['LINE_SPACING'] = '(define %line-spacing-factor% 1.2)'; $ac['HEAD_BEFORE'] = '(define %head-before-factor% 0.6)'; $ac['HEAD_AFTER'] = '(define %head-after-factor% 0.3)'; $ac['BODY_START'] = '(define %body-start-indent% 3pi)'; $ac['BLOCK_SEP'] = '(define %block-sep% (* %para-sep% 1.2))'; echo "yes\n"; } else { echo "no\n"; } // Encoding switch ($ac['LANG']) { case 'zh_tw': case 'zh_hk': $ac['ENCODING'] = 'big5'; break; case 'zh_cn': $ac['ENCODING'] = 'gb2312'; break; case 'cs': case 'hu': case 'ro': case 'sk': $ac['ENCODING'] = 'ISO-8859-2'; break; case 'ar': $ac['ENCODING'] = 'ISO-8859-6'; break; case 'tr': $ac['ENCODING'] = 'ISO-8859-9'; break; case 'he': $ac['ENCODING'] = 'ISO-8859-8'; break; case 'el': $ac['ENCODING'] = 'ISO-8859-7'; break; default: $ac['ENCODING'] = 'UTF-8'; break; } if ($ac['LANG_HACK_FOR_HE'] == 'yes') { $ac['ENCODING'] = 'ISO-8859-8'; } // Palm doc title switch ($ac['LANG']) { case 'de': $ac['PALMDOCTITLE'] = "'PHP Handbuch'"; break; case 'es': $ac['PALMDOCTITLE']="'Manual de PHP'"; break; case 'fr': $ac['PALMDOCTITLE']="'Manuel PHP'"; break; case 'hu': $ac['PALMDOCTITLE']="'PHP Kézikönyv'"; break; case 'it': $ac['PALMDOCTITLE']="'Manuale PHP'"; break; case 'nl': $ac['PALMDOCTITLE']="'PHP Handleiding'"; break; case 'pl': $ac['PALMDOCTITLE']="'Podrêcznik PHP'"; break; case 'pt_BR': $ac['PALMDOCTITLE']="'Manual do PHP'"; break; case 'ro': $ac['PALMDOCTITLE']="'Manual PHP'"; break; case 'zh_hk': $ac['PALMDOCTITLE']="PHP ¤â¥U"; break; default: $ac['PALMDOCTITLE']="'PHP Manual'"; break; } switch ($ac['ENCODING']) { case 'ISO-8859-2': $ac['HTMLHELP_ENCODING'] = 'windows-1250'; break; case 'ISO-8859-6': $ac['HTMLHELP_ENCODING'] = 'windows-1256'; break; case 'ISO-8859-8': $ac['HTMLHELP_ENCODING'] = 'windows-1255'; break; case 'ISO-8859-9': $ac['HTMLHELP_ENCODING'] = 'windows-1254'; break; default: $ac['HTMLHELP_ENCODING'] = $ac['ENCODING']; break; } $ac['ENCODING'] = 'UTF-8'; /* recursive glob() with a callback function */ function globbetyglob($globber, $userfunc) { foreach (glob("$globber/*") as $file) { if (is_dir($file)) { globbetyglob($file, $userfunc); } else { call_user_func($userfunc, $file); } } } function find_dot_in($filename) { if (substr($filename, -3) == '.in') { $GLOBALS['infiles'][] = $filename; } } function generate_output_file($in, $out, $ac) { $data = file_get_contents($in); if ($data === false) return false; foreach ($ac as $k => $v) { $data = preg_replace('/@' . preg_quote($k) . '@/', $v, $data); } return file_put_contents($out, $data); } function make_scripts_executable($filename) { if (substr($filename, -3) == '.sh') { chmod($filename, 0755); } } if (file_exists($infiles_cache)) { $infiles = file($infiles_cache); } else { $infiles = array(); globbetyglob($srcdir, 'find_dot_in'); file_put_contents($infiles_cache, implode("\n", $infiles)); } $ac['AUTOGENERATED_RULES'] = ''; /* foreach ($infiles as $in) { $in = basename(chop($in)); $out = substr($in, 0, -3); if ($in == 'configure.in') { $ac['AUTOGENERATED_RULES'] .= "configure: configure.in\n" . "\t autoconf\n"; } else if ($in == 'manual.xml.in') { } else { $ac['AUTOGENERATED_RULES'] .= "$in: $out config.status\n" . "\t CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status\n"; } } */ foreach ($infiles as $in) { $in = chop($in); if (basename($in) == 'configure.in') continue; $out = substr($in, 0, -3); echo "generating $out: "; if (generate_output_file($in, $out, $ac)) { echo "done\n"; } else { echo "fail\n"; exit(117); } } globbetyglob($ac['INIPATH'], 'make_scripts_executable'); file_put_contents('./entities/phpweb.ent', ''); passthru(escapeshellcmd($ac['PHP']) . ' ' . ' -c ' . escapeshellarg($ac['INIPATH']) . ' -q ./scripts/file-entities.php'); passthru('rm -f entities/missing*'); passthru('rm -f entities/missing-ids.xml'); passthru(escapeshellcmd($ac['PHP']) . ' ' . ' -c ' . escapeshellarg($ac['INIPATH']) . ' -q ./scripts/missing-entities.php'); //print_r($ac); $dom = new DOMDocument(); $dom->load("manual.xml", LIBXML_NOENT); if ($dom->validate()) { echo "All good.\n"; $dom->save(".manual.xml"); echo "All you have to do now is run 'php build.php' in your phd checkout folder\n"; } else { echo "eyh man. No worries. Happ shittens. Try again after fixing the errors above\n"; }
http://cvs.php.net/viewvc.cgi/phpdoc/configure.php?view=markup&rev=1.1 Index: phpdoc/configure.php +++ phpdoc/configure.php <?php /* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2007 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.0 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_0.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Dave Barr <dave@php.net> | +----------------------------------------------------------------------+ $Id: configure.php,v 1.1 2007/09/08 17:59:31 bjori Exp $ */ $cvs_id = "$Id: configure.php,v 1.1 2007/09/08 17:59:31 bjori Exp $"; $srcdir = "./"; echo "configure.php: $cvs_id\n"; // Settings $cygwin_php_bat = '../phpdoc-tools/php.bat'; $cygwin_jade = '../phpdoc-tools/jade/jade.exe'; $cygwin_openjade = '../phpdoc-tools/openjade/openjade.exe'; $cygwin_nsgmls = '../phpdoc-tools/jade/nsgmls.exe'; $cygwin_onsgmls = '../phpdoc-tools/openjade/onsgmls.exe'; $cygwin_xsltproc = '../phpdoc-tools/libxml/xsltproc.exe'; $cygwin_xmllint = '../phpdoc-tools/libxml/xmllint.exe'; $php_bin_names = array('php', 'php5', 'cli/php', 'php.exe', 'php5.exe', 'php-cli.exe', 'php-cgi.exe'); $jade_bin_names = array('openjade', 'jade', 'openjade.exe', 'jade.exe'); $nsgmls_bin_names = array('onsgmls', 'nsgmls', 'onsgmls.exe', 'nsgmls.exe'); $xsltproc_bin_names = array('xsltproc', 'xsltproc.exe'); $xmllint_bin_names = array('xmllint', 'xmllint.exe'); $catalogs = array( "$srcdir/entities/ISO/catalog", "$srcdir/dsssl/docbook/catalog", "../phpdoc-tools/jade/catalog", "/usr/share/sgml/CATALOG.docbk41", "/usr/share/sgml/CATALOG.jade_dsl", "$srcdir/dsssl/defaults/catalog", ); $sources = array("$srcdir/../php-src", "$srcdir/../php5"); $pear_sources = array("$srcdir/../pear"); $pecl_sources = array("$srcdir/../pecl"); $infiles_cache = "$srcdir/infiles.cache"; // Reject old PHP installations if (phpversion() < 5) { echo "PHP 5 or above is required. Version detected: " . phpversion() . "\n"; exit(100); } else { echo "PHP version: " . phpversion() . "\n"; } echo "\n"; $ac = array(); $ac['srcdir'] = $srcdir; $ac['WORKDIR'] = $srcdir; $ac['PHP'] = ''; $ac['INIPATH'] = './scripts'; $ac['JADE'] = ''; $ac['WINJADE'] = 0; $ac['NSGMLS'] = ''; $ac['XSLTPROC'] = ''; $ac['XMLLINT'] = ''; $ac['DOCBOOK_HTML'] = "$srcdir/docbook/docbook-dsssl/html/docbook.dsl"; $ac['DOCBOOK_PRINT'] = "$srcdir/docbook/docbook-dsssl/print/docbook.dsl"; $ac['CATALOG'] = ''; $ac['PHP_SOURCE'] = ''; $ac['PEAR_SOURCE'] = ''; $ac['PECL_SOURCE'] = ''; $ac['EXT_SOURCE'] = ''; $ac['HTMLCSS'] = ''; $ac['CHMENABLED'] = 'no'; $ac['CHMONLY_INCL_BEGIN'] = '<!--'; $ac['CHMONLY_INCL_END'] = '-->'; $ac['INTERNALSDISABLED'] = 'no'; $ac['INTERNALS_EXCL_BEGIN'] = ''; $ac['INTERNALS_EXCL_END'] = ''; $ac['HACK_RTL_LANGS_PAGES'] = ''; $ac['HACK_RTL_LANGS_PHPWEB'] = ''; $ac['LANG_HACK_FOR_HE'] = 'no'; $ac['LANG'] = 'en'; $ac['LANGWEB'] = 'en'; $ac['PHP_BUILD_DATE'] = date('Y-m-d'); $ac['MANUAL'] = 'php_manual_en'; $ac['PAPER_TYPE'] = ''; $ac['PDF_PAPER_TYPE'] = ''; $ac['NUMBER_FIRST'] = '#f'; $ac['LEFT_MARGIN'] = ''; $ac['RIGHT_MARGIN'] = ''; $ac['TOP_MARGIN'] = ''; $ac['BOTTOM_MARGIN'] = ''; $ac['HEADER_MARGIN'] = ''; $ac['FOOTER_MARGIN'] = ''; $ac['LINE_SPACING'] = ''; $ac['HEAD_BEFORE'] = ''; $ac['HEAD_AFTER'] = ''; $ac['BODY_START'] = ''; $ac['BLOCK_SEP'] = ''; $ac['TREESAVING'] = '#f'; $ac['ENCODING'] = ''; $ac['PALMDOCTITLE'] = ''; $ac['HTMLHELP_ENCODING'] = ''; $ac['SP_OPTIONS'] = 'SP_ENCODING=XML SP_CHARSET_FIXED=YES'; $allowed_opts = array( 'help', 'with-php=', 'with-jade=', 'with-nsgmls=', 'with-xsltproc=', 'with-xmllint=', 'with-dsssl=', 'with-source=', 'with-pear-source==', 'with-pecl-source==', 'with-extension=', 'with-htmlcss=', 'with-chm=', 'without-internals', 'with-lang=', 'with-treesaving', ); foreach ($_SERVER['argv'] as $opt) { list($o, $v) = explode("=", $opt); switch ($o) { case '--help': usage(); exit(); case '--with-php': $ac['PHP'] = $v; break; case '--with-inipath': $ac['INIPATH'] = $v; break; case '--with-jade': $ac['JADE'] = $v; break; case '--with-nsgmls': $ac['NSGMLS'] = $v; break; case '--with-xsltproc': $ac['XSLTPROC'] = $v; break; case '--with-xmllint': $ac['XMLLINT'] = $v; break; case '--with-dsssl': $ac['DOCBOOK_HTML'] = "$v/html/docbook.dsl"; $ac['DOCBOOK_PRINT'] = "$v/print/docbook.dsl"; break; case '--with-source': $ac['PHP_SOURCE'] = $v; break; case '--with-pear-source': $ac['PEAR_SOURCE'] = $v != '' ? $v : 'yes'; break; case '--with-pecl-source': $ac['PECL_SOURCE'] = $v != '' ? $v : 'yes'; break; case '--with-extension': $ac['EXT_SOURCE'] = $v; break; case '--with-htmlcss': $ac['HTMLCSS'] = $v; break; case '--with-chm': $ac['CHMENABLED'] = $v; break; case '--without-internals': $ac['INTERNALSDISABLED'] = 'yes'; break; case '--with-lang': $ac['LANG'] = $v; break; case '--with-treesaving': $ac['TREESAVING'] = '#t'; break; } } function find_file($file_array) { $paths = explode(PATH_SEPARATOR, getenv('PATH')); if (is_array($paths)) { foreach ($paths as $path) { foreach ($file_array as $name) { if (file_exists("$path/$name") && is_file("$path/$name")) { return "$path/$name"; } } } } return ''; } // Check for PHP executable echo 'checking for php: '; if ($ac['PHP'] == '') { // Find PHP executable ourselves $ac['PHP'] = find_file($php_bin_names); } else if (file_exists($cygwin_php_bat)) { $ac['PHP'] = $cygwin_php_bat; echo "$cygwin_php_bat\n"; } if ($ac['PHP'] == '') { echo "no\n"; echo " Error: Could not find a PHP executable. Use --with-php=/path/to/php\n"; exit(103); } if (!file_exists($ac['PHP'])) { echo "no\n"; echo " Error: --with-php: {$ac['PHP']} does not exist.\n"; exit(104); } else if (!is_file($ac['PHP'])) { echo "no\n"; echo " Error: --with-php: {$ac['PHP']} is not a file.\n"; exit(105); } else { echo $ac['PHP'] . "\n"; } // Check for Jade/OpenJade executable echo 'checking for jade: '; if ($ac['JADE'] != '') { // User-supplied if (!file_exists($ac['JADE'])) { echo "no\n"; echo " Error: --with-jade: {$ac['JADE']} does not exist.\n"; exit(106); } else if (!is_file($ac['JADE'])) { echo "no\n"; echo " Error: --with-jade: {$ac['JADE']} is not a file.\n"; exit(107); } } else { // Find Jade executable ourselves $ac['JADE'] = find_file($jade_bin_names); } if ($ac['JADE'] == '' && file_exists($cygwin_jade) && is_file($cygwin_jade)) { $ac['JADE'] = $cygwin_jade; $ac['WINJADE'] = 1; } else if ($ac['JADE'] == '' && file_exists($cygwin_openjade) && is_file($cygwin_openjade)) { $ac['JADE'] = $cygwin_openjade; $ac['WINJADE'] = 1; } if ($ac['JADE'] == '') { echo "no\n"; echo " Error: Could not find a Jade/OpenJade executable. Use --with-jade=/path/to/jade\n"; } else { echo $ac['JADE'] . "\n"; } // Check for NSGMLS executable echo 'checking for nsgmls: '; if ($ac['NSGMLS'] != '') { // User-supplied if (!file_exists($ac['NSGMLS'])) { echo "no\n"; echo " Error: --with-nsgmls: {$ac['NSGMLS']} does not exist.\n"; exit(109); } else if (!is_file($ac['NSGMLS'])) { echo "no\n"; echo " Error: --with-nsgmls: {$ac['NSGMLS']} is not a file.\n"; exit(110); } } else { // Find NSGMLS executable ourselves $ac['NSGMLS'] = find_file($nsgmls_bin_names); } if ($ac['NSGMLS'] == '' && file_exists($cygwin_nsgmls) && is_file($cygwin_nsgmls)) { $ac['NSGMLS'] = $cygwin_nsgmls; } else if ($ac['NSGMLS'] == '' && file_exists($cygwin_onsgmls) && is_file($cygwin_onsgmls)) { $ac['NSGMLS'] = $cygwin_onsgmls; } if ($ac['NSGMLS'] == '') { echo "no\n"; echo " Error: Could not find a NSGMLS executable. Use --with-nsgmls=/path/to/jade\n"; } else { echo $ac['NSGMLS'] . "\n"; } // Check for XSLTPROC executable echo 'checking for xsltproc: '; if ($ac['XSLTPROC'] != '') { // User-supplied if (!file_exists($ac['XSLTPROC'])) { echo "no\n"; echo " Error: --with-xsltproc: {$ac['XSLTPROC']} does not exist.\n"; exit(112); } else if (!is_file($ac['XSLTPROC'])) { echo "no\n"; echo " Error: --with-xsltproc: {$ac['XSLTPROC']} is not a file.\n"; exit(113); } } else { // Find XSLTPROC executable ourselves $ac['XSLTPROC'] = find_file($xsltproc_bin_names); } if ($ac['XSLTPROC'] == '' && file_exists($cygwin_xsltproc) && is_file($cygwin_xsltproc)) { $ac['XSLTPROC'] = $cygwin_xsltproc; } if ($ac['XSLTPROC'] == '') { echo "no\n"; echo " Warning: Could not find a XSLTPROC executable. XSL Transformations won't work.\n"; } else { echo $ac['XSLTPROC'] . "\n"; } // Check for XMLLINT executable echo 'checking for xmllint: '; if ($ac['XMLLINT'] != '') { // User-supplied if (!file_exists($ac['XMLLINT'])) { echo "no\n"; echo " Error: --with-xmllint: {$ac['XMLLINT']} does not exist.\n"; exit(114); } else if (!is_file($ac['XMLLINT'])) { echo "no\n"; echo " Error: --with-xmllint: {$ac['XMLLINT']} is not a file.\n"; exit(115); } } else { // Find XMLLINT executable ourselves $ac['XMLLINT'] = find_file($xmllint_bin_names); } if ($ac['XMLLINT'] == '' && file_exists($cygwin_xmllint) && is_file($cygwin_xmllint)) { $ac['XMLLINT'] = $cygwin_xmllint; } if ($ac['XMLLINT'] == '') { echo "no\n"; echo " Warning: Could not find a XMLLINT executable. XSL Validation won't work.\n"; } else { echo $ac['XMLLINT'] . "\n"; } // Check for DocBook DSLs echo 'checking for docbook (HTML): '; if (!file_exists($ac['DOCBOOK_HTML'])) { echo "no\n"; echo " Warning: {$ac['DOCBOOK_HTML']} does not exist.\n"; } else if (!is_file($ac['DOCBOOK_HTML'])) { echo "no\n"; echo " Warning: {$ac['DOCBOOK_HTML']} is not a file.\n"; } else { echo $ac['DOCBOOK_HTML'] . "\n"; } echo 'checking for docbook (print): '; if (!file_exists($ac['DOCBOOK_PRINT'])) { echo "no\n"; echo " Warning: {$ac['DOCBOOK_PRINT']} does not exist.\n"; } else if (!is_file($ac['DOCBOOK_PRINT'])) { echo "no\n"; echo " Warning: {$ac['DOCBOOK_PRINT']} is not a file.\n"; } else { echo $ac['DOCBOOK_PRINT'] . "\n"; } // Check for Catalogs echo 'checking catalogs: '; foreach ($catalogs as $catalog) { if (file_exists($catalog) && is_file($catalog)) { $ac['CATALOG'] .= " -c $catalog"; } } if ($ac['CATALOG'] == '') { echo "no\n"; echo " Warning: No catalog files found.\n"; } else { $ac['CATALOG'] = substr($ac['CATALOG'], 1); echo $ac['CATALOG'] . "\n"; } // Check for PHP Source echo 'checking for PHP source: '; if ($ac['PHP_SOURCE'] != '') { if (!file_exists($ac['PHP_SOURCE'])) { echo "no\n"; echo " Warning: {$ac['PHP_SOURCE']} does not exist.\n"; } else if (!is_dir($ac['PHP_SOURCE'])) { echo "no\n"; echo " Warning: {$ac['PHP_SOURCE']} is not a directory.\n"; } else { echo $ac['PHP_SOURCE'] . "\n"; } } else { foreach ($sources as $source) { if (file_exists($source) && is_dir($source)) { $ac['PHP_SOURCE'] = $source; break; } } if ($ac['PHP_SOURCE'] == '') { echo "no\n"; echo " Warning: No PHP source directory found.\n"; } else { echo $ac['PHP_SOURCE'] . "\n"; } } // Check for PEAR Source echo 'checking for PEAR source: '; if ($ac['PEAR_SOURCE'] != '') { if ($ac['PEAR_SOURCE'] != 'yes') { if (!file_exists($ac['PEAR_SOURCE'])) { echo "no\n"; echo " Warning: {$ac['PEAR_SOURCE']} does not exist.\n"; } else if (!is_dir($ac['PEAR_SOURCE'])) { echo "no\n"; echo " Warning: {$ac['PEAR_SOURCE']} is not a directory.\n"; } else { echo $ac['PEAR_SOURCE'] . "\n"; } } else { foreach ($pear_sources as $source) { if (file_exists($source) && is_dir($source)) { $ac['PEAR_SOURCE'] = $source; break; } } if ($ac['PEAR_SOURCE'] == '') { echo "no\n"; echo " Warning: No PEAR source directory found.\n"; } else { echo $ac['PEAR_SOURCE'] . "\n"; } } } else { $ac['PEAR_SOURCE'] = 'no'; echo "no\n"; } // Check for PECL Source echo 'checking for PECL source: '; if ($ac['PECL_SOURCE'] != '') { if ($ac['PECL_SOURCE'] != 'yes') { if (!file_exists($ac['PECL_SOURCE'])) { echo "no\n"; echo " Warning: {$ac['PECL_SOURCE']} does not exist.\n"; } else if (!is_dir($ac['PECL_SOURCE'])) { echo "no\n"; echo " Warning: {$ac['PECL_SOURCE']} is not a directory.\n"; } else { echo $ac['PECL_SOURCE'] . "\n"; } } else { foreach ($pecl_sources as $source) { if (file_exists($source) && is_dir($source)) { $ac['PECL_SOURCE'] = $source; break; } } if ($ac['PECL_SOURCE'] == '') { echo "no\n"; echo " Warning: No PECL source directory found.\n"; } else { echo $ac['PECL_SOURCE'] . "\n"; } } } else { $ac['PECL_SOURCE'] = 'no'; echo "no\n"; } // Check for additional PHP extensions if ($ac['EXT_SOURCE'] != '') { echo "checking for additional PHP extensions:\n"; $exts = explode(',', $ac['EXT_SOURCE']); $ac['EXT_SOURCE'] = ''; foreach ($exts as $ext) { if (file_exists("$ext/manual") && is_dir("$ext/manual")) { $ac['EXT_SOURCE'] .= ":$ext"; echo " extension '$ext' ok\n"; } else { echo " extension '$ext' ignored\n"; } } } // Check for CSS to use for HTML docs echo 'checking for CSS to use for HTML docs: '; if ($ac['HTMLCSS'] != '') { echo $ac['HTMLCSS'] . "\n"; $ac['HTMLCSS'] = "(define %stylesheet% \"{$ac['HTMLCSS']}\")"; } else { echo "none\n"; } // Check for CHM echo 'checking for CHM-only inclusion: '; if ($ac['CHMENABLED'] == 'yes') { $ac['CHMONLY_INCL_BEGIN'] = ''; $ac['CHMONLY_INCL_END'] = ''; echo "enabled\n"; } else { $ac['CHMENABLED'] = 'no'; echo "disabled\n"; } // Check for internals echo 'checking for internals doc exclusion: '; if ($ac['INTERNALSDISABLED'] == 'yes') { $ac['INTERNALS_EXCL_BEGIN'] = '<!--'; $ac['INTERNALS_EXCL_END'] = '-->'; echo "yes\n"; } else { $ac['INTERNALSDISABLED'] = 'no'; echo "no\n"; } // Check for language echo 'checking for language: '; if ($ac['LANG'] != 'en') { if (!file_exists("$srcdir/{$ac['LANG']}")) { echo "no\n"; echo " Error: Language '{$ac['LANG']}' not supported!\n"; exit(116); } $ac['MANUAL'] = "php_manual_{$ac['LANG']}"; switch ($ac['LANG']) { case 'kr': $ac['LANG'] = 'ko'; $ac['LANGWEB'] = 'ko'; $ac['LANGDIR'] = 'kr'; break; case 'ja': $ac['LANG'] = 'ja'; $ac['LANGWEB'] = 'ja'; $ac['LANGDIR'] = 'ja'; $ac['PHP_BUILD_DATE'] = date('Y/m/d'); break; case 'he': $ac['LANG'] = 'en'; $ac['LANGWEB'] = 'he'; $ac['LANGDIR'] = 'he'; $ac['LANG_HACK_FOR_HE'] = 'yes'; $ac['HACK_RTL_LANGS_PAGES'] = $ac['PHP'] . ' ' . "$srcdir/scripts/rtlpatch/rtlpatch.php ./html"; $ac['HACK_RTL_LANGS_PHPWEB'] = $ac['PHP'] . ' ' . "$srcdir/scripts/rtlpatch/rtlpatch.php ./php"; break; case 'hk': $ac['LANG'] = 'zh_hk'; $ac['LANGWEB'] = 'zh_hk'; $ac['LANGDIR'] = 'hk'; break; case 'tw': $ac['LANG'] = 'zh_tw'; $ac['LANGWEB'] = 'zh_tw'; $ac['LANGDIR'] = 'tw'; break; case 'cn': $ac['LANG'] = 'zh_cn'; $ac['LANGWEB'] = 'zh_cn'; $ac['LANGDIR'] = 'tw'; break; default: $ac['LANGWEB'] = $ac['LANG']; $ac['LANGDIR'] = $ac['LANG']; break; } echo $ac['LANG'] . "\n"; } else { $ac['LANGDIR'] = $ac['LANG']; $ac['LANGWEB'] = $ac['LANG']; echo "en (default)\n"; } // Check paper type if (in_array($ac['LANG'], explode('|', 'ar|cs|de|hu|it|ja|ko|pl|ro|sk|tr|zh_hk|zh_tw|zh_cn'))) { $ac['PAPER_TYPE'] = 'A4'; $ac['PDF_PAPER_TYPE'] = 'a4'; } else { $ac['PAPER_TYPE'] = 'USletter'; $ac['PDF_PAPER_TYPE'] = 'letter'; } // Localize order of number and element name in some headers autogenerated by Jade if (in_array($ac['LANG'], explode('|', 'hu|ko'))) { $ac['NUMBER_FIRST'] = '#t'; } // Reduce margins? echo 'checking for treesaving: '; if ($ac['TREESAVING'] == '#t') { $ac['LEFT_MARGIN'] = '(define %left-margin% 4pi)'; $ac['RIGHT_MARGIN'] = '(define %right-margin% 3pi)'; $ac['TOP_MARGIN'] = '(define %top-margin% 3pi)'; $ac['HEADER_MARGIN'] = '(define %header-margin% 2pi)'; $ac['FOOTER_MARGIN'] = '(define %footer-margin% 2pi)'; $ac['BOTTOM_MARGIN'] = '(define %bottom-margin% 3pi)'; $ac['LINE_SPACING'] = '(define %line-spacing-factor% 1.2)'; $ac['HEAD_BEFORE'] = '(define %head-before-factor% 0.6)'; $ac['HEAD_AFTER'] = '(define %head-after-factor% 0.3)'; $ac['BODY_START'] = '(define %body-start-indent% 3pi)'; $ac['BLOCK_SEP'] = '(define %block-sep% (* %para-sep% 1.2))'; echo "yes\n"; } else { echo "no\n"; } // Encoding switch ($ac['LANG']) { case 'zh_tw': case 'zh_hk': $ac['ENCODING'] = 'big5'; break; case 'zh_cn': $ac['ENCODING'] = 'gb2312'; break; case 'cs': case 'hu': case 'ro': case 'sk': $ac['ENCODING'] = 'ISO-8859-2'; break; case 'ar': $ac['ENCODING'] = 'ISO-8859-6'; break; case 'tr': $ac['ENCODING'] = 'ISO-8859-9'; break; case 'he': $ac['ENCODING'] = 'ISO-8859-8'; break; case 'el': $ac['ENCODING'] = 'ISO-8859-7'; break; default: $ac['ENCODING'] = 'UTF-8'; break; } if ($ac['LANG_HACK_FOR_HE'] == 'yes') { $ac['ENCODING'] = 'ISO-8859-8'; } // Palm doc title switch ($ac['LANG']) { case 'de': $ac['PALMDOCTITLE'] = "'PHP Handbuch'"; break; case 'es': $ac['PALMDOCTITLE']="'Manual de PHP'"; break; case 'fr': $ac['PALMDOCTITLE']="'Manuel PHP'"; break; case 'hu': $ac['PALMDOCTITLE']="'PHP Kézikönyv'"; break; case 'it': $ac['PALMDOCTITLE']="'Manuale PHP'"; break; case 'nl': $ac['PALMDOCTITLE']="'PHP Handleiding'"; break; case 'pl': $ac['PALMDOCTITLE']="'Podrêcznik PHP'"; break; case 'pt_BR': $ac['PALMDOCTITLE']="'Manual do PHP'"; break; case 'ro': $ac['PALMDOCTITLE']="'Manual PHP'"; break; case 'zh_hk': $ac['PALMDOCTITLE']="PHP ¤â¥U"; break; default: $ac['PALMDOCTITLE']="'PHP Manual'"; break; } switch ($ac['ENCODING']) { case 'ISO-8859-2': $ac['HTMLHELP_ENCODING'] = 'windows-1250'; break; case 'ISO-8859-6': $ac['HTMLHELP_ENCODING'] = 'windows-1256'; break; case 'ISO-8859-8': $ac['HTMLHELP_ENCODING'] = 'windows-1255'; break; case 'ISO-8859-9': $ac['HTMLHELP_ENCODING'] = 'windows-1254'; break; default: $ac['HTMLHELP_ENCODING'] = $ac['ENCODING']; break; } $ac['ENCODING'] = 'UTF-8'; /* recursive glob() with a callback function */ function globbetyglob($globber, $userfunc) { foreach (glob("$globber/*") as $file) { if (is_dir($file)) { globbetyglob($file, $userfunc); } else { call_user_func($userfunc, $file); } } } function find_dot_in($filename) { if (substr($filename, -3) == '.in') { $GLOBALS['infiles'][] = $filename; } } function generate_output_file($in, $out, $ac) { $data = file_get_contents($in); if ($data === false) return false; foreach ($ac as $k => $v) { $data = preg_replace('/@' . preg_quote($k) . '@/', $v, $data); } return file_put_contents($out, $data); } function make_scripts_executable($filename) { if (substr($filename, -3) == '.sh') { chmod($filename, 0755); } } if (file_exists($infiles_cache)) { $infiles = file($infiles_cache); } else { $infiles = array(); globbetyglob($srcdir, 'find_dot_in'); file_put_contents($infiles_cache, implode("\n", $infiles)); } $ac['AUTOGENERATED_RULES'] = ''; /* foreach ($infiles as $in) { $in = basename(chop($in)); $out = substr($in, 0, -3); if ($in == 'configure.in') { $ac['AUTOGENERATED_RULES'] .= "configure: configure.in\n" . "\t autoconf\n"; } else if ($in == 'manual.xml.in') { } else { $ac['AUTOGENERATED_RULES'] .= "$in: $out config.status\n" . "\t CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status\n"; } } */ foreach ($infiles as $in) { $in = chop($in); if (basename($in) == 'configure.in') continue; $out = substr($in, 0, -3); echo "generating $out: "; if (generate_output_file($in, $out, $ac)) { echo "done\n"; } else { echo "fail\n"; exit(117); } } globbetyglob($ac['INIPATH'], 'make_scripts_executable'); file_put_contents('./entities/phpweb.ent', ''); passthru(escapeshellcmd($ac['PHP']) . ' ' . ' -c ' . escapeshellarg($ac['INIPATH']) . ' -q ./scripts/file-entities.php'); passthru('rm -f entities/missing*'); passthru('rm -f entities/missing-ids.xml'); passthru(escapeshellcmd($ac['PHP']) . ' ' . ' -c ' . escapeshellarg($ac['INIPATH']) . ' -q ./scripts/missing-entities.php'); //print_r($ac); $dom = new DOMDocument(); $dom->load("manual.xml", LIBXML_NOENT); if ($dom->validate()) { echo "All good.\n"; $dom->save(".manual.xml"); echo "All you have to do now is run 'php build.php' in your phd checkout folder\n"; } else { echo "eyh man. No worries. Happ shittens. Try again after fixing the errors above\n"; }