Avoid unexpected line breaks in version_string.inc
authorAugusto Fraga Giachero <augustofg96@gmail.com>
Mon, 18 Mar 2019 14:57:05 +0000 (11:57 -0300)
committerAugusto Fraga Giachero <augustofg96@gmail.com>
Mon, 18 Mar 2019 14:57:05 +0000 (11:57 -0300)
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

index 17e691b..c1fc8a2 100644 (file)
@@ -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()