blob: a07a90d0b1921d3af58d289c3cec7d2efece376e [file] [log] [blame]
Alexandre Lision10e86dd2015-01-19 16:11:14 -05001CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
2
3IF(POLICY CMP0022)
4 CMAKE_POLICY(SET CMP0022 NEW)
5ENDIF(POLICY CMP0022)
6
Alexandre Lisionb47b4c82015-01-20 11:29:03 -05007SET(PROJ_NAME Ring)
Guillaume Roguez9f319b72015-04-15 15:18:57 -04008SET(RING_VERSION "0.3.0")
Alexandre Lisionbb306132015-03-27 11:30:02 -04009SET(RING_VERSION_NAME "Samuel de Champlain")
Guillaume Rogueza10f7652015-04-14 15:23:23 -040010SET(BUNDLE_VERSION "Samuel de Champlain - beta")
Alexandre Lisionbb306132015-03-27 11:30:02 -040011
12SET(PROJ_COPYRIGHT " © 2015 Savoir-faire Linux \n GPLv3 https://www.gnu.org/copyleft/gpl.html")
Alexandre Lisionb47b4c82015-01-20 11:29:03 -050013
Alexandre Lision5855b6a2015-02-03 11:31:05 -050014ADD_DEFINITIONS("-std=c++11")
15
Alexandre Lisionb47b4c82015-01-20 11:29:03 -050016PROJECT(${PROJ_NAME})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050017
Alexandre Lision10e86dd2015-01-19 16:11:14 -050018FIND_PACKAGE(Qt5Core REQUIRED)
Alexandre Lision3b0bd332015-03-15 18:43:07 -040019FIND_PACKAGE(Qt5MacExtras REQUIRED)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050020FIND_PACKAGE(Qt5Widgets REQUIRED)
21FIND_PACKAGE(LibRingClient REQUIRED)
22
Alexandre Lision10e86dd2015-01-19 16:11:14 -050023INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS})
Alexandre Lision3b0bd332015-03-15 18:43:07 -040024INCLUDE_DIRECTORIES(SYSTEM ${Qt5MacExtras_INCLUDE_DIRS})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050025INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
26INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR})
27INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})
28
29MESSAGE("LibRingClient is here:" ${LIB_RING_CLIENT_INCLUDE_DIR})
30SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
31
32#Files to compile
Alexandre Lision4ba18022015-04-23 12:17:40 -040033SET(ringclient_CONTROLLERS
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040034 src/QNSTreeController.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040035 src/QNSTreeController.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040036 src/CurrentCallVC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040037 src/CurrentCallVC.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040038 src/GeneralPrefsVC.mm
39 src/RingWizardWC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040040 src/RingWizardWC.h
41 src/RingWindowController.mm
42 src/RingWindowController.h
43 src/ConversationsVC.mm
44 src/ConversationsVC.h
45 src/PreferencesVC.mm
46 src/PreferencesVC.h
47 src/AccGeneralVC.mm
48 src/AccGeneralVC.h
49 src/AccVideoVC.mm
50 src/AccVideoVC.h
51 src/AccAudioVC.mm
52 src/AccAudioVC.h
53 src/AccRingVC.mm
54 src/AccRingVC.h
55 src/AccAdvancedVC.mm
56 src/AccAdvancedVC.h
57 src/AccSecurityVC.mm
58 src/AccSecurityVC.h
59 src/AudioPrefsVC.mm
60 src/AudioPrefsVC.h
61 src/AccountsVC.mm
62 src/AccountsVC.h
63 src/VideoPrefsVC.mm
64 src/VideoPrefsVC.h
65 src/GeneralPrefsVC.h
66 src/HistoryVC.mm
67 src/HistoryVC.h
Alexandre Lision3b0bd332015-03-15 18:43:07 -040068 src/PersonsVC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040069 src/PersonsVC.h)
Alexandre Lision74dd47f2015-04-14 13:47:42 -040070
Alexandre Lision4ba18022015-04-23 12:17:40 -040071SET(ringclient_BACKENDS
Alexandre Lision3b0bd332015-03-15 18:43:07 -040072 src/backends/AddressBookBackend.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040073 src/backends/MinimalHistoryBackend.mm
74 src/backends/AddressBookBackend.h
75 src/backends/MinimalHistoryBackend.h)
76
77SET(ringclient_VIEWS
78 src/views/CallView.mm
79 src/views/CallView.h
80 src/views/PersonCell.mm
81 src/views/PersonCell.h)
82
83SET(ringclient_OTHERS
84 src/main.mm
85 src/AppDelegate.mm
86 src/AppDelegate.h
87 src/delegates/ImageManipulationDelegate.mm
88 src/delegates/ImageManipulationDelegate.h)
89
Alexandre Lision10e86dd2015-01-19 16:11:14 -050090
Alexandre Lisionf241c6a2015-03-24 14:53:47 -040091SET(ringclient_XIBS
92 MainMenu
93 RingWindow
94 CurrentCall
95 GeneralPrefs
96 Accounts
97 AccGeneral
98 AccAudio
99 AccVideo
100 AccRing
101 AccAdvanced
102 AccSecurity
103 AudioPrefs
104 VideoPrefs
105 PreferencesScreen
106 RingWizard)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500107
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500108# Icons
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400109# This part tells CMake where to find and install the file itself
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500110SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns)
111SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
112 MACOSX_PACKAGE_LOCATION "Resources")
113
Alexandre Lision392ee722015-01-23 16:27:10 -0500114SET(ring_ICONS ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
115${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
116${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png
117${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_email.png
118${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_new_email.png
119${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500120${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ancrage.png
121${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
122${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png
123${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500124${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400125
Alexandre Lision392ee722015-01-23 16:27:10 -0500126SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500127 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lisionbb306132015-03-27 11:30:02 -0400128SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
129 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision392ee722015-01-23 16:27:10 -0500130
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400131# append '.xib' extension before linking xib files in executable
132FOREACH(xib ${ringclient_XIBS})
Alexandre Lision7d2a48b2015-03-30 14:59:58 -0400133 SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/${xib}.xib)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400134ENDFOREACH()
135
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500136ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE
Alexandre Lision4ba18022015-04-23 12:17:40 -0400137 ${ringclient_CONTROLLERS}
138 ${ringclient_BACKENDS}
139 ${ringclient_VIEWS}
140 ${ringclient_OTHERS}
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400141 ${ringclient_XIBS_FOR_EXECUTABLE}
Alexandre Lision392ee722015-01-23 16:27:10 -0500142 ${myApp_ICON}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400143 Credits.rtf
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500144 ${ring_ICONS})
145
Alexandre Lision4ba18022015-04-23 12:17:40 -0400146# Follow Xcode hierarchy principles
147SOURCE_GROUP("Controllers" FILES ${ringclient_CONTROLLERS})
148SOURCE_GROUP("Backends" FILES ${ringclient_BACKENDS})
149SOURCE_GROUP("CustomViews" FILES ${ringclient_VIEWS})
150SOURCE_GROUP("Classes" FILES ${ringclient_OTHERS})
151SOURCE_GROUP("Resources\\Interface Builder" FILES ${ringclient_XIBS_FOR_EXECUTABLE})
152
153
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500154TARGET_LINK_LIBRARIES( ${PROJ_NAME}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500155 ${LIB_RING_CLIENT_LIBRARY}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500156 ${Qt5Core_LIBRARIES}
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400157 ${Qt5MacExtras_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500158 ${Qt5Widgets_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500159)
160
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400161SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
162SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
163SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz")
164SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation")
165SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook")
166
167# These variables are specific to our plist and are NOT standard CMake variables
168set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu")
169set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
Alexandre Lision392ee722015-01-23 16:27:10 -0500170
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500171SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
172 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
173 MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring"
Alexandre Lisionbb306132015-03-27 11:30:02 -0400174 MACOSX_BUNDLE_SHORT_VERSION_STRING ${RING_VERSION_NAME}
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500175 MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION} Nightly"
176 MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400177 MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500178 MACOSX_BUNDLE_INFO_STRING "Nightly build of ${PROJ_NAME} ${RING_VERSION} for testing and development"
179 MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
180 MACOSX_BUNDLE_ICON_FILE "appicon.icns"
181 )
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400182
183# Make sure we can find the 'ibtool' program. If we can NOT find it we
184# skip generation of this project
185FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
186IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
187 MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
188 the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
189endif()
190
191# Make sure the 'Resources' Directory is correctly created before we build
192ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} PRE_BUILD
193 COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources)
194
195# Compile the .xib files using the 'ibtool' program with the destination being the app package
196FOREACH(xib ${ringclient_XIBS})
197 ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
198 COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
199 --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/${xib}.nib
Alexandre Lision7d2a48b2015-03-30 14:59:58 -0400200 ${CMAKE_CURRENT_SOURCE_DIR}/ui/${xib}.xib
201 COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/${xib}.xib")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400202
203ENDFOREACH()
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400204
205set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX})
206
207SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJ_NAME}.app")
208
209#--------------------------------------------------------------------------------
210# Install the QtTest application, on Apple, the bundle is at the root of the
211# install tree
212INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime)
213
214SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins/platforms)
215#--------------------------------------------------------------------------------
216# Install needed Qt plugins by copying directories from the qt installation
217LIST(APPEND QT_PLUGINS Qt5::QTgaPlugin Qt5::QTiffPlugin Qt5::QCocoaIntegrationPlugin)
218FOREACH(plugin ${QT_PLUGINS})
219 GET_TARGET_PROPERTY(_loc ${plugin} LOCATION)
220 INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR} COMPONENT Runtime)
221ENDFOREACH()
222
223# directories to look for dependencies
224SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib ${QT_LIB_DIR})
225
226INSTALL(CODE "
227 file(GLOB_RECURSE QTPLUGINS
228 \"\${CMAKE_INSTALL_PREFIX}/${QT_PLUGINS_DESTDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
229 include(BundleUtilities)
230 SET(BU_CHMOD_BUNDLE_ITEMS TRUE)
231 fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
232 " COMPONENT Runtime)
233
234#================================
235# Packaging
236#================================
237SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME})
238SET( CPACK_PACKAGE_NAME ${PROJ_NAME} )
239SET( CPACK_PACKAGE_CONTACT "Alexandre Lision")
240SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux")
241SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION})
242SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION})
243SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION})
244SET(CPACK_BINARY_DRAGNDROP ON)
245SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
246INCLUDE(CPack)