[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#887613: gwenview FTCBFS: uses try_run



Source: gwenview
Version: 4:17.08.3-1
Tags: patch upstream
User: helmutg@debian.org
Usertags: rebootstrap
Control: affects 887452 + src:gwenview

gwenview fails to cross build from source, because it uses try_run.
Fortunately, it does not actually need try_run. The relevant check can
be implemented using try_compile. It's not pretty, because cmake doesn't
have an equivalent of AC_COMPUTE_INT, but it makes the check work for
native and cross compilation. Please consider appying the attached
patch. After doing so, gwenview still fails to cross build due to
#887452.

Helmut
Index: gwenview-17.08.3/lib/CMakeLists.txt
===================================================================
--- gwenview-17.08.3.orig/lib/CMakeLists.txt
+++ gwenview-17.08.3/lib/CMakeLists.txt
@@ -12,41 +12,57 @@
 # found in (between libjpeg, libjpeg-turbo and various multilib header
 # forwarding schemes seen in distros), have a simple program print out the
 # right version.
-set(JPEGLIB_VERSION_CHECK_PATH "${CMAKE_CURRENT_BINARY_DIR}/jpeglib-version-check.c")
-file(WRITE ${JPEGLIB_VERSION_CHECK_PATH} "
+set(JPEGLIB_VERSION_CHECK_PATH_LT80 "${CMAKE_CURRENT_BINARY_DIR}/jpeglib-version-check-lt80.c")
+file(WRITE ${JPEGLIB_VERSION_CHECK_PATH_LT80} "
 #include <stdio.h>
 #include <stdlib.h>
 #include <jpeglib.h>
-
-int main(void) { printf(\"%d\\\n\", JPEG_LIB_VERSION); }
+int main(void) { char dummy[JPEG_LIB_VERSION < 80 ? 1 : -1]; }
+")
+set(JPEGLIB_VERSION_CHECK_PATH_EQ80 "${CMAKE_CURRENT_BINARY_DIR}/jpeglib-version-check-eq80.c")
+file(WRITE ${JPEGLIB_VERSION_CHECK_PATH_EQ80} "
+#include <stdio.h>
+#include <stdlib.h>
+#include <jpeglib.h>
+int main(void) { char dummy[JPEG_LIB_VERSION == 80 ? 1 : -1]; }
+")
+set(JPEGLIB_VERSION_CHECK_PATH_EQ90 "${CMAKE_CURRENT_BINARY_DIR}/jpeglib-version-check-eq90.c")
+file(WRITE ${JPEGLIB_VERSION_CHECK_PATH_EQ90} "
+#include <stdio.h>
+#include <stdlib.h>
+#include <jpeglib.h>
+int main(void) { char dummy[JPEG_LIB_VERSION == 90 ? 1 : -1]; }
 ")
 
-try_run(JPEGLIB_RUN_RESULT JPEGLIB_COMPILE_RESULT
-    ${CMAKE_CURRENT_BINARY_DIR} ${JPEGLIB_VERSION_CHECK_PATH}
-    CMAKE_FLAGS -DINCLUDE_DIRECTORIES:PATH=${JPEG_INCLUDE_DIR}
-    RUN_OUTPUT_VARIABLE jpeglib_version)
-
-if ((${JPEGLIB_COMPILE_RESULT} EQUAL FALSE) OR ("${JPEGLIB_RUN_RESULT}" EQUAL FAILED_TO_RUN) OR "${jpeglib_version}" STREQUAL "")
-    message(FATAL_ERROR "Could not find jpeglib.h. This file comes with libjpeg.")
-endif()
+try_compile(JPEGLIB_LT80_RESULT
+    ${CMAKE_CURRENT_BINARY_DIR} ${JPEGLIB_VERSION_CHECK_PATH_LT80}
+    CMAKE_FLAGS -DINCLUDE_DIRECTORIES:PATH=${JPEG_INCLUDE_DIR})
 
-if ("${jpeglib_version}" LESS 80)
+if (${JPEGLIB_LT80_RESULT})
     set(GV_JPEG_DIR libjpeg-62)
 endif()
 
-if ("${jpeglib_version}" EQUAL 80)
+try_compile(JPEGLIB_EQ80_RESULT
+    ${CMAKE_CURRENT_BINARY_DIR} ${JPEGLIB_VERSION_CHECK_PATH_EQ80}
+    CMAKE_FLAGS -DINCLUDE_DIRECTORIES:PATH=${JPEG_INCLUDE_DIR})
+
+if (${JPEGLIB_EQ80_RESULT})
     set(GV_JPEG_DIR libjpeg-80)
 endif()
 
-if ("${jpeglib_version}" EQUAL 90)
+try_compile(JPEGLIB_EQ90_RESULT
+    ${CMAKE_CURRENT_BINARY_DIR} ${JPEGLIB_VERSION_CHECK_PATH_EQ90}
+    CMAKE_FLAGS -DINCLUDE_DIRECTORIES:PATH=${JPEG_INCLUDE_DIR})
+
+if (${JPEGLIB_EQ90_RESULT})
     set(GV_JPEG_DIR libjpeg-90)
 endif()
 
 if ("${GV_JPEG_DIR}" STREQUAL "")
-    message(FATAL_ERROR "Unknown libjpeg version: ${jpeglib_version}")
+    message(FATAL_ERROR "Could not find jpeglib.h or unknown libjpeg version. This file comes with libjpeg.")
 endif()
 
-message(STATUS "libjpeg version: ${jpeglib_version}")
+message(STATUS "libjpeg directory: ${GV_JPEG_DIR}")
 
 add_definitions(-Dlibjpeg_EXPORTS)
 include_directories(

Reply to: