blob: a7d44719931e70e8f533e4df1b10c7924d191f1f [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 Lisione7e01ba2015-03-30 13:30:51 -04008SET(RING_VERSION "0.1.0")
Alexandre Lisionbb306132015-03-27 11:30:02 -04009SET(RING_VERSION_NAME "Samuel de Champlain")
Alexandre Lisione7e01ba2015-03-30 13:30:51 -040010SET(BUNDLE_VERSION "Samuel de Champlain (0.1.0")
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 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 Lision7d2a48b2015-03-30 14:59:58 -040032 src/main.mm
33 src/AppDelegate.mm
34 src/RingWindowController.mm
35 src/ConversationsViewController.mm
36 src/PreferencesViewController.mm
37 src/QNSTreeController.mm
38 src/AccGeneralVC.mm
39 src/AccAudioVC.mm
40 src/AccVideoVC.mm
41 src/AccRingVC.mm
42 src/AccAdvancedVC.mm
43 src/AccSecurityVC.mm
44 src/AccountsVC.mm
45 src/CurrentCallVC.mm
46 src/AudioPrefsVC.mm
47 src/VideoPrefsVC.mm
48 src/GeneralPrefsVC.mm
49 src/RingWizardWC.mm
50 src/HistoryViewController.mm
51
52 src/backends/MinimalHistoryBackend.mm)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050053
Alexandre Lisionf241c6a2015-03-24 14:53:47 -040054SET(ringclient_XIBS
55 MainMenu
56 RingWindow
57 CurrentCall
58 GeneralPrefs
59 Accounts
60 AccGeneral
61 AccAudio
62 AccVideo
63 AccRing
64 AccAdvanced
65 AccSecurity
66 AudioPrefs
67 VideoPrefs
68 PreferencesScreen
69 RingWizard)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050070
71SET(ringclient_HDRS
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040072 src/AppDelegate.h
73 src/RingWindowController.h
74 src/CurrentCallVC.h
75 src/ConversationsViewController.h
76 src/PreferencesViewController.h
77 src/AccGeneralVC.h
78 src/AccVideoVC.h
79 src/AccAudioVC.h
80 src/AccRingVC.h
81 src/AccAdvancedVC.h
82 src/AccSecurityVC.h
83 src/AudioPrefsVC.h
84 src/AccountsVC.h
85 src/VideoPrefsVC.h
86 src/GeneralPrefsVC.h
87 src/HistoryViewController.h
88 src/RingWizardWC.h
89 src/QNSTreeController.h
90
91 src/backends/MinimalHistoryBackend.h)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050092
Alexandre Lision10e86dd2015-01-19 16:11:14 -050093# Icons
94
Alexandre Lision5db3e4e2015-03-24 17:25:55 -040095# This part tells CMake where to find and install the file itself
Alexandre Lision10e86dd2015-01-19 16:11:14 -050096SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns)
97SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
98 MACOSX_PACKAGE_LOCATION "Resources")
99
Alexandre Lision392ee722015-01-23 16:27:10 -0500100SET(ring_ICONS ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
101${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
102${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png
103${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_email.png
104${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_new_email.png
105${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500106${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ancrage.png
107${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
108${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png
109${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500110${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400111
Alexandre Lision392ee722015-01-23 16:27:10 -0500112SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500113 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lisionbb306132015-03-27 11:30:02 -0400114SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
115 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision392ee722015-01-23 16:27:10 -0500116
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400117# append '.xib' extension before linking xib files in executable
118FOREACH(xib ${ringclient_XIBS})
Alexandre Lision7d2a48b2015-03-30 14:59:58 -0400119 SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/${xib}.xib)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400120ENDFOREACH()
121
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500122ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500123 ${ringclient_SRCS}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500124 ${ringclient_HDRS}
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400125 ${ringclient_XIBS_FOR_EXECUTABLE}
Alexandre Lision392ee722015-01-23 16:27:10 -0500126 ${myApp_ICON}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400127 Credits.rtf
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500128 ${ring_ICONS})
129
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500130TARGET_LINK_LIBRARIES( ${PROJ_NAME}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500131 ${LIB_RING_CLIENT_LIBRARY}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500132 ${Qt5Core_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500133 ${Qt5Widgets_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500134)
135
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400136SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
137SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
138SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz")
139SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation")
140SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook")
141
142# These variables are specific to our plist and are NOT standard CMake variables
143set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu")
144set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
Alexandre Lision392ee722015-01-23 16:27:10 -0500145
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500146SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
147 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
148 MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring"
Alexandre Lisionbb306132015-03-27 11:30:02 -0400149 MACOSX_BUNDLE_SHORT_VERSION_STRING ${RING_VERSION_NAME}
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500150 MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION} Nightly"
151 MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400152 MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500153 MACOSX_BUNDLE_INFO_STRING "Nightly build of ${PROJ_NAME} ${RING_VERSION} for testing and development"
154 MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
155 MACOSX_BUNDLE_ICON_FILE "appicon.icns"
156 )
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400157
158# Make sure we can find the 'ibtool' program. If we can NOT find it we
159# skip generation of this project
160FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
161IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
162 MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
163 the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
164endif()
165
166# Make sure the 'Resources' Directory is correctly created before we build
167ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} PRE_BUILD
168 COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources)
169
170# Compile the .xib files using the 'ibtool' program with the destination being the app package
171FOREACH(xib ${ringclient_XIBS})
172 ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
173 COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
174 --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/${xib}.nib
Alexandre Lision7d2a48b2015-03-30 14:59:58 -0400175 ${CMAKE_CURRENT_SOURCE_DIR}/ui/${xib}.xib
176 COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/${xib}.xib")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400177
178ENDFOREACH()
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400179
180set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX})
181
182SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJ_NAME}.app")
183
184#--------------------------------------------------------------------------------
185# Install the QtTest application, on Apple, the bundle is at the root of the
186# install tree
187INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime)
188
189SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins/platforms)
190#--------------------------------------------------------------------------------
191# Install needed Qt plugins by copying directories from the qt installation
192LIST(APPEND QT_PLUGINS Qt5::QTgaPlugin Qt5::QTiffPlugin Qt5::QCocoaIntegrationPlugin)
193FOREACH(plugin ${QT_PLUGINS})
194 GET_TARGET_PROPERTY(_loc ${plugin} LOCATION)
195 INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR} COMPONENT Runtime)
196ENDFOREACH()
197
198# directories to look for dependencies
199SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib ${QT_LIB_DIR})
200
201INSTALL(CODE "
202 file(GLOB_RECURSE QTPLUGINS
203 \"\${CMAKE_INSTALL_PREFIX}/${QT_PLUGINS_DESTDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
204 include(BundleUtilities)
205 SET(BU_CHMOD_BUNDLE_ITEMS TRUE)
206 fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
207 " COMPONENT Runtime)
208
209#================================
210# Packaging
211#================================
212SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME})
213SET( CPACK_PACKAGE_NAME ${PROJ_NAME} )
214SET( CPACK_PACKAGE_CONTACT "Alexandre Lision")
215SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux")
216SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION})
217SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION})
218SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION})
219SET(CPACK_BINARY_DRAGNDROP ON)
220SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
221INCLUDE(CPack)