Skip to content

Commit 1605e9c

Browse files
committed
Resolve relative and absolute paths in generated files
1 parent 2be4310 commit 1605e9c

File tree

17 files changed

+704
-490
lines changed

17 files changed

+704
-490
lines changed

bin/check-cmake.php

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -457,12 +457,19 @@ function checkModules(Iterator $modules, Iterator $allCMakeFiles): int
457457
$status = 0;
458458

459459
foreach ($modules as $module) {
460-
$moduleName = $module->getBasename('.cmake');
461-
$prefix = pathinfo(dirname($module->getRealPath()), PATHINFO_FILENAME);
462-
$prefix = (1 === preg_match('/cmake|modules/', $prefix)) ? '' : $prefix . '/';
463-
$moduleNameEscaped = str_replace('/', '\/', $prefix . $moduleName);
464-
$moduleBasename = $module->getBasename();
465-
$moduleBasenameEscaped = str_replace('.', '\.', $moduleBasename);
460+
$namespace = '';
461+
$parent = dirname($module->getRealPath());
462+
$prefix = pathinfo($parent, PATHINFO_FILENAME);
463+
$counter = 0;
464+
while ($counter < 10 && 0 === preg_match('/cmake|modules/', $prefix)) {
465+
$namespace = $prefix . '/' . $namespace;
466+
$parent = dirname($parent);
467+
$prefix = pathinfo($parent, PATHINFO_FILENAME);
468+
++$counter;
469+
}
470+
471+
$moduleNameEscaped = str_replace('/', '\/', $namespace . $module->getBasename('.cmake'));
472+
$moduleBasenameEscaped = str_replace('.', '\.', $module->getBasename());
466473

467474
$found = false;
468475
foreach ($allCMakeFiles as $file) {

cmake/Zend/cmake/GenerateGrammar.cmake

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
# Generate lexer and parser files.
22

3+
include(FeatureSummary)
4+
include(PHP/Package/BISON)
5+
include(PHP/Package/RE2C)
6+
37
if(
4-
EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zend_ini_parser.c
5-
AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zend_ini_parser.h
6-
AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zend_language_parser.c
7-
AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zend_language_parser.h
8+
NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zend_ini_parser.c
9+
OR NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zend_ini_parser.h
10+
OR NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zend_language_parser.c
11+
OR NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zend_language_parser.h
812
)
9-
set(PHP_BISON_OPTIONAL TRUE)
13+
set_package_properties(BISON PROPERTIES TYPE REQUIRED)
1014
endif()
11-
include(PHP/BISON)
1215

1316
if(BISON_FOUND)
1417
if(CMAKE_SCRIPT_MODE_FILE)
@@ -22,7 +25,6 @@ if(BISON_FOUND)
2225
zend_ini_parser.y
2326
${CMAKE_CURRENT_SOURCE_DIR}/zend_ini_parser.c
2427
HEADER
25-
#HEADER_FILE ${CMAKE_CURRENT_SOURCE_DIR}/zend_ini_parser.h
2628
${verbose}
2729
)
2830

@@ -37,8 +39,8 @@ if(BISON_FOUND)
3739
zend_language_parser.y
3840
${CMAKE_CURRENT_SOURCE_DIR}/zend_language_parser.c
3941
HEADER
40-
#HEADER_FILE ${CMAKE_CURRENT_SOURCE_DIR}/zend_language_parser.h
4142
${verbose}
43+
CODEGEN
4244
)
4345

4446
# Tweak zendparse to be exported through ZEND_API. This has to be revisited
@@ -109,14 +111,13 @@ if(BISON_FOUND)
109111
endif()
110112

111113
if(
112-
EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zend_ini_scanner.c
113-
AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zend_ini_scanner_defs.h
114-
AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zend_language_scanner.c
115-
AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zend_language_scanner_defs.h
114+
NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zend_ini_scanner.c
115+
OR NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zend_ini_scanner_defs.h
116+
OR NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zend_language_scanner.c
117+
OR NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zend_language_scanner_defs.h
116118
)
117-
set(PHP_RE2C_OPTIONAL TRUE)
119+
set_package_properties(RE2C PROPERTIES TYPE REQUIRED)
118120
endif()
119-
include(PHP/RE2C)
120121

121122
if(RE2C_FOUND)
122123
re2c(

0 commit comments

Comments
 (0)