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) |
| 8 | SET(RING_VERSION 1.0) |
| 9 | |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 10 | ADD_DEFINITIONS("-std=c++11") |
| 11 | |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 12 | PROJECT(${PROJ_NAME}) |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 13 | |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 14 | FIND_PACKAGE(Qt5Core REQUIRED) |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 15 | FIND_PACKAGE(Qt5Widgets REQUIRED) |
| 16 | FIND_PACKAGE(LibRingClient REQUIRED) |
| 17 | |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 18 | INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS}) |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 19 | INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) |
| 20 | INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}) |
| 21 | INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR}) |
| 22 | |
| 23 | MESSAGE("LibRingClient is here:" ${LIB_RING_CLIENT_INCLUDE_DIR}) |
| 24 | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") |
| 25 | |
| 26 | #Files to compile |
| 27 | SET(ringclient_SRCS |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 28 | main.mm |
| 29 | AppDelegate.mm |
| 30 | RingWindowController.mm |
| 31 | ConversationsViewController.mm |
Alexandre Lision | 4a7b95e | 2015-02-20 10:06:43 -0500 | [diff] [blame] | 32 | PreferencesViewController.mm |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 33 | QNSTreeController.mm |
Alexandre Lision | f5fc479 | 2015-03-17 09:15:43 -0400 | [diff] [blame] | 34 | AccGeneralVC.mm |
| 35 | AccAudioVC.mm |
| 36 | AccVideoVC.mm |
| 37 | AccRingVC.mm |
| 38 | AccAdvancedVC.mm |
| 39 | AccSecurityVC.mm |
| 40 | AccountsVC.mm |
Alexandre Lision | c514805 | 2015-03-04 15:10:35 -0500 | [diff] [blame] | 41 | CurrentCallVC.mm |
Alexandre Lision | 4a7b95e | 2015-02-20 10:06:43 -0500 | [diff] [blame] | 42 | AudioPrefsVC.mm |
| 43 | VideoPrefsVC.mm |
| 44 | GeneralPrefsVC.mm |
Alexandre Lision | 745e4d6 | 2015-03-22 20:03:10 -0400 | [diff] [blame] | 45 | RingWizardWC.mm |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 46 | HistoryViewController.mm |
Alexandre Lision | 4a7b95e | 2015-02-20 10:06:43 -0500 | [diff] [blame] | 47 | MinimalHistoryBackend.mm) |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 48 | |
Alexandre Lision | f241c6a | 2015-03-24 14:53:47 -0400 | [diff] [blame] | 49 | SET(ringclient_XIBS |
| 50 | MainMenu |
| 51 | RingWindow |
| 52 | CurrentCall |
| 53 | GeneralPrefs |
| 54 | Accounts |
| 55 | AccGeneral |
| 56 | AccAudio |
| 57 | AccVideo |
| 58 | AccRing |
| 59 | AccAdvanced |
| 60 | AccSecurity |
| 61 | AudioPrefs |
| 62 | VideoPrefs |
| 63 | PreferencesScreen |
| 64 | RingWizard) |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 65 | |
| 66 | SET(ringclient_HDRS |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 67 | AppDelegate.h |
| 68 | RingWindowController.h |
Alexandre Lision | c514805 | 2015-03-04 15:10:35 -0500 | [diff] [blame] | 69 | CurrentCallVC.h |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 70 | ConversationsViewController.h |
Alexandre Lision | 4a7b95e | 2015-02-20 10:06:43 -0500 | [diff] [blame] | 71 | PreferencesViewController.h |
Alexandre Lision | f5fc479 | 2015-03-17 09:15:43 -0400 | [diff] [blame] | 72 | AccGeneralVC.h |
| 73 | AccVideoVC.h |
| 74 | AccAudioVC.h |
| 75 | AccRingVC.h |
| 76 | AccAdvancedVC.h |
| 77 | AccSecurityVC.h |
Alexandre Lision | 4a7b95e | 2015-02-20 10:06:43 -0500 | [diff] [blame] | 78 | AudioPrefsVC.h |
Alexandre Lision | f5fc479 | 2015-03-17 09:15:43 -0400 | [diff] [blame] | 79 | AccountsVC.h |
Alexandre Lision | 4a7b95e | 2015-02-20 10:06:43 -0500 | [diff] [blame] | 80 | VideoPrefsVC.h |
| 81 | GeneralPrefsVC.h |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 82 | HistoryViewController.h |
Alexandre Lision | 745e4d6 | 2015-03-22 20:03:10 -0400 | [diff] [blame] | 83 | RingWizardWC.h |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 84 | QNSTreeController.h |
| 85 | MinimalHistoryBackend.h) |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 86 | |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 87 | # Icons |
| 88 | |
| 89 | # NOTE: Don't include the path in MACOSX_BUNDLE_ICON_FILE -- this is |
| 90 | # the property added to Info.plist |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 91 | #SET(MACOSX_BUNDLE_ICON_FILE appicon.icns) |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 92 | |
| 93 | # And this part tells CMake where to find and install the file itself |
| 94 | SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns) |
| 95 | SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES |
| 96 | MACOSX_PACKAGE_LOCATION "Resources") |
| 97 | |
Alexandre Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 98 | SET(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 Lision | 4a7b95e | 2015-02-20 10:06:43 -0500 | [diff] [blame] | 104 | ${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 Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 108 | ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png) |
| 109 | SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 110 | MACOSX_PACKAGE_LOCATION Resources) |
Alexandre Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 111 | |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 112 | ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 113 | ${ringclient_SRCS} |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 114 | ${ringclient_HDRS} |
Alexandre Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 115 | ${myApp_ICON} |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 116 | ${ring_ICONS}) |
| 117 | |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 118 | TARGET_LINK_LIBRARIES( ${PROJ_NAME} |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 119 | ${LIB_RING_CLIENT_LIBRARY} |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 120 | ${Qt5Core_LIBRARIES} |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 121 | ${Qt5Widgets_LIBRARIES} |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 122 | ) |
| 123 | |
Alexandre Lision | f241c6a | 2015-03-24 14:53:47 -0400 | [diff] [blame] | 124 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit") |
| 125 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa") |
| 126 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz") |
| 127 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation") |
| 128 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook") |
| 129 | |
| 130 | # These variables are specific to our plist and are NOT standard CMake variables |
| 131 | set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu") |
| 132 | set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication") |
Alexandre Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 133 | |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 134 | SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES |
| 135 | MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in |
| 136 | MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring" |
| 137 | MACOSX_BUNDLE_SHORT_VERSION_STRING ${RING_VERSION} |
| 138 | MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION} Nightly" |
| 139 | MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION} |
| 140 | MACOSX_BUNDLE_COPYRIGHT "${PROJ_NAME}" |
| 141 | MACOSX_BUNDLE_INFO_STRING "Nightly build of ${PROJ_NAME} ${RING_VERSION} for testing and development" |
| 142 | MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME} |
| 143 | MACOSX_BUNDLE_ICON_FILE "appicon.icns" |
| 144 | ) |
Alexandre Lision | f241c6a | 2015-03-24 14:53:47 -0400 | [diff] [blame] | 145 | |
| 146 | # Make sure we can find the 'ibtool' program. If we can NOT find it we |
| 147 | # skip generation of this project |
| 148 | FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin") |
| 149 | IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND") |
| 150 | MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with |
| 151 | the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin") |
| 152 | endif() |
| 153 | |
| 154 | # Make sure the 'Resources' Directory is correctly created before we build |
| 155 | ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} PRE_BUILD |
| 156 | COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources) |
| 157 | |
| 158 | # Compile the .xib files using the 'ibtool' program with the destination being the app package |
| 159 | FOREACH(xib ${ringclient_XIBS}) |
| 160 | ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD |
| 161 | COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text |
| 162 | --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/${xib}.nib |
| 163 | ${CMAKE_CURRENT_SOURCE_DIR}/${xib}.xib |
| 164 | COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/${xib}.xib") |
| 165 | |
| 166 | ENDFOREACH() |