Quellcode durchsuchen

BUG: QtMobility is now properly patched and configured to be build as an external project.

Also added the convenient cmake macro: ctkMacroApplyPatches that could be used
to patch a source directory given a list of patches to apply.

Note that it has been tested on Linux not windows. Let's wait the output of the dashboard.
Jean-Christophe Fillion-Robin vor 15 Jahren
Ursprung
Commit
24dce0dbc6

+ 21 - 0
CMake/ctkMacroApplyPatches.cmake

@@ -0,0 +1,21 @@
+#
+#
+#
+
+MACRO(ctkMacroApplyPatches PATCH_EXE SRC_DIR PATCH_FILES)
+  
+  # Make sure patch executable exists
+  IF(NOT EXISTS ${PATCH_EXE})
+    MESSAGE(FATAL_ERROR "ERROR: Program [${PATCH_EXE}] doesn't exist !")
+  ENDIF()
+
+  # Apply patches
+  FOREACH(patch_file ${PATCH_FILES})
+    MESSAGE("Applying patch: ${patch_file}")
+    EXECUTE_PROCESS(COMMAND ${PATCH_EXE} -p0 -i "${patch_file}" -d "${SRC_DIR}" RESULT_VARIABLE result_var)
+    IF(result_var)
+      MESSAGE("ERROR: ${result_var}")
+    ENDIF(result_var)
+  ENDFOREACH()
+  
+ENDMACRO()

+ 8 - 0
CMakeLists.txt

@@ -55,6 +55,14 @@ INCLUDE(CMake/ctkMacroSetupQt.cmake)
 INCLUDE(CMake/ctkMacroGetTargetLibraries.cmake)
 
 #-----------------------------------------------------------------------------
+# Patch program
+#
+FIND_PROGRAM(CTK_PATCH_EXECUTABLE patch
+  "C:/Program Files/GnuWin32/bin"
+  "C:/Program Files (x86)/GnuWin32/bin")
+MARK_AS_ADVANCED(CTK_PATCH_EXECUTABLE)
+
+#-----------------------------------------------------------------------------
 # Testing
 #
 OPTION(BUILD_TESTING "Test the project" ON)

+ 33 - 27
SuperBuild.cmake

@@ -121,29 +121,35 @@ ExternalProject_Add(${proj}
 #-----------------------------------------------------------------------------
 # QtMobility
 #
-#SET(qtmobility_modules "serviceframework")
-#SET(qtmobility_build_type "release")
-#IF(UNIX)
-#  IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
-#    SET(qtmobility_build_type "debug")
-#  ENDIF()
-#ELSEIF(NOT ${CMAKE_CFG_INTDIR} STREQUAL "Release")
-#  SET(qtmobility_build_type "debug")
-#ENDIf()
-#
-#SET(qtmobility_patchcmd )
-#IF(UNIX)
-#  SET(qtmobility_patchcmd patch -p0 < ${CTK_SOURCE_DIR}/Utilities/QtMobility/QtMobilityBeta1-Linux.patch)
-#ENDIF(UNIX)
-#
-#SET(proj QtMobility)
-#ExternalProject_Add(${proj}
-#    URL "http://get.qt.nokia.com/qt/solutions/qt-mobility-src-1.0.0-beta1.tar.gz"
-#    CONFIGURE_COMMAND <SOURCE_DIR>/configure -${qtmobility_build_type} -libdir ${CMAKE_BINARY_DIR}/CTK-build/bin -no-docs -modules ${qtmobility_modules}
-#    PATCH_COMMAND ${qtmobility_patchcmd}
-#    BUILD_IN_SOURCE 1
-#    )
-    
+SET(proj QtMobility)
+
+# Configure patch script
+SET(qtmobility_src_dir ${ep_source_dir}/${proj})
+SET(qtmobility_patch_dir ${CTK_SOURCE_DIR}/Utilities/QtMobility/)
+SET(qtmobility_configured_patch_dir ${CTK_BINARY_DIR}/Utilities/QtMobility/)
+SET(qtmobility_patchscript
+  ${CTK_BINARY_DIR}/Utilities/QtMobility/QtMobilityBeta1-patch.cmake)
+CONFIGURE_FILE(
+  ${CTK_SOURCE_DIR}/Utilities/QtMobility/QtMobilityBeta1-patch.cmake.in
+  ${qtmobility_patchscript} @ONLY)
+
+# Define configure options
+SET(qtmobility_modules "serviceframework")
+SET(qtmobility_build_type "release")
+IF(UNIX)
+ IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
+   SET(qtmobility_build_type "debug")
+ ENDIF()
+ELSEIF(NOT ${CMAKE_CFG_INTDIR} STREQUAL "Release")
+ SET(qtmobility_build_type "debug")
+ENDIf()
+
+ExternalProject_Add(${proj}
+   URL "http://get.qt.nokia.com/qt/solutions/qt-mobility-src-1.0.0-beta1.tar.gz"
+   CONFIGURE_COMMAND <SOURCE_DIR>/configure -${qtmobility_build_type} -libdir ${CMAKE_BINARY_DIR}/CTK-build/bin -no-docs -modules ${qtmobility_modules}
+   PATCH_COMMAND ${CMAKE_COMMAND} -P ${qtmobility_patchscript}
+   BUILD_IN_SOURCE 1
+   )
 
 #-----------------------------------------------------------------------------
 # Utilities/OpenIGTLink
@@ -185,10 +191,10 @@ ExternalProject_Add(${proj}
     ${kwstyle_DEPENDS}
     ${DCMTK_DEPENDS}
     ${PythonQt_DEPENDS}
-    "ZMQ"
-    "OpenIGTLink"
-#     "XIP"
-#    "QtMobility"
+    ZMQ
+    OpenIGTLink
+#     XIP
+    QtMobility
 )
 
 #-----------------------------------------------------------------------------

+ 0 - 13
Utilities/QtMobility/QtMobilityBeta1-Linux.patch

@@ -1,13 +0,0 @@
-*** common.pri	2010-02-12 07:12:31.000000000 +0100
---- common-n.pri	2010-03-10 20:52:32.000000000 +0100
-***************
-*** 104,109 ****
---- 104,111 ----
-      QMAKE_RPATHDIR += $$OUTPUT_DIR/lib
-  }
-  
-+ contains(TEMPLATE,.*lib):DEFINES += QT_SHARED
-+ 
-  maemo6 {
-      DEFINES+= Q_WS_MAEMO_6
-  }

+ 28 - 0
Utilities/QtMobility/QtMobilityBeta1-patch.cmake.in

@@ -0,0 +1,28 @@
+INCLUDE(@CTK_SOURCE_DIR@/CMake/ctkMacroApplyPatches.cmake)
+
+SET(patch_dir @qtmobility_patch_dir@)
+SET(configured_patch_dir @qtmobility_configured_patch_dir@)
+
+# Variable required to properly configured the patch files
+SET(QT_BINARY_DIR @QT_BINARY_DIR@)
+
+SET(patch_files
+)
+
+IF(WIN32)
+  CONFIGURE_FILE(${patch_dir}/QtMobilityBeta1-win32.patch.in
+    ${configured_patch_dir}/QtMobilityBeta1-win32.patch @ONLY)
+  LIST(APPEND patch_files
+    ${configured_patch_dir}/QtMobilityBeta1-win32.patch
+    )
+ENDIF()
+
+IF(UNIX)
+  CONFIGURE_FILE(${patch_dir}/QtMobilityBeta1-unix.patch.in
+    ${configured_patch_dir}/QtMobilityBeta1-unix.patch @ONLY)
+  LIST(APPEND patch_files
+    ${configured_patch_dir}/QtMobilityBeta1-unix.patch)
+ENDIF()
+
+# Apply patches
+ctkMacroApplyPatches(@CTK_PATCH_EXECUTABLE@ @qtmobility_src_dir@ ${patch_files})

+ 28 - 0
Utilities/QtMobility/QtMobilityBeta1-unix.patch.in

@@ -0,0 +1,28 @@
+diff -crB ../qt-mobility-src-1.0.0-beta1/common.pri common.pri
+*** ./qt-mobility-src-1.0.0-beta1/common.pri	2010-02-12 03:54:11.000000000 -0500
+--- common.pri	2010-03-11 16:04:39.000000000 -0500
+***************
+*** 104,109 ****
+--- 104,111 ----
+      QMAKE_RPATHDIR += $$OUTPUT_DIR/lib
+  }
+  
++ contains(TEMPLATE,.*lib):DEFINES += QT_SHARED
++ 
+  maemo6 {
+      DEFINES+= Q_WS_MAEMO_6
+  }
+diff -crB ../qt-mobility-src-1.0.0-beta1/configure configure
+*** ./qt-mobility-src-1.0.0-beta1/configure	2010-02-12 03:54:12.000000000 -0500
+--- configure	2010-03-18 13:19:38.000000000 -0400
+***************
+*** 40,45 ****
+--- 40,47 ----
+  ##
+  #############################################################################
+  
++ PATH=@QT_BINARY_DIR@:$PATH
++ 
+  # the current directory (shadow build dir)
+  shadowpath=`/bin/pwd`
+  # the name of this script

+ 20 - 0
Utilities/QtMobility/QtMobilityBeta1-win32.patch.in

@@ -0,0 +1,20 @@
+diff -crB ../qt-mobility-src-1.0.0-beta1/configure.bat configure.bat
+*** ./qt-mobility-src-1.0.0-beta1/configure.bat	2010-02-12 03:54:12.000000000 -0500
+--- configure.bat	2010-03-18 13:19:42.000000000 -0400
+***************
+*** 59,65 ****
+  set MOBILITY_MODULES=bearer location contacts multimedia publishsubscribe versit messaging systeminfo serviceframework sensors
+  set MOBILITY_MODULES_UNPARSED=
+  set VC_TEMPLATE_OPTION=
+! set QT_PATH=
+  set QMAKE_CACHE=%BUILD_PATH%\.qmake.cache
+  
+  if exist "%QMAKE_CACHE%" del %QMAKE_CACHE%
+--- 59,65 ----
+  set MOBILITY_MODULES=bearer location contacts multimedia publishsubscribe versit messaging systeminfo serviceframework sensors
+  set MOBILITY_MODULES_UNPARSED=
+  set VC_TEMPLATE_OPTION=
+! set QT_PATH=@QT_BINARY_DIR@
+  set QMAKE_CACHE=%BUILD_PATH%\.qmake.cache
+  
+  if exist "%QMAKE_CACHE%" del %QMAKE_CACHE%