CMakeLists.txt 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. project(gui)
  2. set(CMAKE_AUTOMOC TRUE)
  3. add_subdirectory(updater)
  4. #TODO Move resources files
  5. qt_add_resources(MIRALL_RC_SRC ../../mirall.qrc)
  6. if ( IS_DIRECTORY ${OEM_THEME_DIR} )
  7. qt_add_resources(MIRALL_RC_SRC ${OEM_THEME_DIR}/theme.qrc)
  8. set(theme_dir ${OEM_THEME_DIR}/theme)
  9. else()
  10. qt_add_resources(MIRALL_RC_SRC ../../theme.qrc)
  11. set(theme_dir ${CMAKE_SOURCE_DIR}/theme)
  12. endif()
  13. set(mirall_UI
  14. accountsettings.ui
  15. folderwizardsourcepage.ui
  16. folderwizardtargetpage.ui
  17. generalsettings.ui
  18. ignorelisteditor.ui
  19. networksettings.ui
  20. protocolwidget.ui
  21. settingsdialog.ui
  22. sslerrordialog.ui
  23. wizard/owncloudadvancedsetuppage.ui
  24. wizard/owncloudhttpcredspage.ui
  25. wizard/owncloudsetupnocredspage.ui
  26. wizard/owncloudwizardresultpage.ui
  27. )
  28. qt_wrap_ui(mirall_UI_SRCS ${mirall_UI})
  29. set(mirall_SRCS
  30. accountsettings.cpp
  31. application.cpp
  32. folder.cpp
  33. folderman.cpp
  34. folderstatusmodel.cpp
  35. folderwatcher.cpp
  36. folderwizard.cpp
  37. generalsettings.cpp
  38. ignorelisteditor.cpp
  39. logbrowser.cpp
  40. networksettings.cpp
  41. openfilemanager.cpp
  42. owncloudgui.cpp
  43. owncloudsetupwizard.cpp
  44. protocolwidget.cpp
  45. selectivesyncdialog.cpp
  46. settingsdialog.cpp
  47. socketapi.cpp
  48. sslbutton.cpp
  49. sslerrordialog.cpp
  50. syncrunfilelog.cpp
  51. systray.cpp
  52. accountmigrator.cpp
  53. wizard/abstractcredswizardpage.cpp
  54. wizard/owncloudadvancedsetuppage.cpp
  55. wizard/owncloudhttpcredspage.cpp
  56. wizard/owncloudsetuppage.cpp
  57. wizard/owncloudshibbolethcredspage.cpp
  58. wizard/owncloudwizardcommon.cpp
  59. wizard/owncloudwizard.cpp
  60. wizard/owncloudwizardresultpage.cpp
  61. )
  62. set(updater_SRCS
  63. updater/ocupdater.cpp
  64. updater/updateinfo.cpp
  65. updater/updater.cpp
  66. )
  67. IF( APPLE )
  68. list(APPEND mirall_SRCS cocoainitializer_mac.mm)
  69. list(APPEND mirall_SRCS settingsdialogmac.cpp)
  70. if(SPARKLE_FOUND)
  71. # Define this, we need to check in updater.cpp
  72. add_definitions( -DHAVE_SPARKLE )
  73. list(APPEND updater_SRCS updater/sparkleupdater_mac.mm)
  74. endif()
  75. ENDIF()
  76. IF( NOT WIN32 AND NOT APPLE )
  77. set(mirall_SRCS ${mirall_SRCS} folderwatcher_linux.cpp)
  78. ENDIF()
  79. IF( WIN32 )
  80. set(mirall_SRCS ${mirall_SRCS} folderwatcher_win.cpp)
  81. ENDIF()
  82. IF( APPLE )
  83. list(APPEND mirall_SRCS folderwatcher_mac.cpp)
  84. ENDIF()
  85. set(3rdparty_SRC
  86. ../3rdparty/fancylineedit/fancylineedit.cpp
  87. ../3rdparty/QProgressIndicator/QProgressIndicator.cpp
  88. ../3rdparty/qtlockedfile/qtlockedfile.cpp
  89. ../3rdparty/qtsingleapplication/qtlocalpeer.cpp
  90. ../3rdparty/qtsingleapplication/qtsingleapplication.cpp
  91. ../3rdparty/qtsingleapplication/qtsinglecoreapplication.cpp
  92. )
  93. if (APPLE)
  94. list(APPEND 3rdparty_SRC
  95. ../3rdparty/qtmacgoodies/src/macpreferenceswindow.mm
  96. ../3rdparty/qtmacgoodies/src/macstandardicon.mm
  97. ../3rdparty/qtmacgoodies/src/macwindow.mm
  98. )
  99. endif()
  100. if(NOT WIN32)
  101. list(APPEND 3rdparty_SRC ../3rdparty/qtlockedfile/qtlockedfile_unix.cpp)
  102. else()
  103. list(APPEND 3rdparty_SRC ../3rdparty/qtlockedfile/qtlockedfile_win.cpp )
  104. endif()
  105. set(3rdparty_INC
  106. ${CMAKE_SOURCE_DIR}/src/3rdparty/fancylineedit
  107. ${CMAKE_SOURCE_DIR}/src/3rdparty/qjson
  108. ${CMAKE_SOURCE_DIR}/src/3rdparty/QProgressIndicator
  109. ${CMAKE_SOURCE_DIR}/src/3rdparty/qtlockedfile
  110. ${CMAKE_SOURCE_DIR}/src/3rdparty/qtmacgoodies/src
  111. ${CMAKE_SOURCE_DIR}/src/3rdparty/qtsingleapplication
  112. )
  113. include_directories(${3rdparty_INC})
  114. # csync is required.
  115. include_directories(${CMAKE_SOURCE_DIR}/csync/src
  116. ${CMAKE_SOURCE_DIR}/csync/src/httpbf/src
  117. ${CMAKE_BINARY_DIR}/csync
  118. ${CMAKE_BINARY_DIR}/csync/src
  119. )
  120. include_directories(${NEON_INCLUDE_DIRS})
  121. include_directories(../libsync ${CMAKE_CURRENT_BINARY_DIR}/../libsync)
  122. include_directories(${CMAKE_CURRENT_SOURCE_DIR}
  123. ${CMAKE_CURRENT_BINARY_DIR}
  124. )
  125. qt_add_translation(mirall_I18N ${TRANSLATIONS})
  126. set( final_src
  127. ${MIRALL_RC_SRC}
  128. ${mirall_SRCS}
  129. ${mirall_UI_SRCS}
  130. ${mirallMoc}
  131. ${mirall_I18N}
  132. ${3rdparty_SRC}
  133. ${3rdparty_MOC}
  134. )
  135. # add executable icon on windows and osx
  136. include( AddAppIconMacro )
  137. set(ownCloud_old ${ownCloud})
  138. # set an icon_app_name. For historical reasons we can not use the
  139. # application_shortname for ownCloud but must rather set it manually.
  140. if ( EXISTS ${OEM_THEME_DIR}/OEM.cmake )
  141. set(ICON_APP_NAME ${APPLICATION_SHORTNAME})
  142. else()
  143. set(ICON_APP_NAME "owncloud")
  144. endif()
  145. kde4_add_app_icon( ownCloud "${theme_dir}/colored/${ICON_APP_NAME}-icon*.png")
  146. list(APPEND final_src ${ownCloud})
  147. set(ownCloud ${ownCloud_old})
  148. if (WITH_DBUS)
  149. set(ADDITIONAL_APP_MODULES DBus)
  150. endif(WITH_DBUS)
  151. if(NOT BUILD_OWNCLOUD_OSX_BUNDLE)
  152. if(NOT WIN32)
  153. file( GLOB _icons "${theme_dir}/colored/${ICON_APP_NAME}-icon-*.png" )
  154. foreach( _file ${_icons} )
  155. string( REPLACE "${theme_dir}/colored/${ICON_APP_NAME}-icon-" "" _res ${_file} )
  156. string( REPLACE ".png" "" _res ${_res} )
  157. install( FILES ${_file} RENAME ${ICON_APP_NAME}.png DESTINATION ${DATADIR}/icons/hicolor/${_res}x${_res}/apps )
  158. endforeach( _file )
  159. endif(NOT WIN32)
  160. install(FILES ${mirall_I18N} DESTINATION share/${APPLICATION_EXECUTABLE}/i18n)
  161. # we may not add MACOSX_BUNDLE here, if not building one
  162. # add_executable( ${APPLICATION_EXECUTABLE} main.cpp ${final_src})
  163. add_executable( ${APPLICATION_EXECUTABLE} WIN32 main.cpp ${final_src})
  164. qt5_use_modules(${APPLICATION_EXECUTABLE} Widgets Network Xml WebKitWidgets Sql ${ADDITIONAL_APP_MODULES})
  165. else()
  166. if (Qt5Core_FOUND)
  167. include(DeployQt5)
  168. else(Qt5Core_FOUND)
  169. include(DeployQt4)
  170. endif(Qt5Core_FOUND)
  171. set(CMAKE_INSTALL_PREFIX ".") # Examples use /Applications. hurmpf.
  172. set(MACOSX_BUNDLE_ICON_FILE "ownCloud.icns")
  173. # we must add MACOSX_BUNDLE only if building a bundle
  174. add_executable( ${APPLICATION_EXECUTABLE} WIN32 MACOSX_BUNDLE main.cpp ${final_src})
  175. qt5_use_modules(${APPLICATION_EXECUTABLE} Widgets Network Xml WebKitWidgets Sql ${ADDITIONAL_APP_MODULES})
  176. set (QM_DIR ${OWNCLOUD_OSX_BUNDLE}/Contents/Resources/Translations)
  177. install(FILES ${mirall_I18N} DESTINATION ${QM_DIR})
  178. file(GLOB qt_I18N ${QT_TRANSLATIONS_DIR}/qt_??.qm ${QT_TRANSLATIONS_DIR}/qt_??_??.qm)
  179. install(FILES ${qt_I18N} DESTINATION ${QM_DIR})
  180. file(GLOB qtkeychain_I18N ${QT_TRANSLATIONS_DIR}/qtkeychain*.qm)
  181. install(FILES ${qtkeychain_I18N} DESTINATION ${QM_DIR})
  182. endif()
  183. add_library(updater STATIC ${updater_SRCS} ${updaterMoc})
  184. target_link_libraries(updater ${synclib_NAME})
  185. qt5_use_modules(updater Widgets Network Xml)
  186. set_target_properties( ${APPLICATION_EXECUTABLE} PROPERTIES
  187. RUNTIME_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIRECTORY}
  188. )
  189. set_target_properties( ${APPLICATION_EXECUTABLE} PROPERTIES
  190. INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/${APPLICATION_EXECUTABLE}" )
  191. target_link_libraries( ${APPLICATION_EXECUTABLE} ${QT_LIBRARIES} )
  192. target_link_libraries( ${APPLICATION_EXECUTABLE} ${synclib_NAME} )
  193. target_link_libraries( ${APPLICATION_EXECUTABLE} updater )
  194. target_link_libraries( ${APPLICATION_EXECUTABLE} ${OS_SPECIFIC_LINK_LIBRARIES} )
  195. install(TARGETS ${APPLICATION_EXECUTABLE}
  196. RUNTIME DESTINATION bin
  197. LIBRARY DESTINATION lib
  198. ARCHIVE DESTINATION lib
  199. BUNDLE DESTINATION bin
  200. )
  201. #FIXME: find a nice solution to make the second if(BUILD_OWNCLOUD_OSX_BUNDLE) unnecessary
  202. # currently it needs to be done because the code right above needs to be executed no matter
  203. # if building a bundle or not and the install_qt4_executable needs to be called afterwards
  204. if(BUILD_OWNCLOUD_OSX_BUNDLE)
  205. if(Qt5Core_FOUND)
  206. install_qt5_executable(${OWNCLOUD_OSX_BUNDLE} "qtaccessiblewidgets;qsqlite;qcocoa")
  207. else(Qt5Core_FOUND)
  208. install_qt4_executable(${OWNCLOUD_OSX_BUNDLE} "qtaccessiblewidgets;qsqlite")
  209. endif(Qt5Core_FOUND)
  210. endif()
  211. if(NOT BUILD_OWNCLOUD_OSX_BUNDLE AND NOT WIN32)
  212. configure_file(${CMAKE_SOURCE_DIR}/mirall.desktop.in
  213. ${CMAKE_CURRENT_BINARY_DIR}/${APPLICATION_EXECUTABLE}.desktop)
  214. install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${APPLICATION_EXECUTABLE}.desktop DESTINATION share/applications )
  215. endif()