summaryrefslogtreecommitdiff
path: root/test cases/common
diff options
context:
space:
mode:
authorJan200101 <sentrycraft123@gmail.com>2025-06-07 10:37:02 +0200
committerJussi Pakkanen <jussi.pakkanen@mailbox.org>2025-06-08 23:51:31 +0300
commitc8432df30edea96557db871d67c731537654afbf (patch)
tree8c073d471a4df3f600992f9e54fd2c5519c7088e /test cases/common
parent07cd9bc16b0c2215b5d835d738e48085baa8f251 (diff)
downloadmeson-c8432df30edea96557db871d67c731537654afbf.tar.gz
replace regex implementation for cmake with a parser
cmake does preprocessing in a linear pass through the entire file this allows recursive variable lookups which cannot be supported by a basic regex implementation.
Diffstat (limited to 'test cases/common')
-rw-r--r--test cases/common/14 configure file/config7.h.in17
-rw-r--r--test cases/common/14 configure file/prog7.c12
2 files changed, 14 insertions, 15 deletions
diff --git a/test cases/common/14 configure file/config7.h.in b/test cases/common/14 configure file/config7.h.in
index edd0bb3fe..5180c2fba 100644
--- a/test cases/common/14 configure file/config7.h.in
+++ b/test cases/common/14 configure file/config7.h.in
@@ -1,16 +1,11 @@
-/* No escape */
+/* cmake substitions cannot be escaped */
#define MESSAGE1 "${var1}"
-
-/* Single escape means no replace */
#define MESSAGE2 "\${var1}"
-
-/* Replace pairs of escapes before '@' or '\@' with escape characters
- * (note we have to double number of pairs due to C string escaping)
- */
#define MESSAGE3 "\\\\${var1}"
-
-/* Pairs of escapes and then single escape to avoid replace */
#define MESSAGE4 "\\\\\${var1}"
+#define MESSAGE5 "@var1@"
+#define MESSAGE6 "\\@var1@"
+#define MESSAGE7 "\\\\@var1@"
-/* Check escape character outside variables */
-#define MESSAGE5 "\\ ${ \${ \\\\${ \\\\\${"
+/* backslash is an invalid variable character */
+#define MESSAGE8 "@var1\@"
diff --git a/test cases/common/14 configure file/prog7.c b/test cases/common/14 configure file/prog7.c
index 802bc46e5..900522c14 100644
--- a/test cases/common/14 configure file/prog7.c
+++ b/test cases/common/14 configure file/prog7.c
@@ -3,8 +3,12 @@
int main(void) {
return strcmp(MESSAGE1, "foo")
- || strcmp(MESSAGE2, "${var1}")
- || strcmp(MESSAGE3, "\\foo")
- || strcmp(MESSAGE4, "\\${var1}")
- || strcmp(MESSAGE5, "\\ ${ ${ \\${ \\${");
+ || strcmp(MESSAGE2, "\foo")
+ || strcmp(MESSAGE3, "\\\\foo")
+ || strcmp(MESSAGE4, "\\\\\foo")
+ || strcmp(MESSAGE5, "foo")
+ || strcmp(MESSAGE6, "\\foo")
+ || strcmp(MESSAGE7, "\\\\foo")
+ || strcmp(MESSAGE8, "@var1\@")
+ || 0;
}