From 032e45808525a5fb751ab91a82c8ba572a9387b5 Mon Sep 17 00:00:00 2001 From: Augusto Fraga Giachero Date: Mon, 18 Mar 2019 11:57:05 -0300 Subject: [PATCH] Avoid unexpected line breaks in version_string.inc The Android NDK 16b has a bug that sets the ANDROID_NDK_REVISION variable incorrectly, generating an unexpected line break in the middle of the string. This breaks the build as the generated version_string.inc presents an invalid C string. Remove leading and trailing line breaks, warns for line breaks in the middle of 'msg' and escape them before appending to OPENCV_BUILD_INFO_STR. --- cmake/OpenCVUtils.cmake | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cmake/OpenCVUtils.cmake b/cmake/OpenCVUtils.cmake index 17e691b838..c1fc8a2e4f 100644 --- a/cmake/OpenCVUtils.cmake +++ b/cmake/OpenCVUtils.cmake @@ -784,6 +784,11 @@ function(ocv_output_status msg) message(STATUS "${msg}") string(REPLACE "\\" "\\\\" msg "${msg}") string(REPLACE "\"" "\\\"" msg "${msg}") + string(REGEX REPLACE "^\n+|\n+$" "" msg "${msg}") + if(msg MATCHES "\n") + message(WARNING "String to be inserted to version_string.inc has an unexpected line break: '${msg}'") + string(REPLACE "\n" "\\n" msg "${msg}") + endif() set(OPENCV_BUILD_INFO_STR "${OPENCV_BUILD_INFO_STR}\"${msg}\\n\"\n" CACHE INTERNAL "") endfunction()