CMake: pro2cmake: Handle LIBS_SUFFIX define correctly

Matches the LIBS_SUFFIX define we use in Android conditions
and replaces it with a sane amount of escaped characters.

Change-Id: I7d870f992c70b105dd80b6fa94f87d3fa5644006
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
Alexandru Croitor 2020-03-10 14:49:46 +01:00
parent 14546d1816
commit d2419b0d8c
3 changed files with 14 additions and 2 deletions

View File

@ -316,7 +316,7 @@ qt_extend_target(Core CONDITION ANDROID
kernel/qsharedmemory_android.cpp
kernel/qsystemsemaphore_android.cpp
DEFINES
LIBS_SUFFIX='\\"_${CMAKE_SYSTEM_PROCESSOR}.so\\"'
LIBS_SUFFIX="_${CMAKE_SYSTEM_PROCESSOR}.so"
)
qt_extend_target(Core CONDITION MSVC AND (TEST_architecture_arch STREQUAL "i386")

View File

@ -427,7 +427,7 @@ qt_extend_target(Core CONDITION ANDROID
kernel/qsharedmemory_android.cpp
kernel/qsystemsemaphore_android.cpp
DEFINES
LIBS_SUFFIX="\\\\"_${CMAKE_SYSTEM_PROCESSOR}.so\\\\"" # special case
LIBS_SUFFIX="_${CMAKE_SYSTEM_PROCESSOR}.so"
)
qt_extend_target(Core CONDITION MSVC AND (TEST_architecture_arch STREQUAL "i386")

View File

@ -1956,6 +1956,18 @@ def write_defines(
d.replace('=\\\\\\"$$PWD/\\\\\\"', '="${CMAKE_CURRENT_SOURCE_DIR}/"') for d in defines
]
# Handle LIBS_SUFFIX='\\"_$${QT_ARCH}.so\\"'.
# The escaping of backslashes is still needed even if it's a raw
# string, because backslashes have a special meaning for regular
# expressions (escape next char). So we actually expect to match
# 2 backslashes in the input string.
pattern = r"""([^ ]+)='\\\\"([^ ]*)\\\\"'"""
# Replace with regular quotes, CMake will escape the quotes when
# passing the define to the compiler.
replacement = r'\1="\2"'
defines = [re.sub(pattern, replacement, d) for d in defines]
if "qml_debug" in scope.get("CONFIG"):
defines.append("QT_QML_DEBUG")