Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 1 | CMAKE_MINIMUM_REQUIRED(VERSION 2.8) |
| 2 | |
| 3 | IF(POLICY CMP0022) |
| 4 | CMAKE_POLICY(SET CMP0022 NEW) |
| 5 | ENDIF(POLICY CMP0022) |
| 6 | |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 7 | SET(PROJ_NAME Ring) |
Alexandre Lision | e7e01ba | 2015-03-30 13:30:51 -0400 | [diff] [blame] | 8 | SET(RING_VERSION "0.1.0") |
Alexandre Lision | bb30613 | 2015-03-27 11:30:02 -0400 | [diff] [blame] | 9 | SET(RING_VERSION_NAME "Samuel de Champlain") |
Alexandre Lision | e7e01ba | 2015-03-30 13:30:51 -0400 | [diff] [blame] | 10 | SET(BUNDLE_VERSION "Samuel de Champlain (0.1.0") |
Alexandre Lision | bb30613 | 2015-03-27 11:30:02 -0400 | [diff] [blame] | 11 | |
| 12 | SET(PROJ_COPYRIGHT " © 2015 Savoir-faire Linux \n GPLv3 https://www.gnu.org/copyleft/gpl.html") |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 13 | |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 14 | ADD_DEFINITIONS("-std=c++11") |
| 15 | |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 16 | PROJECT(${PROJ_NAME}) |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 17 | |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 18 | FIND_PACKAGE(Qt5Core REQUIRED) |
Alexandre Lision | 3b0bd33 | 2015-03-15 18:43:07 -0400 | [diff] [blame^] | 19 | FIND_PACKAGE(Qt5MacExtras REQUIRED) |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 20 | FIND_PACKAGE(Qt5Widgets REQUIRED) |
| 21 | FIND_PACKAGE(LibRingClient REQUIRED) |
| 22 | |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 23 | INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS}) |
Alexandre Lision | 3b0bd33 | 2015-03-15 18:43:07 -0400 | [diff] [blame^] | 24 | INCLUDE_DIRECTORIES(SYSTEM ${Qt5MacExtras_INCLUDE_DIRS}) |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 25 | INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) |
| 26 | INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}) |
| 27 | INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR}) |
| 28 | |
| 29 | MESSAGE("LibRingClient is here:" ${LIB_RING_CLIENT_INCLUDE_DIR}) |
| 30 | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") |
| 31 | |
| 32 | #Files to compile |
| 33 | SET(ringclient_SRCS |
Alexandre Lision | 7d2a48b | 2015-03-30 14:59:58 -0400 | [diff] [blame] | 34 | src/main.mm |
| 35 | src/AppDelegate.mm |
| 36 | src/RingWindowController.mm |
| 37 | src/ConversationsViewController.mm |
| 38 | src/PreferencesViewController.mm |
| 39 | src/QNSTreeController.mm |
| 40 | src/AccGeneralVC.mm |
| 41 | src/AccAudioVC.mm |
| 42 | src/AccVideoVC.mm |
| 43 | src/AccRingVC.mm |
| 44 | src/AccAdvancedVC.mm |
| 45 | src/AccSecurityVC.mm |
| 46 | src/AccountsVC.mm |
| 47 | src/CurrentCallVC.mm |
| 48 | src/AudioPrefsVC.mm |
| 49 | src/VideoPrefsVC.mm |
| 50 | src/GeneralPrefsVC.mm |
| 51 | src/RingWizardWC.mm |
| 52 | src/HistoryViewController.mm |
Alexandre Lision | 3b0bd33 | 2015-03-15 18:43:07 -0400 | [diff] [blame^] | 53 | src/PersonsVC.mm |
Alexandre Lision | 74dd47f | 2015-04-14 13:47:42 -0400 | [diff] [blame] | 54 | |
Alexandre Lision | 3b0bd33 | 2015-03-15 18:43:07 -0400 | [diff] [blame^] | 55 | src/delegates/ImageManipulationDelegate.mm |
| 56 | |
| 57 | src/views/PersonCell.mm |
Alexandre Lision | 74dd47f | 2015-04-14 13:47:42 -0400 | [diff] [blame] | 58 | src/views/CallView.mm |
| 59 | |
Alexandre Lision | 3b0bd33 | 2015-03-15 18:43:07 -0400 | [diff] [blame^] | 60 | src/backends/AddressBookBackend.mm |
Alexandre Lision | 7d2a48b | 2015-03-30 14:59:58 -0400 | [diff] [blame] | 61 | src/backends/MinimalHistoryBackend.mm) |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 62 | |
Alexandre Lision | f241c6a | 2015-03-24 14:53:47 -0400 | [diff] [blame] | 63 | SET(ringclient_XIBS |
| 64 | MainMenu |
| 65 | RingWindow |
| 66 | CurrentCall |
| 67 | GeneralPrefs |
| 68 | Accounts |
| 69 | AccGeneral |
| 70 | AccAudio |
| 71 | AccVideo |
| 72 | AccRing |
| 73 | AccAdvanced |
| 74 | AccSecurity |
| 75 | AudioPrefs |
| 76 | VideoPrefs |
| 77 | PreferencesScreen |
| 78 | RingWizard) |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 79 | |
| 80 | SET(ringclient_HDRS |
Alexandre Lision | 7d2a48b | 2015-03-30 14:59:58 -0400 | [diff] [blame] | 81 | src/AppDelegate.h |
| 82 | src/RingWindowController.h |
| 83 | src/CurrentCallVC.h |
| 84 | src/ConversationsViewController.h |
| 85 | src/PreferencesViewController.h |
| 86 | src/AccGeneralVC.h |
| 87 | src/AccVideoVC.h |
| 88 | src/AccAudioVC.h |
| 89 | src/AccRingVC.h |
| 90 | src/AccAdvancedVC.h |
| 91 | src/AccSecurityVC.h |
| 92 | src/AudioPrefsVC.h |
| 93 | src/AccountsVC.h |
| 94 | src/VideoPrefsVC.h |
| 95 | src/GeneralPrefsVC.h |
| 96 | src/HistoryViewController.h |
| 97 | src/RingWizardWC.h |
| 98 | src/QNSTreeController.h |
Alexandre Lision | 3b0bd33 | 2015-03-15 18:43:07 -0400 | [diff] [blame^] | 99 | src/PersonsVC.h |
Alexandre Lision | 74dd47f | 2015-04-14 13:47:42 -0400 | [diff] [blame] | 100 | |
Alexandre Lision | 3b0bd33 | 2015-03-15 18:43:07 -0400 | [diff] [blame^] | 101 | src/delegates/ImageManipulationDelegate.h |
| 102 | |
| 103 | src/views/PersonCell.h |
Alexandre Lision | 74dd47f | 2015-04-14 13:47:42 -0400 | [diff] [blame] | 104 | src/views/CallView.h |
| 105 | |
Alexandre Lision | 3b0bd33 | 2015-03-15 18:43:07 -0400 | [diff] [blame^] | 106 | src/backends/AddressBookBackend.h |
Alexandre Lision | 7d2a48b | 2015-03-30 14:59:58 -0400 | [diff] [blame] | 107 | src/backends/MinimalHistoryBackend.h) |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 108 | |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 109 | # Icons |
| 110 | |
Alexandre Lision | 5db3e4e | 2015-03-24 17:25:55 -0400 | [diff] [blame] | 111 | # This part tells CMake where to find and install the file itself |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 112 | SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns) |
| 113 | SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES |
| 114 | MACOSX_PACKAGE_LOCATION "Resources") |
| 115 | |
Alexandre Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 116 | SET(ring_ICONS ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png |
| 117 | ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png |
| 118 | ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png |
| 119 | ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_email.png |
| 120 | ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_new_email.png |
| 121 | ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png |
Alexandre Lision | 4a7b95e | 2015-02-20 10:06:43 -0500 | [diff] [blame] | 122 | ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ancrage.png |
| 123 | ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png |
| 124 | ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png |
| 125 | ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png |
Alexandre Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 126 | ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png) |
Alexandre Lision | 5db3e4e | 2015-03-24 17:25:55 -0400 | [diff] [blame] | 127 | |
Alexandre Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 128 | SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 129 | MACOSX_PACKAGE_LOCATION Resources) |
Alexandre Lision | bb30613 | 2015-03-27 11:30:02 -0400 | [diff] [blame] | 130 | SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES |
| 131 | MACOSX_PACKAGE_LOCATION Resources) |
Alexandre Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 132 | |
Alexandre Lision | 5db3e4e | 2015-03-24 17:25:55 -0400 | [diff] [blame] | 133 | # append '.xib' extension before linking xib files in executable |
| 134 | FOREACH(xib ${ringclient_XIBS}) |
Alexandre Lision | 7d2a48b | 2015-03-30 14:59:58 -0400 | [diff] [blame] | 135 | SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/${xib}.xib) |
Alexandre Lision | 5db3e4e | 2015-03-24 17:25:55 -0400 | [diff] [blame] | 136 | ENDFOREACH() |
| 137 | |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 138 | ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 139 | ${ringclient_SRCS} |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 140 | ${ringclient_HDRS} |
Alexandre Lision | 5db3e4e | 2015-03-24 17:25:55 -0400 | [diff] [blame] | 141 | ${ringclient_XIBS_FOR_EXECUTABLE} |
Alexandre Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 142 | ${myApp_ICON} |
Alexandre Lision | bb30613 | 2015-03-27 11:30:02 -0400 | [diff] [blame] | 143 | Credits.rtf |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 144 | ${ring_ICONS}) |
| 145 | |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 146 | TARGET_LINK_LIBRARIES( ${PROJ_NAME} |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 147 | ${LIB_RING_CLIENT_LIBRARY} |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 148 | ${Qt5Core_LIBRARIES} |
Alexandre Lision | 3b0bd33 | 2015-03-15 18:43:07 -0400 | [diff] [blame^] | 149 | ${Qt5MacExtras_LIBRARIES} |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 150 | ${Qt5Widgets_LIBRARIES} |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 151 | ) |
| 152 | |
Alexandre Lision | f241c6a | 2015-03-24 14:53:47 -0400 | [diff] [blame] | 153 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit") |
| 154 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa") |
| 155 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz") |
| 156 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation") |
| 157 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook") |
| 158 | |
| 159 | # These variables are specific to our plist and are NOT standard CMake variables |
| 160 | set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu") |
| 161 | set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication") |
Alexandre Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 162 | |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 163 | SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES |
| 164 | MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in |
| 165 | MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring" |
Alexandre Lision | bb30613 | 2015-03-27 11:30:02 -0400 | [diff] [blame] | 166 | MACOSX_BUNDLE_SHORT_VERSION_STRING ${RING_VERSION_NAME} |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 167 | MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION} Nightly" |
| 168 | MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION} |
Alexandre Lision | bb30613 | 2015-03-27 11:30:02 -0400 | [diff] [blame] | 169 | MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}" |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 170 | MACOSX_BUNDLE_INFO_STRING "Nightly build of ${PROJ_NAME} ${RING_VERSION} for testing and development" |
| 171 | MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME} |
| 172 | MACOSX_BUNDLE_ICON_FILE "appicon.icns" |
| 173 | ) |
Alexandre Lision | f241c6a | 2015-03-24 14:53:47 -0400 | [diff] [blame] | 174 | |
| 175 | # Make sure we can find the 'ibtool' program. If we can NOT find it we |
| 176 | # skip generation of this project |
| 177 | FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin") |
| 178 | IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND") |
| 179 | MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with |
| 180 | the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin") |
| 181 | endif() |
| 182 | |
| 183 | # Make sure the 'Resources' Directory is correctly created before we build |
| 184 | ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} PRE_BUILD |
| 185 | COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources) |
| 186 | |
| 187 | # Compile the .xib files using the 'ibtool' program with the destination being the app package |
| 188 | FOREACH(xib ${ringclient_XIBS}) |
| 189 | ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD |
| 190 | COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text |
| 191 | --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/${xib}.nib |
Alexandre Lision | 7d2a48b | 2015-03-30 14:59:58 -0400 | [diff] [blame] | 192 | ${CMAKE_CURRENT_SOURCE_DIR}/ui/${xib}.xib |
| 193 | COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/${xib}.xib") |
Alexandre Lision | f241c6a | 2015-03-24 14:53:47 -0400 | [diff] [blame] | 194 | |
| 195 | ENDFOREACH() |
Alexandre Lision | e7e01ba | 2015-03-30 13:30:51 -0400 | [diff] [blame] | 196 | |
| 197 | set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX}) |
| 198 | |
| 199 | SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJ_NAME}.app") |
| 200 | |
| 201 | #-------------------------------------------------------------------------------- |
| 202 | # Install the QtTest application, on Apple, the bundle is at the root of the |
| 203 | # install tree |
| 204 | INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime) |
| 205 | |
| 206 | SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins/platforms) |
| 207 | #-------------------------------------------------------------------------------- |
| 208 | # Install needed Qt plugins by copying directories from the qt installation |
| 209 | LIST(APPEND QT_PLUGINS Qt5::QTgaPlugin Qt5::QTiffPlugin Qt5::QCocoaIntegrationPlugin) |
| 210 | FOREACH(plugin ${QT_PLUGINS}) |
| 211 | GET_TARGET_PROPERTY(_loc ${plugin} LOCATION) |
| 212 | INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR} COMPONENT Runtime) |
| 213 | ENDFOREACH() |
| 214 | |
| 215 | # directories to look for dependencies |
| 216 | SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib ${QT_LIB_DIR}) |
| 217 | |
| 218 | INSTALL(CODE " |
| 219 | file(GLOB_RECURSE QTPLUGINS |
| 220 | \"\${CMAKE_INSTALL_PREFIX}/${QT_PLUGINS_DESTDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\") |
| 221 | include(BundleUtilities) |
| 222 | SET(BU_CHMOD_BUNDLE_ITEMS TRUE) |
| 223 | fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\") |
| 224 | " COMPONENT Runtime) |
| 225 | |
| 226 | #================================ |
| 227 | # Packaging |
| 228 | #================================ |
| 229 | SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME}) |
| 230 | SET( CPACK_PACKAGE_NAME ${PROJ_NAME} ) |
| 231 | SET( CPACK_PACKAGE_CONTACT "Alexandre Lision") |
| 232 | SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux") |
| 233 | SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION}) |
| 234 | SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION}) |
| 235 | SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION}) |
| 236 | SET(CPACK_BINARY_DRAGNDROP ON) |
| 237 | SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}") |
| 238 | INCLUDE(CPack) |