From: Roland Hieber Date: Mon, 6 Nov 2017 17:31:17 +0100 Subject: [PATCH] CMake: make FindLCMS.cmake cross-compatible FindLCMS.make complains when being run in cross-compile mode: -- Checking for module 'lcms' -- Found lcms, version 1.19 CMake Error: TRY_RUN() invoked in cross-compiling mode, please set the following cache variables appropriately: LCMS_VERSION (advanced) LCMS_VERSION__TRYRUN_OUTPUT (advanced) For details see [...]/poppler-0.60.1-build/TryRunResults.cmake -- Found lcms version P.LE, [...]/sysroot-target/usr/lib/liblcms.so To work around this, replace try_run() with the version parsing regex from FindLCMS2.make, and adapt it accordingly for lcms1. Signed-off-by: Roland Hieber --- cmake/modules/FindLCMS.cmake | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/cmake/modules/FindLCMS.cmake b/cmake/modules/FindLCMS.cmake index 9d162d2cfdd8..504f67fa75f1 100644 --- a/cmake/modules/FindLCMS.cmake +++ b/cmake/modules/FindLCMS.cmake @@ -42,34 +42,21 @@ else(LCMS_INCLUDE_DIR AND LCMS_LIBRARIES) endif(LCMS_INCLUDE_DIR AND LCMS_LIBRARIES) if(LCMS_FOUND) - set(FIND_LCMS_VERSION_SOURCE - "#include \n int main()\n {\n return LCMS_VERSION;\n }\n") - set(FIND_LCMS_VERSION_SOURCE_FILE ${CMAKE_BINARY_DIR}/CMakeTmp/FindLCMS.cxx) - file(WRITE "${FIND_LCMS_VERSION_SOURCE_FILE}" "${FIND_LCMS_VERSION_SOURCE}") - - set(FIND_LCMS_VERSION_ADD_INCLUDES - "-DINCLUDE_DIRECTORIES:STRING=${LCMS_INCLUDE_DIR}") - - try_run(LCMS_VERSION LCMS_COMPILE_RESULT - ${CMAKE_BINARY_DIR} - ${FIND_LCMS_VERSION_SOURCE_FILE} - CMAKE_FLAGS "${FIND_LCMS_VERSION_ADD_INCLUDES}" - OUTPUT_VARIABLE OUTPUT) - - if(LCMS_COMPILE_RESULT AND NOT LCMS_VERSION STREQUAL FAILED_TO_RUN) + file(READ ${LCMS_INCLUDE_DIR}/lcms.h LCMS_VERSION_CONTENT) + string(REGEX MATCH "#define LCMS_VERSION[ ]*[0-9]*\n" LCMS_VERSION_MATCH ${LCMS_VERSION_CONTENT}) + if(LCMS_VERSION_MATCH) + string(REGEX REPLACE "#define LCMS_VERSION[ ]*([0-9]*)\n" "\\1" LCMS_VERSION ${LCMS_VERSION_MATCH}) if(NOT LCMS_FIND_QUIETLY) string(SUBSTRING ${LCMS_VERSION} 0 1 LCMS_MAJOR_VERSION) string(SUBSTRING ${LCMS_VERSION} 1 2 LCMS_MINOR_VERSION) message(STATUS "Found lcms version ${LCMS_MAJOR_VERSION}.${LCMS_MINOR_VERSION}, ${LCMS_LIBRARIES}") endif(NOT LCMS_FIND_QUIETLY) - else(LCMS_COMPILE_RESULT AND NOT LCMS_VERSION STREQUAL FAILED_TO_RUN) + else(LCMS_VERSION_MATCH) if(NOT LCMS_FIND_QUIETLY) message(STATUS "Found lcms but failed to find version ${LCMS_LIBRARIES}") - file(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log - "Find lcms version failed with the following output:\n${OUTPUT}\nFindLCMS.cxx:\n${FIND_LCMS_VERSION_SOURCE}\n\n") endif(NOT LCMS_FIND_QUIETLY) set(LCMS_VERSION NOTFOUND) - endif(LCMS_COMPILE_RESULT AND NOT LCMS_VERSION STREQUAL FAILED_TO_RUN) + endif(LCMS_VERSION_MATCH) else(LCMS_FOUND) if(NOT LCMS_FIND_QUIETLY) if(LCMS_FIND_REQUIRED)