blob: 5475cb0195a4e0b20e7eb92d01e474738c35707e [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 Lisionbb306132015-03-27 11:30:02 -04008SET(RING_VERSION "0.1.x")
9SET(RING_VERSION_NAME "Samuel de Champlain")
10SET(BUNDLE_VERSION "Samuel de Champlain (0.1.x")
11
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 Lision10e86dd2015-01-19 16:11:14 -050019FIND_PACKAGE(Qt5Widgets REQUIRED)
20FIND_PACKAGE(LibRingClient REQUIRED)
21
Alexandre Lision10e86dd2015-01-19 16:11:14 -050022INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050023INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
24INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR})
25INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})
26
27MESSAGE("LibRingClient is here:" ${LIB_RING_CLIENT_INCLUDE_DIR})
28SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
29
30#Files to compile
31SET(ringclient_SRCS
Alexandre Lision5855b6a2015-02-03 11:31:05 -050032 main.mm
33 AppDelegate.mm
34 RingWindowController.mm
35 ConversationsViewController.mm
Alexandre Lision4a7b95e2015-02-20 10:06:43 -050036 PreferencesViewController.mm
Alexandre Lision5855b6a2015-02-03 11:31:05 -050037 QNSTreeController.mm
Alexandre Lisionf5fc4792015-03-17 09:15:43 -040038 AccGeneralVC.mm
39 AccAudioVC.mm
40 AccVideoVC.mm
41 AccRingVC.mm
42 AccAdvancedVC.mm
43 AccSecurityVC.mm
44 AccountsVC.mm
Alexandre Lisionc5148052015-03-04 15:10:35 -050045 CurrentCallVC.mm
Alexandre Lision4a7b95e2015-02-20 10:06:43 -050046 AudioPrefsVC.mm
47 VideoPrefsVC.mm
48 GeneralPrefsVC.mm
Alexandre Lision745e4d62015-03-22 20:03:10 -040049 RingWizardWC.mm
Alexandre Lision5855b6a2015-02-03 11:31:05 -050050 HistoryViewController.mm
Alexandre Lision4a7b95e2015-02-20 10:06:43 -050051 MinimalHistoryBackend.mm)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050052
Alexandre Lisionf241c6a2015-03-24 14:53:47 -040053SET(ringclient_XIBS
54 MainMenu
55 RingWindow
56 CurrentCall
57 GeneralPrefs
58 Accounts
59 AccGeneral
60 AccAudio
61 AccVideo
62 AccRing
63 AccAdvanced
64 AccSecurity
65 AudioPrefs
66 VideoPrefs
67 PreferencesScreen
68 RingWizard)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050069
70SET(ringclient_HDRS
Alexandre Lision5855b6a2015-02-03 11:31:05 -050071 AppDelegate.h
72 RingWindowController.h
Alexandre Lisionc5148052015-03-04 15:10:35 -050073 CurrentCallVC.h
Alexandre Lision5855b6a2015-02-03 11:31:05 -050074 ConversationsViewController.h
Alexandre Lision4a7b95e2015-02-20 10:06:43 -050075 PreferencesViewController.h
Alexandre Lisionf5fc4792015-03-17 09:15:43 -040076 AccGeneralVC.h
77 AccVideoVC.h
78 AccAudioVC.h
79 AccRingVC.h
80 AccAdvancedVC.h
81 AccSecurityVC.h
Alexandre Lision4a7b95e2015-02-20 10:06:43 -050082 AudioPrefsVC.h
Alexandre Lisionf5fc4792015-03-17 09:15:43 -040083 AccountsVC.h
Alexandre Lision4a7b95e2015-02-20 10:06:43 -050084 VideoPrefsVC.h
85 GeneralPrefsVC.h
Alexandre Lision5855b6a2015-02-03 11:31:05 -050086 HistoryViewController.h
Alexandre Lision745e4d62015-03-22 20:03:10 -040087 RingWizardWC.h
Alexandre Lision5855b6a2015-02-03 11:31:05 -050088 QNSTreeController.h
89 MinimalHistoryBackend.h)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050090
Alexandre Lision10e86dd2015-01-19 16:11:14 -050091# Icons
92
Alexandre Lision5db3e4e2015-03-24 17:25:55 -040093# This part tells CMake where to find and install the file itself
Alexandre Lision10e86dd2015-01-19 16:11:14 -050094SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns)
95SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
96 MACOSX_PACKAGE_LOCATION "Resources")
97
Alexandre Lision392ee722015-01-23 16:27:10 -050098SET(ring_ICONS ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
99${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
100${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png
101${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_email.png
102${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_new_email.png
103${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500104${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ancrage.png
105${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
106${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png
107${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500108${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400109
Alexandre Lision392ee722015-01-23 16:27:10 -0500110SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500111 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lisionbb306132015-03-27 11:30:02 -0400112SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
113 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision392ee722015-01-23 16:27:10 -0500114
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400115# append '.xib' extension before linking xib files in executable
116FOREACH(xib ${ringclient_XIBS})
117 SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ${xib}.xib)
118ENDFOREACH()
119
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500120ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500121 ${ringclient_SRCS}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500122 ${ringclient_HDRS}
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400123 ${ringclient_XIBS_FOR_EXECUTABLE}
Alexandre Lision392ee722015-01-23 16:27:10 -0500124 ${myApp_ICON}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400125 Credits.rtf
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500126 ${ring_ICONS})
127
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500128TARGET_LINK_LIBRARIES( ${PROJ_NAME}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500129 ${LIB_RING_CLIENT_LIBRARY}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500130 ${Qt5Core_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500131 ${Qt5Widgets_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500132)
133
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400134SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
135SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
136SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz")
137SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation")
138SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook")
139
140# These variables are specific to our plist and are NOT standard CMake variables
141set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu")
142set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
Alexandre Lision392ee722015-01-23 16:27:10 -0500143
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500144SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
145 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
146 MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring"
Alexandre Lisionbb306132015-03-27 11:30:02 -0400147 MACOSX_BUNDLE_SHORT_VERSION_STRING ${RING_VERSION_NAME}
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500148 MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION} Nightly"
149 MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400150 MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500151 MACOSX_BUNDLE_INFO_STRING "Nightly build of ${PROJ_NAME} ${RING_VERSION} for testing and development"
152 MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
153 MACOSX_BUNDLE_ICON_FILE "appicon.icns"
154 )
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400155
156# Make sure we can find the 'ibtool' program. If we can NOT find it we
157# skip generation of this project
158FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
159IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
160 MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
161 the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
162endif()
163
164# Make sure the 'Resources' Directory is correctly created before we build
165ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} PRE_BUILD
166 COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources)
167
168# Compile the .xib files using the 'ibtool' program with the destination being the app package
169FOREACH(xib ${ringclient_XIBS})
170 ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
171 COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
172 --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/${xib}.nib
173 ${CMAKE_CURRENT_SOURCE_DIR}/${xib}.xib
174 COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/${xib}.xib")
175
176ENDFOREACH()