1
0
mirror of https://github.com/php/php-src.git synced 2026-04-26 17:38:14 +02:00
Files
archived-php-src/scripts/dev/genfiles
T
Peter Kokot e525ce30a5 Move distribution generator script to scripts/dev
The more proper place for shell scripts dedicated for development, and
releasing PHP should be the scripts/dev directory. Having a cleaner root
project directory helps find the main README.md and files relevant to
install PHP.

These scripts are also used by the release managers mostly who create
release packages and aren't used often by the majority of developers
working on and installing PHP.
2019-03-16 23:51:05 +01:00

102 lines
3.7 KiB
Bash
Executable File

#!/bin/sh
#
# +----------------------------------------------------------------------+
# | PHP Version 7 |
# +----------------------------------------------------------------------+
# | Copyright (c) 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
# Parser generator
YACC=${YACC:-bison}
YACC="$YACC -y -l"
# Lexer generator
RE2C=${RE2C:-re2c}
RE2C_FLAGS="-i"
# Current path to return to it later. This enables running script from any path.
original_path=`pwd`
# Project root directory
project_root=`CDPATH= cd -- "$(dirname -- "$0")/../../" && pwd -P`
cd $project_root
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
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
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
echo "Cleaning file $f"
cp $f $f.orig
grep -v '^#line ' $f.orig > $f
rm -f $f.orig
done
# Return to the original directory.
cd $original_path