CMakeLists.txt 5.86 KB
Newer Older
Alexandre Lision's avatar
Alexandre Lision committed
1 2 3 4 5 6
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

IF(POLICY CMP0022)
  CMAKE_POLICY(SET CMP0022 NEW)
ENDIF(POLICY CMP0022)

7
SET(PROJ_NAME Ring)
8 9 10 11 12
SET(RING_VERSION "0.1.x")
SET(RING_VERSION_NAME "Samuel de Champlain")
SET(BUNDLE_VERSION "Samuel de Champlain (0.1.x")

SET(PROJ_COPYRIGHT " © 2015 Savoir-faire Linux \n GPLv3 https://www.gnu.org/copyleft/gpl.html")
13

Alexandre Lision's avatar
Alexandre Lision committed
14
ADD_DEFINITIONS("-std=c++11")
Alexandre Lision's avatar
Alexandre Lision committed
15

Alexandre Lision's avatar
Alexandre Lision committed
16
PROJECT(${PROJ_NAME})
Alexandre Lision's avatar
Alexandre Lision committed
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

FIND_PACKAGE(Qt5Core REQUIRED)
FIND_PACKAGE(Qt5Widgets REQUIRED)
FIND_PACKAGE(LibRingClient REQUIRED)

INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR})
INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})

MESSAGE("LibRingClient is here:" ${LIB_RING_CLIENT_INCLUDE_DIR})
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")

#Files to compile
SET(ringclient_SRCS
Alexandre Lision's avatar
Alexandre Lision committed
32 33 34 35
   main.mm
   AppDelegate.mm
   RingWindowController.mm
   ConversationsViewController.mm
Alexandre Lision's avatar
Alexandre Lision committed
36
   PreferencesViewController.mm
Alexandre Lision's avatar
Alexandre Lision committed
37
   QNSTreeController.mm
38 39 40 41 42 43 44
   AccGeneralVC.mm
   AccAudioVC.mm
   AccVideoVC.mm
   AccRingVC.mm
   AccAdvancedVC.mm
   AccSecurityVC.mm
   AccountsVC.mm
45
   CurrentCallVC.mm
Alexandre Lision's avatar
Alexandre Lision committed
46 47 48
   AudioPrefsVC.mm
   VideoPrefsVC.mm
   GeneralPrefsVC.mm
49
   RingWizardWC.mm
Alexandre Lision's avatar
Alexandre Lision committed
50
   HistoryViewController.mm
Alexandre Lision's avatar
Alexandre Lision committed
51
   MinimalHistoryBackend.mm)
Alexandre Lision's avatar
Alexandre Lision committed
52

53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
SET(ringclient_XIBS
   MainMenu
   RingWindow
   CurrentCall
   GeneralPrefs
   Accounts
   AccGeneral
   AccAudio
   AccVideo
   AccRing
   AccAdvanced
   AccSecurity
   AudioPrefs
   VideoPrefs
   PreferencesScreen
   RingWizard)
Alexandre Lision's avatar
Alexandre Lision committed
69 70

SET(ringclient_HDRS
Alexandre Lision's avatar
Alexandre Lision committed
71 72
   AppDelegate.h
   RingWindowController.h
73
   CurrentCallVC.h
Alexandre Lision's avatar
Alexandre Lision committed
74
   ConversationsViewController.h
Alexandre Lision's avatar
Alexandre Lision committed
75
   PreferencesViewController.h
76 77 78 79 80 81
   AccGeneralVC.h
   AccVideoVC.h
   AccAudioVC.h
   AccRingVC.h
   AccAdvancedVC.h
   AccSecurityVC.h
Alexandre Lision's avatar
Alexandre Lision committed
82
   AudioPrefsVC.h
83
   AccountsVC.h
Alexandre Lision's avatar
Alexandre Lision committed
84 85
   VideoPrefsVC.h
   GeneralPrefsVC.h
Alexandre Lision's avatar
Alexandre Lision committed
86
   HistoryViewController.h
87
   RingWizardWC.h
Alexandre Lision's avatar
Alexandre Lision committed
88 89
   QNSTreeController.h
   MinimalHistoryBackend.h)
Alexandre Lision's avatar
Alexandre Lision committed
90 91 92

# Icons

93
# This part tells CMake where to find and install the file itself
Alexandre Lision's avatar
Alexandre Lision committed
94 95 96 97
SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns)
SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
       MACOSX_PACKAGE_LOCATION "Resources")

Alexandre Lision's avatar
Alexandre Lision committed
98 99 100 101 102 103
SET(ring_ICONS ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_email.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_new_email.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
Alexandre Lision's avatar
Alexandre Lision committed
104 105 106 107
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ancrage.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png
Alexandre Lision's avatar
Alexandre Lision committed
108
${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png)
109

Alexandre Lision's avatar
Alexandre Lision committed
110
SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
Alexandre Lision's avatar
Alexandre Lision committed
111
       MACOSX_PACKAGE_LOCATION Resources)
112 113
SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
       MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision's avatar
Alexandre Lision committed
114

115 116 117 118 119
# append '.xib' extension before linking xib files in executable
FOREACH(xib ${ringclient_XIBS})
  SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ${xib}.xib)
ENDFOREACH()

120
ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE
Alexandre Lision's avatar
Alexandre Lision committed
121
   ${ringclient_SRCS}
Alexandre Lision's avatar
Alexandre Lision committed
122
   ${ringclient_HDRS}
123
   ${ringclient_XIBS_FOR_EXECUTABLE}
Alexandre Lision's avatar
Alexandre Lision committed
124
   ${myApp_ICON}
125
   Credits.rtf
Alexandre Lision's avatar
Alexandre Lision committed
126 127
   ${ring_ICONS})

128
TARGET_LINK_LIBRARIES( ${PROJ_NAME}
Alexandre Lision's avatar
Alexandre Lision committed
129
   ${LIB_RING_CLIENT_LIBRARY}
Alexandre Lision's avatar
Alexandre Lision committed
130
   ${Qt5Core_LIBRARIES}
Alexandre Lision's avatar
Alexandre Lision committed
131 132 133
   ${Qt5Widgets_LIBRARIES}
)

134 135 136 137 138 139 140 141 142
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook")

# These variables are specific to our plist and are NOT standard CMake variables
set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu")
set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
Alexandre Lision's avatar
Alexandre Lision committed
143

144 145 146
SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
        MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
        MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring"
147
        MACOSX_BUNDLE_SHORT_VERSION_STRING ${RING_VERSION_NAME}
148 149
        MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION} Nightly"
        MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
150
        MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
151 152 153 154
        MACOSX_BUNDLE_INFO_STRING "Nightly build of ${PROJ_NAME} ${RING_VERSION} for testing and development"
        MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
        MACOSX_BUNDLE_ICON_FILE "appicon.icns"
    )
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176

# Make sure we can find the 'ibtool' program. If we can NOT find it we
# skip generation of this project
FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
  MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
                    the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
endif()

# Make sure the 'Resources' Directory is correctly created before we build
ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} PRE_BUILD
                      COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources)

# Compile the .xib files using the 'ibtool' program with the destination being the app package
FOREACH(xib ${ringclient_XIBS})
  ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
                      COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
                              --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/${xib}.nib
                             ${CMAKE_CURRENT_SOURCE_DIR}/${xib}.xib
                      COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/${xib}.xib")

ENDFOREACH()