Give cmake users some hints/requirements when cross compiling for Windows on Linux.
authorRalf Habacker <ralf.habacker@freenet.de>
Tue, 14 Jan 2014 19:12:36 +0000 (20:12 +0100)
committerRalf Habacker <ralf.habacker@freenet.de>
Tue, 21 Jan 2014 20:09:55 +0000 (21:09 +0100)
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=41252
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
cmake/CMakeLists.txt
cmake/modules/Macros.cmake

index c8a6834..fd6c525 100644 (file)
@@ -597,6 +597,11 @@ endif(NOT DBUS_DISABLE_ASSERT)
 if (DBUS_DISABLE_CHECKS)
     message("NOTE: building without checks for arguments passed to public API makes it harder to debug apps using D-BUS, but will slightly decrease D-BUS library size and _very_ slightly improve performance.")
 endif(DBUS_DISABLE_CHECKS)
+
+foreach(_note ${FOOTNOTES})
+    message(${_note})
+endforeach()
+
 MESSAGE(" ")
 
 INCLUDE(modules/CPackInstallConfig.cmake)
index 545f2e5..fd3f62c 100644 (file)
@@ -1,3 +1,29 @@
+if(DBUS_BUILD_TESTS AND CMAKE_CROSSCOMPILING AND CMAKE_SYSTEM_NAME STREQUAL "Windows")
+    if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
+        find_file(WINE_EXECUTABLE
+            NAMES wine
+            PATHS /usr/bin /usr/local/bin
+            NO_CMAKE_FIND_ROOT_PATH
+        )
+        find_file(HAVE_BINFMT_WINE_SUPPORT
+            NAMES DOSWin wine Wine windows Windows
+            PATHS /proc/sys/fs/binfmt_misc
+            NO_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH
+        )
+        if(WINE_EXECUTABLE AND HAVE_BINFMT_WINE_SUPPORT)
+            list(APPEND FOOTNOTES "NOTE: The requirements to run cross compiled applications on your host system are achieved. You may run 'make check'.")
+        endif()
+        if(NOT WINE_EXECUTABLE)
+            list(APPEND FOOTNOTES "NOTE: You may install the Windows emulator 'wine' to be able to run cross compiled test applications.")
+        endif()
+        if(NOT HAVE_BINFMT_WINE_SUPPORT)
+            list(APPEND FOOTNOTES "NOTE: You may activate binfmt_misc support for wine to be able to run cross compiled test applications.")
+        endif()
+    else()
+        list(APPEND FOOTNOTES "NOTE: You will not be able to run cross compiled applications on your host system.")
+    endif()
+endif()
+
 MACRO(TIMESTAMP RESULT)
     if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
         EXECUTE_PROCESS(COMMAND "cmd" " /C date /T" OUTPUT_VARIABLE DATE)