diff options
Diffstat (limited to 'genfiles')
-rwxr-xr-x | genfiles | 111 |
1 files changed, 88 insertions, 23 deletions
@@ -1,36 +1,101 @@ -#! /bin/sh +#!/bin/sh +# +# +----------------------------------------------------------------------+ +# | PHP Version 7 | +# +----------------------------------------------------------------------+ +# | Copyright (c) 1997-2018 The PHP Group | +# +----------------------------------------------------------------------+ +# | This source file is subject to version 3.01 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: | +# | https://php.net/license/3_01.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: Sascha Schumann <sascha@schumann.cx> | +# +----------------------------------------------------------------------+ +# +# This script generates PHP lexer and parser files required to build PHP. The +# generated files are ignored in the Git repository and packaged during the PHP +# release process into the release installation archive download. This way the +# bison and re2c dependencies are not required to build PHP when downloading +# release archive. +# +# Usage: genfiles +# +# Environment: +# The following environment variables can override default generators paths. +# +# YACC Parser generator program, default bison +# RE2C Lexer generator program, default re2c +# +# For example: +# YACC=/path/to/bison ./genfiles -if [ -z $YACC ]; then - YACC="bison" -fi +# Parser generator +YACC=${YACC:-bison} YACC="$YACC -y -l" -if [ -z $RE2C ]; then - RE2C="re2c" -fi +# Lexer generator +RE2C=${RE2C:-re2c} +RE2C_FLAGS="-i" -# Generate Zend parser and lexer files -STD="make -f Zend/Makefile.frag RE2C='$RE2C' RE2C_FLAGS='-i' YACC='$YACC' srcdir=Zend builddir=Zend top_srcdir=." -(eval "$STD Zend/zend_language_parser.c Zend/zend_language_scanner.c Zend/zend_ini_parser.c Zend/zend_ini_scanner.c") +# Current path to return to it later. This enables running script from any path. +original_path=`pwd` -# Generate phpdbg parser and lexer files -STD="make -f sapi/phpdbg/Makefile.frag RE2C='$RE2C' RE2C_FLAGS='-i' YACC='$YACC' srcdir=sapi/phpdbg builddir=sapi/phpdbg top_srcdir=." -(eval "$STD sapi/phpdbg/phpdbg_parser.c sapi/phpdbg/phpdbg_lexer.c") +# Project root directory +project_root=`CDPATH= cd -- "$(dirname -- "$0")" && pwd -P` +cd $project_root -# Generate json parser and lexer files -STD="make -f ext/json/Makefile.frag RE2C='$RE2C' RE2C_FLAGS='-i' YACC='$YACC' srcdir=ext/json builddir=ext/json top_srcdir=." -(eval "$STD ext/json/json_parser.tab.c ext/json/json_scanner.c") +echo "Generating Zend parser and lexer files" +make RE2C="$RE2C" RE2C_FLAGS="$RE2C_FLAGS" YACC="$YACC" srcdir=Zend builddir=Zend top_srcdir=. \ + -f Zend/Makefile.frag \ + Zend/zend_language_parser.c \ + Zend/zend_language_scanner.c \ + Zend/zend_ini_parser.c \ + Zend/zend_ini_scanner.c -set -x +echo "Generating phpdbg parser and lexer files" +make RE2C="$RE2C" RE2C_FLAGS="$RE2C_FLAGS" YACC="$YACC" srcdir=sapi/phpdbg builddir=sapi/phpdbg top_srcdir=. \ + -f sapi/phpdbg/Makefile.frag \ + sapi/phpdbg/phpdbg_parser.c \ + sapi/phpdbg/phpdbg_lexer.c -CLEANUP_FILES=" \ - ext/pdo/pdo_sql_parser.c \ - ext/date/lib/parse_date.c \ - ext/standard/url_scanner_ex.c \ +echo "Generating json extension parser and lexer files" +make RE2C="$RE2C" RE2C_FLAGS="$RE2C_FLAGS" YACC="$YACC" srcdir=ext/json builddir=ext/json top_srcdir=. \ + -f ext/json/Makefile.frag \ + ext/json/json_parser.tab.c \ + ext/json/json_scanner.c + +echo "Generating PDO lexer file" +make RE2C="$RE2C" RE2C_FLAGS="$RE2C_FLAGS" srcdir=ext/pdo builddir=ext/pdo top_srcdir=. \ + -f ext/pdo/Makefile.frag \ + ext/pdo/pdo_sql_parser.c + +echo "Generating standard extension lexer files" +make RE2C="$RE2C" RE2C_FLAGS="$RE2C_FLAGS" srcdir=ext/standard builddir=ext/standard top_srcdir=. \ + -f ext/standard/Makefile.frag \ ext/standard/var_unserializer.c \ + ext/standard/url_scanner_ex.c + +echo "Generating phar extension lexer file" +make RE2C="$RE2C" RE2C_FLAGS="$RE2C_FLAGS" srcdir=ext/phar builddir=ext/phar top_srcdir=. \ + -f ext/phar/Makefile.frag \ + ext/phar/phar_path_check.c + +# Clean debug #line XY info from the bundled lexer files. +cleanup_files=" \ + ext/date/lib/parse_date.c \ + ext/date/lib/parse_iso_intervals.c \ " -for f in $CLEANUP_FILES; do +for f in $cleanup_files; do + echo "Cleaning file $f" cp $f $f.orig - grep -v '#line ' $f.orig > $f + grep -v '^#line ' $f.orig > $f + rm -f $f.orig done + +# Return to the original directory. +cd $original_path |