blob: 160d1da3c0688bd8ce106657909644c2cb70193f [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)
Alexandre Lision3d4143a2015-06-10 14:27:49 -04008
9# To build nighlies we need to update RING_VERSION with an optional command line arg
10IF("${RING_VERSION}" STREQUAL "")
Guillaume Roguez812d5502016-03-16 22:46:29 -040011 SET(RING_VERSION "1.0.0")
Alexandre Lision3d4143a2015-06-10 14:27:49 -040012ENDIF("${RING_VERSION}" STREQUAL "")
13
Alexandre Lision38622152016-03-15 10:55:59 +070014SET(RING_VERSION_NAME "Louis-Joseph Papineau")
Alexandre Lisionbb306132015-03-27 11:30:02 -040015
Alexandre Lision6517be82016-02-11 10:32:20 -050016MESSAGE("Building Ring version - " ${RING_VERSION_NAME})
Alexandre Lision9fe374b2016-01-06 10:17:31 -050017SET(PROJ_COPYRIGHT " © 2015-2016 Savoir-faire Linux \n GPLv3 https://www.gnu.org/copyleft/gpl.html")
Alexandre Lisionb47b4c82015-01-20 11:29:03 -050018
Alexandre Lision6517be82016-02-11 10:32:20 -050019ADD_DEFINITIONS("-std=c++11 -stdlib=libc++ -fobjc-arc")
Alexandre Lision5855b6a2015-02-03 11:31:05 -050020
Alexandre Lisionb47b4c82015-01-20 11:29:03 -050021PROJECT(${PROJ_NAME})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050022
Alexandre Lision10e86dd2015-01-19 16:11:14 -050023FIND_PACKAGE(Qt5Core REQUIRED)
Alexandre Lision3b0bd332015-03-15 18:43:07 -040024FIND_PACKAGE(Qt5MacExtras REQUIRED)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050025FIND_PACKAGE(Qt5Widgets REQUIRED)
26FIND_PACKAGE(LibRingClient REQUIRED)
27
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -040028EXECUTE_PROCESS(COMMAND git submodule update --init
29 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
30
31INCLUDE(ExternalProject)
32ExternalProject_Add(libqrencode
33 GIT_SUBMODULES libqrencode
34 SOURCE_DIR ${CMAKE_SOURCE_DIR}/libqrencode
35 BINARY_DIR ${CMAKE_SOURCE_DIR}/libqrencode
36 INSTALL_DIR ${CMAKE_SOURCE_DIR}/libqrencode
37 CONFIGURE_COMMAND
38 #hack to fix incomplete config.h on first run
39 COMMAND ./autogen.sh
40 COMMAND ./autogen.sh && ./configure --prefix=${CMAKE_SOURCE_DIR}/libqrencode
41 BUILD_COMMAND make
42 INSTALL_COMMAND make install)
43
44INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/libqrencode/include)
45LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/libqrencode/lib)
46
Alexandre Lision3d4143a2015-06-10 14:27:49 -040047IF(NOT (${ENABLE_SPARKLE} MATCHES false))
48 MESSAGE("Sparkle auto-update enabled")
49
50 # find_library searches in /Library/Frameworks by default
51 # We add an hint to our custom location
52
53 FIND_LIBRARY(SPARKLE_FRAMEWORK
54 NAMES Sparkle
55 HINTS ${CMAKE_CURRENT_SOURCE_DIR}/sparkle)
56 IF(EXISTS ${SPARKLE_FRAMEWORK})
57 SET(ENABLE_SPARKLE 1 CACHE BOOLEAN "Enable Sparkle")
58 ADD_DEFINITIONS(-DENABLE_SPARKLE=1)
59 MESSAGE("Sparkle is here:" ${SPARKLE_FRAMEWORK})
60 FIND_PATH(SPARKLE_INCLUDE_DIR Sparkle.h HINTS ${SPARKLE_FRAMEWORK}/Headers)
Alexandre Lision3d4143a2015-06-10 14:27:49 -040061 # we need to copy the public key to check the updates
62 SET(PUBLIC_KEY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/sparkle/dsa_pub.pem")
63 IF(EXISTS ${PUBLIC_KEY_PATH})
64 MESSAGE(STATUS "Looking for Public Key - found")
65 SET_SOURCE_FILES_PROPERTIES(${PUBLIC_KEY_PATH} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
66 SET(PUBLIC_KEY ${PUBLIC_KEY_PATH})
67 ELSE(EXISTS ${PUBLIC_KEY_PATH})
68 MESSAGE(WARNING "Looking for Public Key - not found")
69 MESSAGE(WARNING "${PUBLIC_KEY_PATH} not found Sparkle Framework will NOT work and may even prevent application from launching. Please consider disabling Sparkle Framework, creating a keypair for testing purposes")
70 ENDIF(EXISTS ${PUBLIC_KEY_PATH})
71 ELSE()
Alexandre Lisionfba8f792016-03-08 13:45:51 -050072 MESSAGE(WARNING "Sparkle framework not found, disabling it... to build it see README")
73 SET(ENABLE_SPARKLE 0 CACHE BOOLEAN "Enable Sparkle")
Alexandre Lision3d4143a2015-06-10 14:27:49 -040074 ENDIF(EXISTS ${SPARKLE_FRAMEWORK})
75ENDIF(NOT (${ENABLE_SPARKLE} MATCHES false))
76
Alexandre Lision10e86dd2015-01-19 16:11:14 -050077INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS})
Alexandre Lision3b0bd332015-03-15 18:43:07 -040078INCLUDE_DIRECTORIES(SYSTEM ${Qt5MacExtras_INCLUDE_DIRS})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050079INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
80INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR})
81INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})
82
Alexandre Lision04946de2016-03-08 09:31:38 -050083SET(CMAKE_MACOSX_RPATH ON)
84SET(CMAKE_SKIP_BUILD_RPATH FALSE)
85SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
86SET(CMAKE_INSTALL_RPATH "${CMAKE_CURRENT_SOURCE_DIR}")
87SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
88
Alexandre Lision3d4143a2015-06-10 14:27:49 -040089MESSAGE("LRC is here:" ${LIB_RING_CLIENT_INCLUDE_DIR})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050090SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
91
92#Files to compile
Alexandre Lision4ba18022015-04-23 12:17:40 -040093SET(ringclient_CONTROLLERS
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040094 src/QNSTreeController.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040095 src/QNSTreeController.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040096 src/CurrentCallVC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040097 src/CurrentCallVC.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040098 src/GeneralPrefsVC.mm
99 src/RingWizardWC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -0400100 src/RingWizardWC.h
101 src/RingWindowController.mm
102 src/RingWindowController.h
Alexandre Lisionbfa68f62015-09-10 08:38:42 -0400103 src/PreferencesWC.mm
104 src/PreferencesWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400105 src/AccGeneralVC.mm
106 src/AccGeneralVC.h
Alexandre Lisione4d61cb2016-02-10 09:26:24 -0500107 src/AccMediaVC.mm
108 src/AccMediaVC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400109 src/AccRingVC.mm
110 src/AccRingVC.h
111 src/AccAdvancedVC.mm
112 src/AccAdvancedVC.h
113 src/AccSecurityVC.mm
114 src/AccSecurityVC.h
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400115 src/CertificateWC.mm
116 src/CertificateWC.h
Alexandre Lisionc1f96662016-03-23 17:24:19 -0400117 src/PathPasswordWC.mm
118 src/PathPasswordWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400119 src/AudioPrefsVC.mm
120 src/AudioPrefsVC.h
121 src/AccountsVC.mm
122 src/AccountsVC.h
123 src/VideoPrefsVC.mm
124 src/VideoPrefsVC.h
125 src/GeneralPrefsVC.h
126 src/HistoryVC.mm
127 src/HistoryVC.h
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400128 src/PersonsVC.mm
Alexandre Lision58cab672015-06-09 15:25:40 -0400129 src/PersonsVC.h
130 src/ChatVC.mm
Alexandre Lision2db8f472015-07-22 15:05:46 -0400131 src/ChatVC.h
132 src/PersonLinkerVC.mm
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400133 src/PersonLinkerVC.h
134 src/SmartViewVC.mm
Alexandre Lision883719f2015-10-22 17:37:45 -0400135 src/SmartViewVC.h
136 src/BrokerVC.mm
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500137 src/BrokerVC.h
138 src/ConversationVC.mm
139 src/ConversationVC.h)
Alexandre Lision74dd47f2015-04-14 13:47:42 -0400140
Alexandre Lision4ba18022015-04-23 12:17:40 -0400141SET(ringclient_BACKENDS
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400142 src/backends/AddressBookBackend.mm
Alexandre Lision66643432015-06-04 11:59:36 -0400143 src/backends/AddressBookBackend.h)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400144
145SET(ringclient_VIEWS
146 src/views/CallView.mm
147 src/views/CallView.h
Alexandre Lisionf47a2562015-06-15 15:48:29 -0400148 src/views/ITProgressIndicator.mm
149 src/views/ITProgressIndicator.h
Alexandre Lision2db8f472015-07-22 15:05:46 -0400150 src/views/RingOutlineView.mm
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400151 src/views/RingOutlineView.h
152 src/views/RingIDField.mm
Alexandre Lision4e280d62015-09-09 15:56:30 -0400153 src/views/RingIDField.h
154 src/views/HoverTableRowView.mm
155 src/views/HoverTableRowView.h
156 src/views/NSColor+RingTheme.mm
157 src/views/NSColor+RingTheme.h
Alexandre Lision261f1b92016-04-04 12:35:34 -0400158 src/views/NSImage+Extensions.mm
159 src/views/NSImage+Extensions.h
Alexandre Lision4e280d62015-09-09 15:56:30 -0400160 src/views/ContextualTableCellView.mm
Alexandre Lision6da08a82015-09-24 17:09:24 -0400161 src/views/ContextualTableCellView.h
162 src/views/IconButton.h
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500163 src/views/IconButton.mm
164 src/views/IMTableCellView.h
165 src/views/IMTableCellView.mm)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400166
167SET(ringclient_OTHERS
168 src/main.mm
169 src/AppDelegate.mm
170 src/AppDelegate.h
Alexandre Lision9fe374b2016-01-06 10:17:31 -0500171 src/Constants.h
Alexandre Lision83180df2016-01-18 11:32:20 -0500172 src/INDSequentialTextSelectionManager.mm
173 src/INDSequentialTextSelectionManager.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400174 src/delegates/ImageManipulationDelegate.mm
175 src/delegates/ImageManipulationDelegate.h)
176
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500177
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400178SET(ringclient_XIBS
179 MainMenu
180 RingWindow
181 CurrentCall
182 GeneralPrefs
183 Accounts
184 AccGeneral
Alexandre Lisione4d61cb2016-02-10 09:26:24 -0500185 AccMedia
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400186 AccRing
187 AccAdvanced
188 AccSecurity
189 AudioPrefs
190 VideoPrefs
Alexandre Lisionbfa68f62015-09-10 08:38:42 -0400191 PreferencesWindow
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400192 RingWizard
Alexandre Lision2db8f472015-07-22 15:05:46 -0400193 CertificateWindow
Alexandre Lisionc1f96662016-03-23 17:24:19 -0400194 PathPasswordWindow
Alexandre Lision883719f2015-10-22 17:37:45 -0400195 PersonLinker
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500196 Broker
197 Conversation)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500198
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500199# Icons
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400200# This part tells CMake where to find and install the file itself
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500201SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns)
202SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500203 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500204
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400205SET(ring_ICONS
206${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_name.png
Alexandre Lision34607032016-02-08 16:16:49 -0500207${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_blue.png
Alexandre Lision6da08a82015-09-24 17:09:24 -0400208${CMAKE_CURRENT_SOURCE_DIR}/data/background_tile.png
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400209${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500210${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_arrow_back.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500211${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
212${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png
Alexandre Lisiond18fa272015-06-15 11:18:03 -0400213${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hangup.png
214${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hold.png
215${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_holdoff.png
216${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_video.png
217${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_audio.png
218${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_chat.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500219${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
Alexandre Lisionf23ec5a2015-07-16 11:24:06 -0400220${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_quality.png
Alexandre Lision266fca02015-09-28 14:47:05 -0400221${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_record.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400222${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_received.png
223${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_missed.png
224${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_made.png
Alexandre Lision883719f2015-10-22 17:37:45 -0400225${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_transfer.png
Alexandre Lision89edc6a2015-11-09 11:30:47 -0500226${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_add_participant.png
227${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_merge_calls.png
Alexandre Lisiond5229f32015-11-16 11:17:41 -0500228${CMAKE_CURRENT_SOURCE_DIR}/data/default_user_icon.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500229${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ancrage.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500230${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_send.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500231${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
Alexandre Lision2db8f472015-07-22 15:05:46 -0400232${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_person_add.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400233${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_persons.png
234${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_history.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500235${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png
236${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png
Alexandre Lisionf46768f2016-04-18 09:56:26 -0400237${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_delete.png
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400238${CMAKE_CURRENT_SOURCE_DIR}/data/dark/qrcode.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500239${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400240
Alexandre Lision392ee722015-01-23 16:27:10 -0500241SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500242 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lisionbb306132015-03-27 11:30:02 -0400243SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
244 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision392ee722015-01-23 16:27:10 -0500245
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500246# package all ringtones in share/ring/ringtones/
247FILE(GLOB RINGTONE_LIST ${CMAKE_INSTALL_PREFIX}/share/ring/ringtones/*)
248
249FOREACH(RINGTONE ${RINGTONE_LIST})
250 GET_FILENAME_COMPONENT(FILE_PATH ${RINGTONE} ABSOLUTE)
251 SET(ring_RINGTONES ${ring_RINGTONES} ${FILE_PATH})
252ENDFOREACH()
253
254SET_SOURCE_FILES_PROPERTIES(${ring_RINGTONES}
255 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/ringtones)
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400256
257# Check which translations are found for LRC
258SET(LRC_TRANSLATIONS_PATH ${CMAKE_INSTALL_PREFIX}/share/libringclient/translations)
259FILE(GLOB QM_LIST ${LRC_TRANSLATIONS_PATH}/*.qm)
260
261FOREACH(QM_FILE ${QM_LIST})
262 # Extract country code from filename
263 GET_FILENAME_COMPONENT(FILENAME ${QM_FILE} NAME_WE)
264 STRING(REGEX REPLACE "^lrc_" "" LANG ${FILENAME})
265
266 SET_SOURCE_FILES_PROPERTIES(${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm
267 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/QtTranslations)
268 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
269 "${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm")
Alexandre Lision922380d2015-09-15 10:25:17 -0400270ENDFOREACH()
271
272# Check which translations are found for the client
273FILE(GLOB LPROJ_LIST ui/*.lproj)
274
275FOREACH(LPROJ ${LPROJ_LIST})
276 # Extract country code from <lang>.lproj folder name
277 GET_FILENAME_COMPONENT(LANG ${LPROJ} NAME_WE)
278 IF(EXISTS "${LPROJ}/Localizable.strings")
279 MESSAGE("Localizable:" ${LANG})
280 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/Localizable.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500281 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400282
283 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
284 ${LPROJ}/Localizable.strings)
285 ENDIF()
286 FOREACH(xib ${ringclient_XIBS})
287 IF(EXISTS "${LPROJ}/${xib}.strings")
288 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/${xib}.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500289 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400290
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500291 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
Alexandre Lision922380d2015-09-15 10:25:17 -0400292 ${LPROJ}/${xib}.strings)
293 ENDIF()
294 ENDFOREACH()
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400295
296 # Regroup those files under a .lproj folder
297 SOURCE_GROUP("Resources\\${LANG}.lproj" FILES
298 ${LOCALIZED_${LANG}})
299 # Add them to the list of files to package
300 SET(LOCALIZABLE_FILES ${LOCALIZABLE_FILES} ${LOCALIZED_${LANG}})
301ENDFOREACH()
302
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400303# append '.xib' extension before linking xib files in executable
304FOREACH(xib ${ringclient_XIBS})
Alexandre Lision922380d2015-09-15 10:25:17 -0400305 SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/Base.lproj/${xib}.xib)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400306ENDFOREACH()
307
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400308SET(TO_ADD
Alexandre Lision4ba18022015-04-23 12:17:40 -0400309 ${ringclient_CONTROLLERS}
310 ${ringclient_BACKENDS}
311 ${ringclient_VIEWS}
312 ${ringclient_OTHERS}
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400313 ${ringclient_XIBS_FOR_EXECUTABLE}
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400314 ${LOCALIZABLE_FILES}
Alexandre Lision392ee722015-01-23 16:27:10 -0500315 ${myApp_ICON}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400316 Credits.rtf
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500317 ${ring_ICONS}
318 ${ring_RINGTONES})
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500319
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400320IF(ENABLE_SPARKLE)
321 SET( TO_ADD ${TO_ADD} ${PUBLIC_KEY} ${SPARKLE_FRAMEWORK})
322ENDIF(ENABLE_SPARKLE)
323
324ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE ${TO_ADD})
325
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400326ADD_DEPENDENCIES(${PROJ_NAME} libqrencode)
327
Alexandre Lision4ba18022015-04-23 12:17:40 -0400328# Follow Xcode hierarchy principles
329SOURCE_GROUP("Controllers" FILES ${ringclient_CONTROLLERS})
330SOURCE_GROUP("Backends" FILES ${ringclient_BACKENDS})
331SOURCE_GROUP("CustomViews" FILES ${ringclient_VIEWS})
332SOURCE_GROUP("Classes" FILES ${ringclient_OTHERS})
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400333SOURCE_GROUP("Resources\\Interface Builder" FILES
334 ${ringclient_XIBS_FOR_EXECUTABLE})
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500335SOURCE_GROUP("Resources\\ringtones" FILES ${ring_RINGTONES})
Alexandre Lision4ba18022015-04-23 12:17:40 -0400336
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400337IF(ENABLE_SPARKLE)
338 SOURCE_GROUP("Frameworks" FILES ${SPARKLE_FRAMEWORK})
339ENDIF(ENABLE_SPARKLE)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400340
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500341TARGET_LINK_LIBRARIES( ${PROJ_NAME}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500342 ${LIB_RING_CLIENT_LIBRARY}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500343 ${Qt5Core_LIBRARIES}
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400344 ${Qt5MacExtras_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500345 ${Qt5Widgets_LIBRARIES}
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400346 -lqrencode
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500347)
348
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400349IF(ENABLE_SPARKLE)
350 TARGET_LINK_LIBRARIES(${PROJ_NAME} ${SPARKLE_FRAMEWORK})
351ENDIF(ENABLE_SPARKLE)
352
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400353SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
354SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
355SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz")
356SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation")
357SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook")
358
359# These variables are specific to our plist and are NOT standard CMake variables
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400360SET(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu")
361SET(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
Alexandre Lision392ee722015-01-23 16:27:10 -0500362
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500363SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
364 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
365 MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring"
Alexandre Lision7208b762015-08-13 12:39:49 -0400366 MACOSX_BUNDLE_SHORT_VERSION_STRING "${RING_VERSION_NAME}"
367 MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION_NAME} Nightly"
368 MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400369 MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500370 MACOSX_BUNDLE_INFO_STRING "Nightly build of ${PROJ_NAME} ${RING_VERSION} for testing and development"
371 MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
372 MACOSX_BUNDLE_ICON_FILE "appicon.icns"
373 )
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400374
375# Make sure we can find the 'ibtool' program. If we can NOT find it we
376# skip generation of this project
377FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
378IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
379 MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
380 the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
381endif()
382
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400383# Compile the .xib files using the 'ibtool' program with the destination being the app package
384FOREACH(xib ${ringclient_XIBS})
385 ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
386 COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
Alexandre Lision922380d2015-09-15 10:25:17 -0400387 --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/Base.lproj/${xib}.nib
388 ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib
389 COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400390
391ENDFOREACH()
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400392
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400393SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400394
395SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJ_NAME}.app")
396
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400397INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime)
398
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400399SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400400#--------------------------------------------------------------------------------
401# Install needed Qt plugins by copying directories from the qt installation
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400402
403
404#MESSAGE("GUI====")
405#foreach(plugin ${Qt5Gui_PLUGINS})
406# message("Plugin ${plugin} is at location ${_loc}")
407#endforeach()
408
409LIST(APPEND QT_PLUGINS_IMAGEFORMAT Qt5::QTgaPlugin
410 Qt5::QGifPlugin
411 Qt5::QICNSPlugin
412 Qt5::QICOPlugin
413 Qt5::QJpegPlugin
414 Qt5::QJp2Plugin
415 Qt5::QMngPlugin
416 Qt5::QTiffPlugin
417 Qt5::QDDSPlugin)
418
419# we need two plugin directories platform and imageformats
420GET_TARGET_PROPERTY(_loc Qt5::QCocoaIntegrationPlugin LOCATION)
421INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/platforms COMPONENT Runtime)
422LIST(APPEND QT_PLUGINS Qt5::QCocoaIntegrationPlugin)
423
424FOREACH(plugin ${QT_PLUGINS_IMAGEFORMAT})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400425 GET_TARGET_PROPERTY(_loc ${plugin} LOCATION)
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400426 INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/imageformats COMPONENT Runtime)
427 LIST(APPEND QT_PLUGINS ${plugin})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400428ENDFOREACH()
429
430# directories to look for dependencies
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400431SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib
432 ${QT_LIB_DIR}
433 ${CMAKE_CURRENT_SOURCE_DIR}/sparkle
434 ${CMAKE_CURRENT_SOURCE_DIR}/libqrencode/lib)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400435
436INSTALL(CODE "
437 file(GLOB_RECURSE QTPLUGINS
438 \"\${CMAKE_INSTALL_PREFIX}/${QT_PLUGINS_DESTDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
439 include(BundleUtilities)
440 SET(BU_CHMOD_BUNDLE_ITEMS TRUE)
441 fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
442 " COMPONENT Runtime)
443
444#================================
445# Packaging
446#================================
447SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME})
448SET( CPACK_PACKAGE_NAME ${PROJ_NAME} )
449SET( CPACK_PACKAGE_CONTACT "Alexandre Lision")
450SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux")
451SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION})
452SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION})
453SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION})
454SET(CPACK_BINARY_DRAGNDROP ON)
455SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
456INCLUDE(CPack)