@@ -54,6 +54,7 @@ target_sources(${MICROPY_TARGET} PRIVATE
54
54
55
55
set (MP_QSTRDEFS_PREPROCESS_SED0 "s/^Q(.*)/\" &\" /" )
56
56
set (MP_QSTRDEFS_PREPROCESS_SED1 "s/^\\\"\\ (Q(.*)\\ )\\\" /\\ 1/" )
57
+ set (MP_CPP_FLAGS_ESCAPED ${MICROPY_CPP_FLAGS} )
57
58
58
59
if (CMAKE_HOST_WIN32 )
59
60
# On Windows piped commands fail when forward slash is used with executable.
@@ -67,6 +68,11 @@ if(CMAKE_HOST_WIN32)
67
68
string (REPLACE "&" "^&" MP_QSTRDEFS_PREPROCESS_SED0 "${MP_QSTRDEFS_PREPROCESS_SED0} " )
68
69
string (REPLACE "^" "^^" MP_QSTRDEFS_PREPROCESS_SED1 "${MP_QSTRDEFS_PREPROCESS_SED1} " )
69
70
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} " )
70
76
endif ()
71
77
72
78
# Command to force the build of another command
@@ -119,7 +125,7 @@ add_custom_command(
119
125
120
126
add_custom_command (
121
127
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}
123
129
DEPENDS ${MICROPY_QSTRDEFS_PY}
124
130
${MICROPY_QSTRDEFS_PORT}
125
131
${MICROPY_QSTRDEFS_COLLECTED}
0 commit comments