QtMobility.cmake 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #
  2. # QtMobility
  3. #
  4. SET(QtMobility_DEPENDS)
  5. ctkMacroShouldAddExternalProject(QtMobility_LIBRARIES add_project)
  6. IF(${add_project})
  7. SET(QtMobility_enabling_variable QtMobility_LIBRARIES)
  8. SET(proj QtMobility)
  9. # MESSAGE(STATUS "Adding project:${proj}")
  10. SET(QtMobility_DEPENDS ${proj})
  11. IF(NOT DEFINED QtMobility_DIR)
  12. # Patch program
  13. FIND_PROGRAM(CTK_PATCH_EXECUTABLE patch
  14. "C:/Program Files/GnuWin32/bin"
  15. "C:/Program Files (x86)/GnuWin32/bin")
  16. MARK_AS_ADVANCED(CTK_PATCH_EXECUTABLE)
  17. IF(NOT CTK_PATCH_EXECUTABLE)
  18. MESSAGE(FATAL_ERROR "error: Patch is required to build ${proj}. Set CTK_PATCH_EXECUTABLE. If running Windows, you can download it here: http://gnuwin32.sourceforge.net/packages/patch.htm")
  19. ENDIF()
  20. # Configure patch script
  21. SET(qtmobility_src_dir ${ep_source_dir}/${proj})
  22. SET(qtmobility_patch_dir ${CTK_SOURCE_DIR}/Utilities/QtMobility/)
  23. SET(qtmobility_configured_patch_dir ${CTK_BINARY_DIR}/Utilities/QtMobility/)
  24. SET(qtmobility_patchscript
  25. ${qtmobility_configured_patch_dir}/QtMobility-1.0.0-patch.cmake)
  26. CONFIGURE_FILE(
  27. ${qtmobility_patch_dir}/QtMobility-1.0.0-patch.cmake.in
  28. ${qtmobility_patchscript} @ONLY)
  29. # Define configure options
  30. SET(qtmobility_modules "serviceframework")
  31. SET(qtmobility_build_type "release")
  32. IF(UNIX OR MINGW)
  33. IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
  34. SET(qtmobility_build_type "debug")
  35. ENDIF()
  36. ELSEIF(NOT ${CMAKE_CFG_INTDIR} STREQUAL "Release")
  37. SET(qtmobility_build_type "debug")
  38. ENDIf()
  39. SET(qtmobility_make_cmd)
  40. SET(qtmobility_install_cmd)
  41. SET(qtmobility_config_in "${qtmobility_patch_dir}/QtMobilityConfig.cmake.in")
  42. SET(qtmobility_config_out "${qtmobility_configured_patch_dir}/QtMobilityConfig.cmake")
  43. IF(UNIX)
  44. SET(qtmobility_make_cmd make)
  45. SET(qtmobility_config_args -${qtmobility_build_type} -libdir ${CTK_CMAKE_LIBRARY_OUTPUT_DIRECTORY} -no-docs -modules ${qtmobility_modules})
  46. SET(qtmobility_install_cmd ${qtmobility_make_cmd} install)
  47. SET(QTMOBILITY_QTSERVICEFW_INCLUDE_DIR
  48. "${CTK_BINARY_DIR}/CMakeExternals/Source/QtMobility/install/include")
  49. SET(QTMOBILITY_QTSERVICEFW_LIBRARY_DEBUG
  50. "${CTK_CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libQtServiceFrameworkd.so")
  51. SET(QTMOBILITY_QTSERVICEFW_LIBRARY_RELEASE
  52. "${CTK_CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libQtServiceFramework.so")
  53. CONFIGURE_FILE("${qtmobility_config_in}" "${qtmobility_config_out}" @ONLY)
  54. ELSEIF(WIN32)
  55. SET(qtmobility_make_cmd nmake)
  56. SET(qtmobility_servicefw_libname_debug QtServiceFrameworkd.lib)
  57. SET(qtmobility_servicefw_libname_release QtServiceFramework.lib)
  58. IF(MINGW AND NOT MSYS)
  59. SET(qtmobility_make_cmd mingw32-make)
  60. SET(qtmobility_servicefw_libname_debug libQtServiceFrameworkd.a)
  61. SET(qtmobility_servicefw_libname_release libQtServiceFramework.a)
  62. ENDIF()
  63. SET(qtmobility_win32_install_prefix "${ep_source_dir}/${proj}/install/")
  64. STRING(REPLACE "/" "\\" qtmobility_win32_native_install_prefix ${qtmobility_win32_install_prefix})
  65. SET(qtmobility_config_args -${qtmobility_build_type} -qt ${QT_BINARY_DIR} -prefix ${qtmobility_win32_native_install_prefix} -no-docs -modules ${qtmobility_modules})
  66. CONFIGURE_FILE(${qtmobility_patch_dir}/QtMobility-1.0.0-install-win32.cmake.in
  67. ${qtmobility_configured_patch_dir}/QtMobility-1.0.0-install-win32.cmake @ONLY)
  68. SET(qtmobility_install_cmd ${CMAKE_COMMAND} -D INTERMEDIATE_DIRECTORY:STRING=$(IntDir) -P ${qtmobility_configured_patch_dir}/QtMobility-1.0.0-install-win32.cmake)
  69. # On Windows, the QtMobilityConfig.cmake file is written in the install script above
  70. ENDIF()
  71. ExternalProject_Add(${proj}
  72. URL ${CTK_SOURCE_DIR}/Utilities/QtMobility/qt-mobility-servicefw-opensource-src-1.0.0.tar.gz
  73. PATCH_COMMAND ${CMAKE_COMMAND} -P ${qtmobility_patchscript}
  74. CONFIGURE_COMMAND <SOURCE_DIR>/configure ${qtmobility_config_args}
  75. BUILD_COMMAND ${qtmobility_make_cmd}
  76. INSTALL_COMMAND ${qtmobility_install_cmd}
  77. BUILD_IN_SOURCE 1
  78. )
  79. SET(QtMobility_DIR ${qtmobility_configured_patch_dir})
  80. ELSE()
  81. ctkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}")
  82. ENDIF()
  83. # Since the full path of QtMobility library is used, there is not need to add
  84. # its corresponding library output directory to CTK_EXTERNAL_LIBRARY_DIRS
  85. LIST(APPEND CTK_SUPERBUILD_EP_ARGS -DQtMobility_DIR:PATH=${QtMobility_DIR})
  86. SET(${QtMobility_enabling_variable}_INCLUDE_DIRS QtMobility_INCLUDE_DIRS)
  87. SET(${QtMobility_enabling_variable}_FIND_PACKAGE_CMD QtMobility)
  88. ENDIF()