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 | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 19 | FIND_PACKAGE(Qt5Widgets REQUIRED) |
| 20 | FIND_PACKAGE(LibRingClient REQUIRED) |
| 21 | |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 22 | INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS}) |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 23 | INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) |
| 24 | INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}) |
| 25 | INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR}) |
| 26 | |
| 27 | MESSAGE("LibRingClient is here:" ${LIB_RING_CLIENT_INCLUDE_DIR}) |
| 28 | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") |
| 29 | |
| 30 | #Files to compile |
| 31 | SET(ringclient_SRCS |
Alexandre Lision | 7d2a48b | 2015-03-30 14:59:58 -0400 | [diff] [blame^] | 32 | 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 Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 53 | |
Alexandre Lision | f241c6a | 2015-03-24 14:53:47 -0400 | [diff] [blame] | 54 | SET(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 Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 70 | |
| 71 | SET(ringclient_HDRS |
Alexandre Lision | 7d2a48b | 2015-03-30 14:59:58 -0400 | [diff] [blame^] | 72 | 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 Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 92 | |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 93 | # Icons |
| 94 | |
Alexandre Lision | 5db3e4e | 2015-03-24 17:25:55 -0400 | [diff] [blame] | 95 | # This part tells CMake where to find and install the file itself |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 96 | SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns) |
| 97 | SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES |
| 98 | MACOSX_PACKAGE_LOCATION "Resources") |
| 99 | |
Alexandre Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 100 | SET(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 Lision | 4a7b95e | 2015-02-20 10:06:43 -0500 | [diff] [blame] | 106 | ${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 Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 110 | ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png) |
Alexandre Lision | 5db3e4e | 2015-03-24 17:25:55 -0400 | [diff] [blame] | 111 | |
Alexandre Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 112 | SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 113 | MACOSX_PACKAGE_LOCATION Resources) |
Alexandre Lision | bb30613 | 2015-03-27 11:30:02 -0400 | [diff] [blame] | 114 | SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES |
| 115 | MACOSX_PACKAGE_LOCATION Resources) |
Alexandre Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 116 | |
Alexandre Lision | 5db3e4e | 2015-03-24 17:25:55 -0400 | [diff] [blame] | 117 | # append '.xib' extension before linking xib files in executable |
| 118 | FOREACH(xib ${ringclient_XIBS}) |
Alexandre Lision | 7d2a48b | 2015-03-30 14:59:58 -0400 | [diff] [blame^] | 119 | SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/${xib}.xib) |
Alexandre Lision | 5db3e4e | 2015-03-24 17:25:55 -0400 | [diff] [blame] | 120 | ENDFOREACH() |
| 121 | |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 122 | ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 123 | ${ringclient_SRCS} |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 124 | ${ringclient_HDRS} |
Alexandre Lision | 5db3e4e | 2015-03-24 17:25:55 -0400 | [diff] [blame] | 125 | ${ringclient_XIBS_FOR_EXECUTABLE} |
Alexandre Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 126 | ${myApp_ICON} |
Alexandre Lision | bb30613 | 2015-03-27 11:30:02 -0400 | [diff] [blame] | 127 | Credits.rtf |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 128 | ${ring_ICONS}) |
| 129 | |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 130 | TARGET_LINK_LIBRARIES( ${PROJ_NAME} |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 131 | ${LIB_RING_CLIENT_LIBRARY} |
Alexandre Lision | 5855b6a | 2015-02-03 11:31:05 -0500 | [diff] [blame] | 132 | ${Qt5Core_LIBRARIES} |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 133 | ${Qt5Widgets_LIBRARIES} |
Alexandre Lision | 10e86dd | 2015-01-19 16:11:14 -0500 | [diff] [blame] | 134 | ) |
| 135 | |
Alexandre Lision | f241c6a | 2015-03-24 14:53:47 -0400 | [diff] [blame] | 136 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit") |
| 137 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa") |
| 138 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz") |
| 139 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation") |
| 140 | SET(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 |
| 143 | set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu") |
| 144 | set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication") |
Alexandre Lision | 392ee72 | 2015-01-23 16:27:10 -0500 | [diff] [blame] | 145 | |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 146 | SET_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 Lision | bb30613 | 2015-03-27 11:30:02 -0400 | [diff] [blame] | 149 | MACOSX_BUNDLE_SHORT_VERSION_STRING ${RING_VERSION_NAME} |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 150 | MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION} Nightly" |
| 151 | MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION} |
Alexandre Lision | bb30613 | 2015-03-27 11:30:02 -0400 | [diff] [blame] | 152 | MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}" |
Alexandre Lision | b47b4c8 | 2015-01-20 11:29:03 -0500 | [diff] [blame] | 153 | 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 Lision | f241c6a | 2015-03-24 14:53:47 -0400 | [diff] [blame] | 157 | |
| 158 | # Make sure we can find the 'ibtool' program. If we can NOT find it we |
| 159 | # skip generation of this project |
| 160 | FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin") |
| 161 | IF(${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") |
| 164 | endif() |
| 165 | |
| 166 | # Make sure the 'Resources' Directory is correctly created before we build |
| 167 | ADD_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 |
| 171 | FOREACH(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 Lision | 7d2a48b | 2015-03-30 14:59:58 -0400 | [diff] [blame^] | 175 | ${CMAKE_CURRENT_SOURCE_DIR}/ui/${xib}.xib |
| 176 | COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/${xib}.xib") |
Alexandre Lision | f241c6a | 2015-03-24 14:53:47 -0400 | [diff] [blame] | 177 | |
| 178 | ENDFOREACH() |
Alexandre Lision | e7e01ba | 2015-03-30 13:30:51 -0400 | [diff] [blame] | 179 | |
| 180 | set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX}) |
| 181 | |
| 182 | SET(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 |
| 187 | INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime) |
| 188 | |
| 189 | SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins/platforms) |
| 190 | #-------------------------------------------------------------------------------- |
| 191 | # Install needed Qt plugins by copying directories from the qt installation |
| 192 | LIST(APPEND QT_PLUGINS Qt5::QTgaPlugin Qt5::QTiffPlugin Qt5::QCocoaIntegrationPlugin) |
| 193 | FOREACH(plugin ${QT_PLUGINS}) |
| 194 | GET_TARGET_PROPERTY(_loc ${plugin} LOCATION) |
| 195 | INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR} COMPONENT Runtime) |
| 196 | ENDFOREACH() |
| 197 | |
| 198 | # directories to look for dependencies |
| 199 | SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib ${QT_LIB_DIR}) |
| 200 | |
| 201 | INSTALL(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 | #================================ |
| 212 | SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME}) |
| 213 | SET( CPACK_PACKAGE_NAME ${PROJ_NAME} ) |
| 214 | SET( CPACK_PACKAGE_CONTACT "Alexandre Lision") |
| 215 | SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux") |
| 216 | SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION}) |
| 217 | SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION}) |
| 218 | SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION}) |
| 219 | SET(CPACK_BINARY_DRAGNDROP ON) |
| 220 | SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}") |
| 221 | INCLUDE(CPack) |