55#
66# Run as:
77#
8- # cmake -P cmake/scripts/GenerateLexersParsers .cmake
8+ # cmake -P cmake/scripts/GenerateGrammar .cmake
99#
1010# To manually override bison and re2c executables:
1111#
1212# cmake \
1313# [-D BISON_EXECUTABLE=path/to/bison] \
1414# [-D RE2C_EXECUTABLE=path/to/re2c] \
15- # -P cmake/scripts/GenerateLexersParsers.cmake
16- #
17- # TODO: Fix CS and fine tune this.
15+ # -P cmake/scripts/GenerateGrammar.cmake
1816#
1917# TODO: Should the Bison-generated report files (*.output) really be also
2018# created by this script (the `VERBOSE REPORT_FILE <file>` options)? PHP still
@@ -32,10 +30,10 @@ endif()
3230set (PHP_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR} /../..)
3331
3432if (NOT EXISTS ${PHP_SOURCE_DIR} /main/php_version.h)
35- message (FATAL_ERROR "This script should be run inside the php-src repository" )
33+ message (FATAL_ERROR "This script should be run in the php-src repository. " )
3634endif ()
3735
38- list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR} /.. /modules)
36+ list (APPEND CMAKE_MODULE_PATH ${PHP_SOURCE_DIR} /cmake /modules)
3937
4038include (PHP/BISON)
4139include (PHP/RE2C)
@@ -48,26 +46,16 @@ feature_summary(
4846 DEFAULT_DESCRIPTION
4947)
5048
51- set (CMAKE_CURRENT_SOURCE_DIR ${PHP_SOURCE_DIR} /ext /json)
52- set (CMAKE_CURRENT_BINARY_DIR ${PHP_SOURCE_DIR} /ext /json)
53- include (${PHP_SOURCE_DIR} /ext /json/cmake/GenerateGrammar.cmake)
54-
55- set (CMAKE_CURRENT_SOURCE_DIR ${PHP_SOURCE_DIR} /ext /pdo)
56- set (CMAKE_CURRENT_BINARY_DIR ${PHP_SOURCE_DIR} /ext /pdo)
57- include (${PHP_SOURCE_DIR} /ext /pdo/cmake/GenerateGrammar.cmake)
58-
59- set (CMAKE_CURRENT_SOURCE_DIR ${PHP_SOURCE_DIR} /ext /phar)
60- set (CMAKE_CURRENT_BINARY_DIR ${PHP_SOURCE_DIR} /ext /phar)
61- include (${PHP_SOURCE_DIR} /ext /phar/cmake/GenerateGrammar.cmake)
62-
63- set (CMAKE_CURRENT_SOURCE_DIR ${PHP_SOURCE_DIR} /ext /standard)
64- set (CMAKE_CURRENT_BINARY_DIR ${PHP_SOURCE_DIR} /ext /standard)
65- include (${PHP_SOURCE_DIR} /ext /standard/cmake/GenerateGrammar.cmake)
66-
67- set (CMAKE_CURRENT_SOURCE_DIR ${PHP_SOURCE_DIR} /sapi/phpdbg)
68- set (CMAKE_CURRENT_BINARY_DIR ${PHP_SOURCE_DIR} /sapi/phpdbg)
69- include (${PHP_SOURCE_DIR} /sapi/phpdbg/cmake/GenerateGrammar.cmake)
70-
71- set (CMAKE_CURRENT_SOURCE_DIR ${PHP_SOURCE_DIR} /Zend)
72- set (CMAKE_CURRENT_BINARY_DIR ${PHP_SOURCE_DIR} /Zend)
73- include (${PHP_SOURCE_DIR} /Zend/cmake/GenerateGrammar.cmake)
49+ file (
50+ GLOB_RECURSE scripts
51+ ${PHP_SOURCE_DIR} /ext /*/cmake/GenerateGrammar.cmake
52+ ${PHP_SOURCE_DIR} /sapi/*/cmake/GenerateGrammar.cmake
53+ ${PHP_SOURCE_DIR} /Zend/cmake/GenerateGrammar.cmake
54+ )
55+ foreach (script IN LISTS scripts)
56+ cmake_path(GET script PARENT_PATH path )
57+ cmake_path(GET path PARENT_PATH path )
58+ set (CMAKE_CURRENT_SOURCE_DIR ${path} )
59+ set (CMAKE_CURRENT_BINARY_DIR ${path} )
60+ include (${script} )
61+ endforeach ()
0 commit comments