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          |
  | [EMAIL PROTECTED] so we can mail you a copy immediately.               |
  +----------------------------------------------------------------------+
  | Authors:    Dave Barr <[EMAIL PROTECTED]>                                 |
  +----------------------------------------------------------------------+
  
  $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";
}
  

Reply via email to