Skip to content

Commit 294d2c9

Browse files
committed
py/mkrules: Fix QSTR generation on windows.
Escapes `<` and `>` characters within `MP_CONFIGFILE` define. That allows it to be used within generated `cmd.exe /C` commands. Applies only to builds on Windows. Signed-off-by: Georgij Cernysiov <geo.cgv@gmail.com>
1 parent 3dbe477 commit 294d2c9

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

py/mkrules.cmake

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ target_sources(${MICROPY_TARGET} PRIVATE
5454

5555
set(MP_QSTRDEFS_PREPROCESS_SED0 "s/^Q(.*)/\"&\"/")
5656
set(MP_QSTRDEFS_PREPROCESS_SED1 "s/^\\\"\\(Q(.*)\\)\\\"/\\1/")
57+
set(MP_CPP_FLAGS_ESCAPED ${MICROPY_CPP_FLAGS})
5758

5859
if(CMAKE_HOST_WIN32)
5960
# On Windows piped commands fail when forward slash is used with executable.
@@ -67,6 +68,11 @@ if(CMAKE_HOST_WIN32)
6768
string(REPLACE "&" "^&" MP_QSTRDEFS_PREPROCESS_SED0 "${MP_QSTRDEFS_PREPROCESS_SED0}")
6869
string(REPLACE "^" "^^" MP_QSTRDEFS_PREPROCESS_SED1 "${MP_QSTRDEFS_PREPROCESS_SED1}")
6970
string(REPLACE "&" "^&" MP_QSTRDEFS_PREPROCESS_SED1 "${MP_QSTRDEFS_PREPROCESS_SED1}")
71+
# Escape `<` and `>` in the -DMP_CONFIGFILE
72+
# otherwise generated command is invalid for CMD
73+
string(REGEX MATCH "-DMP_CONFIGFILE=<(.+h)>" MP_CONFIGFILE_DEF "${MP_CPP_FLAGS_ESCAPED}")
74+
# provide input as a string to preserve ';'
75+
string(REPLACE "-DMP_CONFIGFILE=<${CMAKE_MATCH_1}>" "-DMP_CONFIGFILE=^<${CMAKE_MATCH_1}^>" MP_CPP_FLAGS_ESCAPED "${MP_CPP_FLAGS_ESCAPED}")
7076
endif()
7177

7278
# Command to force the build of another command
@@ -119,7 +125,7 @@ add_custom_command(
119125

120126
add_custom_command(
121127
OUTPUT ${MICROPY_QSTRDEFS_PREPROCESSED}
122-
COMMAND cat ${MICROPY_QSTRDEFS_PY} ${MICROPY_QSTRDEFS_PORT} ${MICROPY_QSTRDEFS_COLLECTED} | sed ${MP_QSTRDEFS_PREPROCESS_SED0} | ${CMAKE_C_COMPILER} -E ${MICROPY_CPP_FLAGS} - | sed ${MP_QSTRDEFS_PREPROCESS_SED1} > ${MICROPY_QSTRDEFS_PREPROCESSED}
128+
COMMAND cat ${MICROPY_QSTRDEFS_PY} ${MICROPY_QSTRDEFS_PORT} ${MICROPY_QSTRDEFS_COLLECTED} | sed ${MP_QSTRDEFS_PREPROCESS_SED0} | ${CMAKE_C_COMPILER} -E ${MP_CPP_FLAGS_ESCAPED} - | sed ${MP_QSTRDEFS_PREPROCESS_SED1} > ${MICROPY_QSTRDEFS_PREPROCESSED}
123129
DEPENDS ${MICROPY_QSTRDEFS_PY}
124130
${MICROPY_QSTRDEFS_PORT}
125131
${MICROPY_QSTRDEFS_COLLECTED}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy