CMakeLists.txt 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. include(${QT_USE_FILE})
  2. include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
  3. QT4_ADD_RESOURCES ( MIRALL_RC_SRC ../mirall.qrc)
  4. set(mirall_UI
  5. mirall/folderwizardsourcepage.ui
  6. mirall/folderwizardtargetpage.ui
  7. mirall/folderwizardnetworkpage.ui
  8. mirall/folderwizardowncloudpage.ui
  9. mirall/statusdialog.ui
  10. mirall/owncloudwizardselecttypepage.ui
  11. mirall/owncloudsetuppage.ui
  12. mirall/createanowncloudpage.ui
  13. mirall/owncloudftpaccesspage.ui
  14. mirall/owncloudwizardresultpage.ui
  15. mirall/owncloudcredentialspage.ui
  16. mirall/sslerrordialog.ui
  17. mirall/proxydialog.ui
  18. )
  19. set(3rdparty_SRC
  20. 3rdparty/qtsingleapplication/qtsingleapplication.cpp
  21. 3rdparty/qtsingleapplication/qtlocalpeer.h
  22. 3rdparty/qtsingleapplication/qtlocalpeer.cpp
  23. 3rdparty/qtsingleapplication/qtsingleapplication.h
  24. 3rdparty/qtsingleapplication/qtsinglecoreapplication.h
  25. 3rdparty/qtsingleapplication/qtsinglecoreapplication.cpp
  26. 3rdparty/qtlockedfile/qtlockedfile.h
  27. 3rdparty/qtlockedfile/qtlockedfile.cpp
  28. )
  29. set(3rdparty_HEADER
  30. 3rdparty/qtsingleapplication/qtlocalpeer.h
  31. 3rdparty/qtsingleapplication/qtsingleapplication.h
  32. 3rdparty/qtsingleapplication/qtsinglecoreapplication.h
  33. )
  34. qt4_wrap_cpp(3rdparty_MOC ${3rdparty_HEADER})
  35. if(NOT WIN32)
  36. list(APPEND 3rdparty_SRC 3rdparty/qtlockedfile/qtlockedfile_unix.cpp)
  37. else()
  38. list(APPEND 3rdparty_SRC 3rdparty/qtlockedfile/qtlockedfile_win.cpp )
  39. endif()
  40. set(3rdparty_INC
  41. ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/qtlockedfile
  42. ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/qtsingleapplication
  43. )
  44. qt4_wrap_ui(mirall_UI_SRCS ${mirall_UI})
  45. set(libsync_SRCS
  46. mirall/folderman.cpp
  47. mirall/folder.cpp
  48. mirall/folderwatcher.cpp
  49. mirall/gitfolder.cpp
  50. mirall/syncresult.cpp
  51. mirall/unisonfolder.cpp
  52. mirall/networklocation.cpp
  53. mirall/mirallconfigfile.cpp
  54. mirall/csyncfolder.cpp
  55. mirall/owncloudfolder.cpp
  56. mirall/csyncthread.cpp
  57. mirall/fileutils.cpp
  58. mirall/theme.cpp
  59. mirall/owncloudtheme.cpp
  60. mirall/miralltheme.cpp
  61. mirall/owncloudinfo.cpp
  62. )
  63. set(libsync_HEADERS
  64. mirall/folderman.h
  65. mirall/folder.h
  66. mirall/folderwatcher.h
  67. mirall/gitfolder.h
  68. mirall/unisonfolder.h
  69. mirall/csyncfolder.h
  70. mirall/owncloudfolder.h
  71. mirall/csyncthread.h
  72. mirall/owncloudinfo.h
  73. )
  74. IF( INOTIFY_FOUND )
  75. set(libsync_SRCS ${libsync_SRCS} mirall/inotify.cpp)
  76. set(libsync_HEADERS ${libsync_HEADERS} mirall/inotify.h)
  77. ENDIF()
  78. qt4_wrap_cpp(syncMoc ${libsync_HEADERS})
  79. add_library(mirallsync SHARED ${libsync_SRCS} ${syncMoc})
  80. add_library(owncloudsync SHARED ${libsync_SRCS} ${syncMoc})
  81. set_target_properties( owncloudsync PROPERTIES COMPILE_DEFINITIONS OWNCLOUD_CLIENT)
  82. target_link_libraries(mirallsync ${QT_LIBRARIES} ${CSYNC_LIBRARY} )
  83. target_link_libraries(owncloudsync ${QT_LIBRARIES} ${CSYNC_LIBRARY} )
  84. if(NOT BUILD_OWNCLOUD_OSX_BUNDLE)
  85. install(TARGETS mirallsync owncloudsync
  86. RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  87. LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  88. ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
  89. )
  90. else()
  91. install(TARGETS mirallsync owncloudsync DESTINATION ${OWNCLOUD_OSX_BUNDLE}/Contents/MacOS)
  92. endif()
  93. set(mirall_SRCS
  94. mirall/application.cpp
  95. mirall/folderwizard.cpp
  96. mirall/statusdialog.cpp
  97. mirall/owncloudwizard.cpp
  98. mirall/owncloudsetupwizard.cpp
  99. mirall/updatedetector.cpp
  100. mirall/occinfo.cpp
  101. mirall/sslerrordialog.cpp
  102. mirall/logbrowser.cpp
  103. mirall/proxydialog.cpp
  104. )
  105. set(mirall_HEADERS
  106. mirall/application.h
  107. mirall/folderwizard.h
  108. mirall/owncloudsetupwizard.h
  109. mirall/owncloudwizard.h
  110. mirall/statusdialog.h
  111. mirall/updatedetector.h
  112. mirall/sslerrordialog.h
  113. mirall/logbrowser.h
  114. mirall/proxydialog.h
  115. )
  116. if( UNIX AND NOT APPLE)
  117. if(NOT DEFINED USE_INOTIFY)
  118. set(USE_INOTIFY ON)
  119. endif()
  120. endif()
  121. # csync is required.
  122. include_directories(${CSYNC_INCLUDE_DIR}/csync ${CSYNC_INCLUDE_DIR} ${CMAKE_BINARY_DIR})
  123. include_directories(${3rdparty_INC})
  124. qt4_wrap_cpp(mirallMoc ${mirall_HEADERS})
  125. qt4_add_translation(mirall_I18N ${TRANSLATIONS})
  126. set( final_src
  127. ${mirall_HEADERS}
  128. ${MIRALL_RC_SRC}
  129. ${mirall_SRCS}
  130. ${mirall_UI_SRCS}
  131. ${mirallMoc}
  132. ${mirall_HEADERS}
  133. ${mirall_I18N}
  134. ${3rdparty_SRC}
  135. ${3rdparty_MOC}
  136. )
  137. # add executable icon on windows and osx
  138. include( AddAppIconMacro )
  139. set(ownCloud_old ${ownCloud})
  140. kde4_add_app_icon( ownCloud "${CMAKE_CURRENT_SOURCE_DIR}/../resources/owncloud-icon-*.png")
  141. list(APPEND final_src ${ownCloud})
  142. set(ownCloud ${ownCloud_old})
  143. if(NOT BUILD_OWNCLOUD_OSX_BUNDLE)
  144. set(BIN_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
  145. install(FILES ${CMAKE_SOURCE_DIR}/resources/mirall-48.png DESTINATION share/icons/hicolor/48x48/apps/ RENAME mirall.png)
  146. install(FILES ${CMAKE_SOURCE_DIR}/resources/owncloud-icon-48.png DESTINATION share/icons/hicolor/48x48/apps/ RENAME owncloud.png)
  147. install(FILES ${mirall_I18N} DESTINATION share/mirall/i18n)
  148. # we may not add MACOSX_BUNDLE here, if not building one
  149. # add_executable( ${APPLICATION_EXECUTABLE} main.cpp ${final_src})
  150. add_executable( ${APPLICATION_EXECUTABLE} WIN32 main.cpp ${final_src})
  151. set_target_properties( ${APPLICATION_EXECUTABLE} PROPERTIES COMPILE_DEFINITIONS OWNCLOUD_CLIENT)
  152. # mirall is not built for the bundle
  153. add_executable( mirall WIN32 main.cpp ${final_src})
  154. target_link_libraries(mirall ${QT_LIBRARIES} )
  155. target_link_libraries(mirall mirallsync)
  156. target_link_libraries(mirall ${CSYNC_LIBRARY})
  157. set_target_properties( mirall PROPERTIES
  158. RUNTIME_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIRECTORY} )
  159. install(TARGETS mirall
  160. RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  161. LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  162. ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
  163. )
  164. else()
  165. set(BIN_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
  166. include(DeployQt4)
  167. set(CMAKE_INSTALL_PREFIX ".") # Examples use /Applications. hurmpf.
  168. set(MACOSX_BUNDLE_ICON_FILE "ownCloud.icns")
  169. # we must add MACOSX_BUNDLE only if building a bundle
  170. add_executable( ${APPLICATION_EXECUTABLE} WIN32 MACOSX_BUNDLE main.cpp ${final_src})
  171. set_target_properties( ${APPLICATION_EXECUTABLE} PROPERTIES COMPILE_DEFINITIONS OWNCLOUD_CLIENT)
  172. #FIXME: hardcoded path
  173. if ( EXISTS ${CSYNC_BINARY_DIR}/modules/ocsync_owncloud.so )
  174. install(FILES ${CSYNC_BINARY_DIR}/modules/ocsync_owncloud.so DESTINATION ${OWNCLOUD_OSX_BUNDLE}/Contents/Plugins)
  175. else()
  176. install(FILES /usr/local/lib/ocsync-0/ocsync_owncloud.so DESTINATION ${OWNCLOUD_OSX_BUNDLE}/Contents/Plugins)
  177. endif()
  178. install(FILES ${mirall_I18N} DESTINATION ${OWNCLOUD_OSX_BUNDLE}/Contents/translations)
  179. list(APPEND dirs "/usr/local/lib")
  180. endif()
  181. set_target_properties( ${APPLICATION_EXECUTABLE} PROPERTIES
  182. RUNTIME_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIRECTORY}
  183. )
  184. target_link_libraries( ${APPLICATION_EXECUTABLE} ${QT_LIBRARIES} )
  185. target_link_libraries( ${APPLICATION_EXECUTABLE} owncloudsync )
  186. target_link_libraries( ${APPLICATION_EXECUTABLE} ${CSYNC_LIBRARY} )
  187. install(TARGETS ${APPLICATION_EXECUTABLE}
  188. RUNTIME DESTINATION bin
  189. LIBRARY DESTINATION lib
  190. ARCHIVE DESTINATION lib
  191. BUNDLE DESTINATION "."
  192. )
  193. #FIXME: find a nice solution to make the second if(BUILD_OWNCLOUD_OSX_BUNDLE) unneccessary
  194. # currently it needs to be done because the code right above needs to be executed no matter
  195. # if building a bundle or not and the install_qt4_executable needs to be called afterwards
  196. if(BUILD_OWNCLOUD_OSX_BUNDLE)
  197. install_qt4_executable(${OWNCLOUD_OSX_BUNDLE} "" "${OWNCLOUD_OSX_BUNDLE}/Contents/Plugins/ocsync_owncloud.so" ${dirs})
  198. endif()
  199. find_program(KRAZY2_EXECUTABLE krazy2)
  200. if(KRAZY2_EXECUTABLE)
  201. # s/y k/y ALL k/ for building this target always
  202. add_custom_target( krazy krazy2 --check-sets c++,qt4,foss
  203. ${PROJECT_SOURCE_DIR}/src/mirall/*.ui
  204. ${PROJECT_SOURCE_DIR}/src/mirall/*.h
  205. ${PROJECT_SOURCE_DIR}/src/mirall/*.cpp
  206. )
  207. endif()