~ubuntu-branches/ubuntu/trusty/tomahawk/trusty-proposed

« back to all changes in this revision

Viewing changes to CMakeLists.txt

  • Committer: Package Import Robot
  • Author(s): Harald Sitter
  • Date: 2013-03-07 21:50:13 UTC
  • Revision ID: package-import@ubuntu.com-20130307215013-6gdjkdds7i9uenvs
Tags: upstream-0.6.0+dfsg
ImportĀ upstreamĀ versionĀ 0.6.0+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
PROJECT( tomahawk )
 
2
CMAKE_MINIMUM_REQUIRED( VERSION 2.8.6 )
 
3
SET( CMAKE_MODULE_PATH  "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules" )
 
4
CMAKE_POLICY(SET CMP0017 NEW)
 
5
 
 
6
###
 
7
### Tomahawk application info
 
8
###
 
9
SET( TOMAHAWK_ORGANIZATION_NAME "Tomahawk" )
 
10
SET( TOMAHAWK_ORGANIZATION_DOMAIN "tomahawk-player.org" )
 
11
SET( TOMAHAWK_APPLICATION_NAME  "Tomahawk" )
 
12
SET( TOMAHAWK_DESCRIPTION_SUMMARY "The social media player" )
 
13
 
 
14
SET( TOMAHAWK_VERSION_MAJOR 0 )
 
15
SET( TOMAHAWK_VERSION_MINOR 6 )
 
16
SET( TOMAHAWK_VERSION_PATCH 0 )
 
17
#SET( TOMAHAWK_VERSION_RC 0 )
 
18
 
 
19
SET( TOMAHAWK_TRANSLATION_LANGUAGES ar bg bn_IN ca cs de en el es fi fr hi_IN hu gl it ja lt pl pt_BR ru sv tr zh_CN zh_TW )
 
20
 
 
21
# enforce proper symbol exporting on all platforms
 
22
add_definitions( "-fvisibility=hidden" )
 
23
# enforce using constBegin, constEnd for const-iterators
 
24
add_definitions( "-DQT_STRICT_ITERATORS" )
 
25
 
 
26
# build options
 
27
option(BUILD_GUI "Build Tomahawk with GUI" ON)
 
28
option(BUILD_RELEASE "Generate TOMAHAWK_VERSION without GIT info" OFF)
 
29
option(WITH_BREAKPAD "Build with breakpad integration" ON)
 
30
option(WITH_CRASHREPORTER "Build with CrashReporter" ON)
 
31
option(WITH_BINARY_ATTICA "Enable support for downloading binary resolvers automatically" ON)
 
32
option(LEGACY_KDE_INTEGRATION "Install tomahawk.protocol file, deprecated since 4.6.0" OFF)
 
33
 
 
34
IF( CMAKE_SYSTEM_PROCESSOR MATCHES "arm" )
 
35
    message(STATUS "Build of breakpad library disabled on this platform.")
 
36
    SET(WITH_BREAKPAD OFF)
 
37
    SET(WITH_CRASHREPORTER OFF)
 
38
ENDIF()
 
39
 
 
40
# add definitions based on build options
 
41
IF( WITH_BREAKPAD )
 
42
    message(STATUS "Build with support for breakpad.")
 
43
    IF( CMAKE_COMPILER_IS_GNUCXX )
 
44
        ADD_DEFINITIONS( -DSTDC_HEADERS -std=gnu++98 )
 
45
#        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSTDC_HEADERS -std=gnu++98" )
 
46
    ENDIF()
 
47
ENDIF()
 
48
 
 
49
# generate version string
 
50
 
 
51
# base string used in release and unstable builds
 
52
SET( TOMAHAWK_VERSION ${TOMAHAWK_VERSION_MAJOR}.${TOMAHAWK_VERSION_MINOR}.${TOMAHAWK_VERSION_PATCH} )
 
53
IF( TOMAHAWK_VERSION_RC )
 
54
  SET( TOMAHAWK_VERSION ${TOMAHAWK_VERSION}rc${TOMAHAWK_VERSION_RC} )
 
55
ENDIF()
 
56
 
 
57
# additional info for non-release builds
 
58
IF( NOT BUILD_RELEASE AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git/" )
 
59
    INCLUDE( CMakeDateStamp )
 
60
    SET( TOMAHAWK_VERSION_DATE "${CMAKE_DATESTAMP_YEAR}${CMAKE_DATESTAMP_MONTH}${CMAKE_DATESTAMP_DAY}" )
 
61
    IF( TOMAHAWK_VERSION_DATE GREATER 0)
 
62
        SET( TOMAHAWK_VERSION ${TOMAHAWK_VERSION}.${TOMAHAWK_VERSION_DATE} )
 
63
    ENDIF()
 
64
 
 
65
    INCLUDE( CMakeVersionSource )
 
66
    IF( CMAKE_VERSION_SOURCE )
 
67
        SET( TOMAHAWK_VERSION ${TOMAHAWK_VERSION}-${CMAKE_VERSION_SOURCE} )
 
68
    ENDIF()
 
69
ENDIF()
 
70
 
 
71
 
 
72
# set paths
 
73
SET( THIRDPARTY_DIR  ${CMAKE_SOURCE_DIR}/thirdparty )
 
74
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
 
75
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
 
76
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
 
77
 
 
78
# make predefined install dirs available everywhere
 
79
INCLUDE( GNUInstallDirs )
 
80
 
 
81
# installer creation
 
82
INCLUDE( TomahawkCPack.cmake )
 
83
 
 
84
#deps
 
85
INCLUDE( MacroOptionalFindPackage )
 
86
INCLUDE( MacroLogFeature )
 
87
 
 
88
# Check if we need qtgui:
 
89
SET(NEEDED_QT4_COMPONENTS QtCore QtXml QtNetwork )
 
90
IF( NOT BUILD_GUI )
 
91
    ADD_DEFINITIONS( -DENABLE_HEADLESS )
 
92
    MESSAGE( STATUS "Building Tomahawk ${TOMAHAWK_VERSION} in HEADLESS mode ***" )
 
93
ELSE()
 
94
    MESSAGE( STATUS "Building Tomahawk ${TOMAHAWK_VERSION} full GUI version ***" )
 
95
    LIST(APPEND NEEDED_QT4_COMPONENTS "QtGui" "QtWebkit" "QtUiTools" )
 
96
ENDIF()
 
97
 
 
98
IF( BUILD_GUI AND UNIX AND NOT APPLE )
 
99
    FIND_PACKAGE( X11 )
 
100
ENDIF()
 
101
 
 
102
macro_optional_find_package(Qt4 4.7.0 COMPONENTS ${NEEDED_QT4_COMPONENTS} )
 
103
macro_log_feature(QT4_FOUND "Qt" "A cross-platform application and UI framework" "http://qt.nokia.com" TRUE "" "If you see this, although libqt4-devel is installed, check whether the \n     qtwebkit-devel package and whatever contains QtUiTools is installed too")
 
104
 
 
105
macro_optional_find_package(Phonon 4.5.0)
 
106
macro_log_feature(PHONON_FOUND "Phonon" "The Phonon multimedia library" "http://phonon.kde.org" TRUE "" "")
 
107
if(PHONON_FOUND)
 
108
    message(STATUS "Phonon found; ensure that phonon-vlc is at least 0.4")
 
109
endif()
 
110
 
 
111
macro_optional_find_package(Echonest 2.0.0)
 
112
macro_log_feature(ECHONEST_FOUND "Echonest" "Qt library for communicating with The Echo Nest" "http://projects.kde.org/libechonest" TRUE "" "libechonest 2.0.0 is needed for dynamic playlists and the infosystem")
 
113
 
 
114
macro_optional_find_package(CLucene 0.9.23)
 
115
macro_log_feature(CLucene_FOUND "CLucene" "The open-source, C++ search engine" "http://clucene.sf.net" TRUE "" "CLucene is used for indexing the collection")
 
116
 
 
117
macro_optional_find_package(QJSON)
 
118
macro_log_feature(QJSON_FOUND "QJson" "Qt library that maps JSON data to QVariant objects" "http://qjson.sf.net" TRUE "" "libqjson is used for encoding communication between Tomahawk instances")
 
119
 
 
120
macro_optional_find_package(Taglib 1.6.0)
 
121
macro_log_feature(TAGLIB_FOUND "TagLib" "Audio Meta-Data Library" "http://developer.kde.org/~wheeler/taglib.html" TRUE "" "taglib is needed for reading meta data from audio files")
 
122
include( CheckTagLibFileName )
 
123
check_taglib_filename( COMPLEX_TAGLIB_FILENAME )
 
124
 
 
125
macro_optional_find_package(Boost)
 
126
macro_log_feature(Boost_FOUND "Boost" "Provides free peer-reviewed portable C++ source libraries" "http://www.boost.org" TRUE "" "") #FIXME: give useful explaination
 
127
 
 
128
macro_optional_find_package(QCA2)
 
129
macro_log_feature(QCA2_FOUND "QCA2" "Provides encryption and signing functions required for Grooveshark resolver" "http://delta.affinix.com/qca/" TRUE "" "")
 
130
 
 
131
macro_optional_find_package(LibAttica 0.4.0)
 
132
macro_log_feature(LIBATTICA_FOUND "libattica" "Provides support for installation of resolvers from the Tomahawk website" "https://projects.kde.org/projects/kdesupport/attica" TRUE "" "")
 
133
 
 
134
macro_optional_find_package(QuaZip)
 
135
macro_log_feature(QuaZip_FOUND "QuaZip" "Provides support for extracting downloaded resolvers automatically." "http://quazip.sourceforge.net/" TRUE "" "")
 
136
 
 
137
macro_optional_find_package(Jreen 1.0.5)
 
138
macro_log_feature(JREEN_FOUND "Jreen" "Qt XMPP Library" "http://qutim.org/jreen / https://github.com/euroelessar/jreen" FALSE "" "Jreen is needed for the Jabber SIP plugin.\n")
 
139
if(PC_JREEN_VERSION STREQUAL "1.1.0")
 
140
    message(FATAL_ERROR "Jreen 1.1.0 has a very annoying bug that breaks accepting auth requests in Tomahawk. Please upgrade to 1.1.1 or downgrade to 1.0.5.")
 
141
endif()
 
142
 
 
143
macro_optional_find_package(QTweetLib)
 
144
macro_log_feature(QTWEETLIB_FOUND "QTweetLib" "Qt Twitter Library" "https://github.com/minimoog/QTweetLib" FALSE "" "QTweetLib is needed for the Twitter SIP plugin.\n")
 
145
 
 
146
macro_optional_find_package(LibLastFm 1.0.0)
 
147
macro_log_feature(LIBLASTFM_FOUND "liblastfm" "Qt library for the Last.fm webservices" "https://github.com/eartle/liblastfm" TRUE "" "liblastfm is needed for scrobbling tracks to Last.fm and fetching cover artwork")
 
148
 
 
149
IF( WIN32 )
 
150
    macro_optional_find_package(QtSparkle)
 
151
    macro_log_feature(QTSPARKLE_FOUND "qtsparkle" "Library for creating auto updaters written in Qt" "https://github.com/davidsansome/qtsparkle" FALSE "" "")
 
152
ENDIF( WIN32 )
 
153
 
 
154
#### submodules start
 
155
# automatically init submodules here, don't delete this code we may add submodules again
 
156
 
 
157
# this installs headers and such and should really be handled in a separate package by packagers
 
158
 
 
159
# IF( FALSE )
 
160
#     IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.gitmodules)
 
161
#         EXECUTE_PROCESS(COMMAND git submodule init WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
 
162
#         EXECUTE_PROCESS(COMMAND git submodule update WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
 
163
#     ENDIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.gitmodules)
 
164
# ENDIF()
 
165
 
 
166
#### submodules end
 
167
 
 
168
### libportfwd
 
169
SET( LIBPORTFWD_INCLUDE_DIR ${THIRDPARTY_DIR}/libportfwd/include )
 
170
SET( LIBPORTFWD_LIBRARY tomahawk_portfwd )
 
171
SET( LIBPORTFWD_LIBRARIES ${LIBPORTFWD_LIBRARY} )
 
172
ADD_SUBDIRECTORY( ${THIRDPARTY_DIR}/libportfwd )
 
173
 
 
174
# we need pthreads too
 
175
macro_optional_find_package(Threads)
 
176
macro_log_feature(THREADS_FOUND "Threads" "Threading Library" "" TRUE "" "Platform specific library for threading")
 
177
 
 
178
macro_optional_find_package(KDE4)
 
179
macro_optional_find_package(KDE4Installed)
 
180
 
 
181
# this was used before we had FindKDE4Installed, just leaving it here to keep the flags
 
182
# for future kde integration
 
183
 
 
184
# macro_optional_find_package(KDE4)
 
185
IF(KDE4_FOUND)
 
186
    IF( CMAKE_C_FLAGS )
 
187
        # KDE4 adds and removes some compiler flags that we don't like
 
188
        # (only for gcc not for clang e.g.)
 
189
        STRING( REPLACE "-std=iso9899:1990" "" CLEAN_C_FLAGS ${CMAKE_C_FLAGS} )
 
190
        SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions" )
 
191
    ENDIF()
 
192
ELSE()
 
193
    SET( CLEAN_C_FLAGS ${CMAKE_C_FLAGS} )
 
194
ENDIF()
 
195
 
 
196
#show dep log
 
197
macro_display_feature_log()
 
198
 
 
199
SET( INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" )
 
200
 
 
201
# make uninstall support
 
202
CONFIGURE_FILE(
 
203
  "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
 
204
  "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
 
205
  IMMEDIATE @ONLY)
 
206
 
 
207
# KDE4 defines an uninstall target for us automatically
 
208
IF( NOT KDE4_FOUND )
 
209
    ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
 
210
ENDIF()
 
211
 
 
212
IF( NOT APPLE )
 
213
    # Make linking as strict on linux as it is on osx. Then we don't break linking on mac so often
 
214
    SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--no-undefined" )
 
215
ENDIF( NOT APPLE )
 
216
 
 
217
SET( TOMAHAWK_LIBRARIES tomahawklib )
 
218
 
 
219
ADD_SUBDIRECTORY( thirdparty )
 
220
ADD_SUBDIRECTORY( src )
 
221
ADD_SUBDIRECTORY( src/libtomahawk )
 
222
ADD_SUBDIRECTORY( admin )