blob: bf93b7f7e100cd50c19345e64f79db291b45f861 [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 "")
11 SET(RING_VERSION "0.4.0")
12ENDIF("${RING_VERSION}" STREQUAL "")
13
14MESSAGE("Building Ring version - " ${RING_VERSION})
15
Alexandre Lision7208b762015-08-13 12:39:49 -040016SET(RING_VERSION_NAME "Samuel de Champlain (${RING_VERSION})")
Alexandre Lisionbb306132015-03-27 11:30:02 -040017
Alexandre Lision7208b762015-08-13 12:39:49 -040018MESSAGE(${RING_VERSION_NAME})
Alexandre Lision9fe374b2016-01-06 10:17:31 -050019SET(PROJ_COPYRIGHT " © 2015-2016 Savoir-faire Linux \n GPLv3 https://www.gnu.org/copyleft/gpl.html")
Alexandre Lisionb47b4c82015-01-20 11:29:03 -050020
Alexandre Lision81c97212015-06-17 15:51:53 -040021ADD_DEFINITIONS("-std=c++11 -fobjc-arc")
Alexandre Lision5855b6a2015-02-03 11:31:05 -050022
Alexandre Lisionb47b4c82015-01-20 11:29:03 -050023PROJECT(${PROJ_NAME})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050024
Alexandre Lision10e86dd2015-01-19 16:11:14 -050025FIND_PACKAGE(Qt5Core REQUIRED)
Alexandre Lision3b0bd332015-03-15 18:43:07 -040026FIND_PACKAGE(Qt5MacExtras REQUIRED)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050027FIND_PACKAGE(Qt5Widgets REQUIRED)
28FIND_PACKAGE(LibRingClient REQUIRED)
29
Alexandre Lision3d4143a2015-06-10 14:27:49 -040030IF(NOT (${ENABLE_SPARKLE} MATCHES false))
31 MESSAGE("Sparkle auto-update enabled")
32
33 # find_library searches in /Library/Frameworks by default
34 # We add an hint to our custom location
35
36 FIND_LIBRARY(SPARKLE_FRAMEWORK
37 NAMES Sparkle
38 HINTS ${CMAKE_CURRENT_SOURCE_DIR}/sparkle)
39 IF(EXISTS ${SPARKLE_FRAMEWORK})
40 SET(ENABLE_SPARKLE 1 CACHE BOOLEAN "Enable Sparkle")
41 ADD_DEFINITIONS(-DENABLE_SPARKLE=1)
42 MESSAGE("Sparkle is here:" ${SPARKLE_FRAMEWORK})
43 FIND_PATH(SPARKLE_INCLUDE_DIR Sparkle.h HINTS ${SPARKLE_FRAMEWORK}/Headers)
44 MESSAGE("INCLUDE " ${SPARKLE_INCLUDE_DIR})
45 # we need to copy the public key to check the updates
46 SET(PUBLIC_KEY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/sparkle/dsa_pub.pem")
47 IF(EXISTS ${PUBLIC_KEY_PATH})
48 MESSAGE(STATUS "Looking for Public Key - found")
49 SET_SOURCE_FILES_PROPERTIES(${PUBLIC_KEY_PATH} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
50 SET(PUBLIC_KEY ${PUBLIC_KEY_PATH})
51 ELSE(EXISTS ${PUBLIC_KEY_PATH})
52 MESSAGE(WARNING "Looking for Public Key - not found")
53 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")
54 ENDIF(EXISTS ${PUBLIC_KEY_PATH})
55 ELSE()
56 MESSAGE(FATAL_ERROR "Sparkle framework not found, build it (see README) or disable Sparkle (-DENABLE_SPARKLE=false)")
57 ENDIF(EXISTS ${SPARKLE_FRAMEWORK})
58ENDIF(NOT (${ENABLE_SPARKLE} MATCHES false))
59
Alexandre Lision10e86dd2015-01-19 16:11:14 -050060INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS})
Alexandre Lision3b0bd332015-03-15 18:43:07 -040061INCLUDE_DIRECTORIES(SYSTEM ${Qt5MacExtras_INCLUDE_DIRS})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050062INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
63INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR})
64INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})
65
Alexandre Lision3d4143a2015-06-10 14:27:49 -040066MESSAGE("LRC is here:" ${LIB_RING_CLIENT_INCLUDE_DIR})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050067SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
68
69#Files to compile
Alexandre Lision4ba18022015-04-23 12:17:40 -040070SET(ringclient_CONTROLLERS
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040071 src/QNSTreeController.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040072 src/QNSTreeController.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040073 src/CurrentCallVC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040074 src/CurrentCallVC.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040075 src/GeneralPrefsVC.mm
76 src/RingWizardWC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040077 src/RingWizardWC.h
78 src/RingWindowController.mm
79 src/RingWindowController.h
Alexandre Lisionbfa68f62015-09-10 08:38:42 -040080 src/PreferencesWC.mm
81 src/PreferencesWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -040082 src/AccGeneralVC.mm
83 src/AccGeneralVC.h
84 src/AccVideoVC.mm
85 src/AccVideoVC.h
86 src/AccAudioVC.mm
87 src/AccAudioVC.h
88 src/AccRingVC.mm
89 src/AccRingVC.h
90 src/AccAdvancedVC.mm
91 src/AccAdvancedVC.h
92 src/AccSecurityVC.mm
93 src/AccSecurityVC.h
Alexandre Lision4de68ce2015-04-24 18:22:49 -040094 src/CertificateWC.mm
95 src/CertificateWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -040096 src/AudioPrefsVC.mm
97 src/AudioPrefsVC.h
98 src/AccountsVC.mm
99 src/AccountsVC.h
100 src/VideoPrefsVC.mm
101 src/VideoPrefsVC.h
102 src/GeneralPrefsVC.h
103 src/HistoryVC.mm
104 src/HistoryVC.h
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400105 src/PersonsVC.mm
Alexandre Lision58cab672015-06-09 15:25:40 -0400106 src/PersonsVC.h
107 src/ChatVC.mm
Alexandre Lision2db8f472015-07-22 15:05:46 -0400108 src/ChatVC.h
109 src/PersonLinkerVC.mm
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400110 src/PersonLinkerVC.h
111 src/SmartViewVC.mm
Alexandre Lision883719f2015-10-22 17:37:45 -0400112 src/SmartViewVC.h
113 src/BrokerVC.mm
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500114 src/BrokerVC.h
115 src/ConversationVC.mm
116 src/ConversationVC.h)
Alexandre Lision74dd47f2015-04-14 13:47:42 -0400117
Alexandre Lision4ba18022015-04-23 12:17:40 -0400118SET(ringclient_BACKENDS
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400119 src/backends/AddressBookBackend.mm
Alexandre Lision66643432015-06-04 11:59:36 -0400120 src/backends/AddressBookBackend.h)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400121
122SET(ringclient_VIEWS
123 src/views/CallView.mm
124 src/views/CallView.h
Alexandre Lisionf47a2562015-06-15 15:48:29 -0400125 src/views/ITProgressIndicator.mm
126 src/views/ITProgressIndicator.h
Alexandre Lision2db8f472015-07-22 15:05:46 -0400127 src/views/RingOutlineView.mm
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400128 src/views/RingOutlineView.h
129 src/views/RingIDField.mm
Alexandre Lision4e280d62015-09-09 15:56:30 -0400130 src/views/RingIDField.h
131 src/views/HoverTableRowView.mm
132 src/views/HoverTableRowView.h
133 src/views/NSColor+RingTheme.mm
134 src/views/NSColor+RingTheme.h
135 src/views/ContextualTableCellView.mm
Alexandre Lision6da08a82015-09-24 17:09:24 -0400136 src/views/ContextualTableCellView.h
137 src/views/IconButton.h
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500138 src/views/IconButton.mm
139 src/views/IMTableCellView.h
140 src/views/IMTableCellView.mm)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400141
142SET(ringclient_OTHERS
143 src/main.mm
144 src/AppDelegate.mm
145 src/AppDelegate.h
Alexandre Lision9fe374b2016-01-06 10:17:31 -0500146 src/Constants.h
Alexandre Lision83180df2016-01-18 11:32:20 -0500147 src/INDSequentialTextSelectionManager.mm
148 src/INDSequentialTextSelectionManager.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400149 src/delegates/ImageManipulationDelegate.mm
150 src/delegates/ImageManipulationDelegate.h)
151
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500152
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400153SET(ringclient_XIBS
154 MainMenu
155 RingWindow
156 CurrentCall
157 GeneralPrefs
158 Accounts
159 AccGeneral
160 AccAudio
161 AccVideo
162 AccRing
163 AccAdvanced
164 AccSecurity
165 AudioPrefs
166 VideoPrefs
Alexandre Lisionbfa68f62015-09-10 08:38:42 -0400167 PreferencesWindow
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400168 RingWizard
Alexandre Lision2db8f472015-07-22 15:05:46 -0400169 CertificateWindow
Alexandre Lision883719f2015-10-22 17:37:45 -0400170 PersonLinker
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500171 Broker
172 Conversation)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500173
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500174# Icons
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400175# This part tells CMake where to find and install the file itself
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500176SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns)
177SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
178 MACOSX_PACKAGE_LOCATION "Resources")
179
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400180SET(ring_ICONS
181${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_name.png
Alexandre Lision6da08a82015-09-24 17:09:24 -0400182${CMAKE_CURRENT_SOURCE_DIR}/data/background_tile.png
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400183${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500184${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_arrow_back.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500185${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
186${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png
Alexandre Lisiond18fa272015-06-15 11:18:03 -0400187${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hangup.png
188${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hold.png
189${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_holdoff.png
190${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_video.png
191${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_audio.png
192${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_chat.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500193${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
Alexandre Lisionf23ec5a2015-07-16 11:24:06 -0400194${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_quality.png
Alexandre Lision266fca02015-09-28 14:47:05 -0400195${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_record.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400196${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_received.png
197${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_missed.png
198${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_made.png
Alexandre Lision883719f2015-10-22 17:37:45 -0400199${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_transfer.png
Alexandre Lision89edc6a2015-11-09 11:30:47 -0500200${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_add_participant.png
201${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_merge_calls.png
Alexandre Lisiond5229f32015-11-16 11:17:41 -0500202${CMAKE_CURRENT_SOURCE_DIR}/data/default_user_icon.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500203${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ancrage.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500204${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_send.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500205${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
Alexandre Lision2db8f472015-07-22 15:05:46 -0400206${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_person_add.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400207${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_persons.png
208${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_history.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500209${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png
210${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500211${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400212
Alexandre Lision392ee722015-01-23 16:27:10 -0500213SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500214 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lisionbb306132015-03-27 11:30:02 -0400215SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
216 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision392ee722015-01-23 16:27:10 -0500217
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400218
219# Check which translations are found for LRC
220SET(LRC_TRANSLATIONS_PATH ${CMAKE_INSTALL_PREFIX}/share/libringclient/translations)
221FILE(GLOB QM_LIST ${LRC_TRANSLATIONS_PATH}/*.qm)
222
223FOREACH(QM_FILE ${QM_LIST})
224 # Extract country code from filename
225 GET_FILENAME_COMPONENT(FILENAME ${QM_FILE} NAME_WE)
226 STRING(REGEX REPLACE "^lrc_" "" LANG ${FILENAME})
227
228 SET_SOURCE_FILES_PROPERTIES(${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm
229 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/QtTranslations)
230 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
231 "${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm")
Alexandre Lision922380d2015-09-15 10:25:17 -0400232ENDFOREACH()
233
234# Check which translations are found for the client
235FILE(GLOB LPROJ_LIST ui/*.lproj)
236
237FOREACH(LPROJ ${LPROJ_LIST})
238 # Extract country code from <lang>.lproj folder name
239 GET_FILENAME_COMPONENT(LANG ${LPROJ} NAME_WE)
240 IF(EXISTS "${LPROJ}/Localizable.strings")
241 MESSAGE("Localizable:" ${LANG})
242 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/Localizable.strings
243 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj/)
244
245 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
246 ${LPROJ}/Localizable.strings)
247 ENDIF()
248 FOREACH(xib ${ringclient_XIBS})
249 IF(EXISTS "${LPROJ}/${xib}.strings")
250 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/${xib}.strings
251 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj/)
252
253 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
254 ${LPROJ}/${xib}.strings)
255 ENDIF()
256 ENDFOREACH()
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400257
258 # Regroup those files under a .lproj folder
259 SOURCE_GROUP("Resources\\${LANG}.lproj" FILES
260 ${LOCALIZED_${LANG}})
261 # Add them to the list of files to package
262 SET(LOCALIZABLE_FILES ${LOCALIZABLE_FILES} ${LOCALIZED_${LANG}})
263ENDFOREACH()
264
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400265# append '.xib' extension before linking xib files in executable
266FOREACH(xib ${ringclient_XIBS})
Alexandre Lision922380d2015-09-15 10:25:17 -0400267 SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/Base.lproj/${xib}.xib)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400268ENDFOREACH()
269
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400270SET(TO_ADD
Alexandre Lision4ba18022015-04-23 12:17:40 -0400271 ${ringclient_CONTROLLERS}
272 ${ringclient_BACKENDS}
273 ${ringclient_VIEWS}
274 ${ringclient_OTHERS}
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400275 ${ringclient_XIBS_FOR_EXECUTABLE}
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400276 ${LOCALIZABLE_FILES}
Alexandre Lision392ee722015-01-23 16:27:10 -0500277 ${myApp_ICON}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400278 Credits.rtf
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500279 ${ring_ICONS})
280
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400281IF(ENABLE_SPARKLE)
282 SET( TO_ADD ${TO_ADD} ${PUBLIC_KEY} ${SPARKLE_FRAMEWORK})
283ENDIF(ENABLE_SPARKLE)
284
285ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE ${TO_ADD})
286
Alexandre Lision4ba18022015-04-23 12:17:40 -0400287# Follow Xcode hierarchy principles
288SOURCE_GROUP("Controllers" FILES ${ringclient_CONTROLLERS})
289SOURCE_GROUP("Backends" FILES ${ringclient_BACKENDS})
290SOURCE_GROUP("CustomViews" FILES ${ringclient_VIEWS})
291SOURCE_GROUP("Classes" FILES ${ringclient_OTHERS})
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400292SOURCE_GROUP("Resources\\Interface Builder" FILES
293 ${ringclient_XIBS_FOR_EXECUTABLE})
Alexandre Lision4ba18022015-04-23 12:17:40 -0400294
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400295IF(ENABLE_SPARKLE)
296 SOURCE_GROUP("Frameworks" FILES ${SPARKLE_FRAMEWORK})
297ENDIF(ENABLE_SPARKLE)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400298
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500299TARGET_LINK_LIBRARIES( ${PROJ_NAME}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500300 ${LIB_RING_CLIENT_LIBRARY}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500301 ${Qt5Core_LIBRARIES}
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400302 ${Qt5MacExtras_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500303 ${Qt5Widgets_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500304)
305
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400306IF(ENABLE_SPARKLE)
307 TARGET_LINK_LIBRARIES(${PROJ_NAME} ${SPARKLE_FRAMEWORK})
308ENDIF(ENABLE_SPARKLE)
309
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400310SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
311SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
312SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz")
313SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation")
314SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook")
315
316# These variables are specific to our plist and are NOT standard CMake variables
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400317SET(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu")
318SET(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
Alexandre Lision392ee722015-01-23 16:27:10 -0500319
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500320SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
321 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
322 MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring"
Alexandre Lision7208b762015-08-13 12:39:49 -0400323 MACOSX_BUNDLE_SHORT_VERSION_STRING "${RING_VERSION_NAME}"
324 MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION_NAME} Nightly"
325 MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400326 MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500327 MACOSX_BUNDLE_INFO_STRING "Nightly build of ${PROJ_NAME} ${RING_VERSION} for testing and development"
328 MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
329 MACOSX_BUNDLE_ICON_FILE "appicon.icns"
330 )
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400331
332# Make sure we can find the 'ibtool' program. If we can NOT find it we
333# skip generation of this project
334FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
335IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
336 MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
337 the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
338endif()
339
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400340# Compile the .xib files using the 'ibtool' program with the destination being the app package
341FOREACH(xib ${ringclient_XIBS})
342 ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
343 COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
Alexandre Lision922380d2015-09-15 10:25:17 -0400344 --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/Base.lproj/${xib}.nib
345 ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib
346 COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400347
348ENDFOREACH()
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400349
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400350SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400351
352SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJ_NAME}.app")
353
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400354INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime)
355
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400356SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400357#--------------------------------------------------------------------------------
358# Install needed Qt plugins by copying directories from the qt installation
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400359
360
361#MESSAGE("GUI====")
362#foreach(plugin ${Qt5Gui_PLUGINS})
363# message("Plugin ${plugin} is at location ${_loc}")
364#endforeach()
365
366LIST(APPEND QT_PLUGINS_IMAGEFORMAT Qt5::QTgaPlugin
367 Qt5::QGifPlugin
368 Qt5::QICNSPlugin
369 Qt5::QICOPlugin
370 Qt5::QJpegPlugin
371 Qt5::QJp2Plugin
372 Qt5::QMngPlugin
373 Qt5::QTiffPlugin
374 Qt5::QDDSPlugin)
375
376# we need two plugin directories platform and imageformats
377GET_TARGET_PROPERTY(_loc Qt5::QCocoaIntegrationPlugin LOCATION)
378INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/platforms COMPONENT Runtime)
379LIST(APPEND QT_PLUGINS Qt5::QCocoaIntegrationPlugin)
380
381FOREACH(plugin ${QT_PLUGINS_IMAGEFORMAT})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400382 GET_TARGET_PROPERTY(_loc ${plugin} LOCATION)
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400383 INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/imageformats COMPONENT Runtime)
384 LIST(APPEND QT_PLUGINS ${plugin})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400385ENDFOREACH()
386
387# directories to look for dependencies
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400388SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib ${QT_LIB_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/sparkle)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400389
390INSTALL(CODE "
391 file(GLOB_RECURSE QTPLUGINS
392 \"\${CMAKE_INSTALL_PREFIX}/${QT_PLUGINS_DESTDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
393 include(BundleUtilities)
394 SET(BU_CHMOD_BUNDLE_ITEMS TRUE)
395 fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
396 " COMPONENT Runtime)
397
398#================================
399# Packaging
400#================================
401SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME})
402SET( CPACK_PACKAGE_NAME ${PROJ_NAME} )
403SET( CPACK_PACKAGE_CONTACT "Alexandre Lision")
404SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux")
405SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION})
406SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION})
407SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION})
408SET(CPACK_BINARY_DRAGNDROP ON)
409SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
410INCLUDE(CPack)