QtMobility.cmake 5.2 KB

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