~ubuntu-branches/ubuntu/trusty/jreen/trusty

« back to all changes in this revision

Viewing changes to CMakeLists.txt

  • Committer: Package Import Robot
  • Author(s): Prasad Murthy
  • Date: 2013-03-08 00:00:33 UTC
  • Revision ID: package-import@ubuntu.com-20130308000033-x8thp6syo1kkh63s
Tags: upstream-1.1.1
ImportĀ upstreamĀ versionĀ 1.1.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
CMAKE_MINIMUM_REQUIRED( VERSION 2.6 )
 
2
PROJECT(Jreen)
 
3
 
 
4
LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
 
5
 
 
6
set(CMAKE_JREEN_VERSION_MAJOR 1 CACHE INT "Major Jreen version number" FORCE)
 
7
set(CMAKE_JREEN_VERSION_MINOR 1 CACHE INT "Minor Jreen version number" FORCE)
 
8
set(CMAKE_JREEN_VERSION_PATCH 1 CACHE INT "Release Jreen version number" FORCE)
 
9
set(CMAKE_JREEN_VERSION_STRING "${CMAKE_JREEN_VERSION_MAJOR}.${CMAKE_JREEN_VERSION_MINOR}.${CMAKE_JREEN_VERSION_PATCH}" CACHE STRING "Jreen version string" FORCE)
 
10
 
 
11
# Search for source and headers in source directory (non-recursive)
 
12
FILE(GLOB_RECURSE SRC "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
 
13
FILE(GLOB_RECURSE HDR "${CMAKE_CURRENT_SOURCE_DIR}/src/*.h")
 
14
 
 
15
# Require QT 4.6
 
16
SET(QT_MIN_VERSION "4.6.0")
 
17
 
 
18
# Search for QT4
 
19
FIND_PACKAGE(Qt4 COMPONENTS QtCore QtNetwork REQUIRED)
 
20
INCLUDE(${QT_USE_FILE})
 
21
INCLUDE(jreenMacros)
 
22
FIND_PACKAGE(QCA2 REQUIRED)
 
23
 
 
24
if( JREEN_BUILD_INTERNAL )
 
25
        add_definitions( "-DJ_BUILD_INTERNAL" )
 
26
endif()
 
27
FIND_PACKAGE(PkgConfig)
 
28
 
 
29
#pkg_search_module(NICE nice)
 
30
#if(NOT NICE_FOUND)
 
31
#       message(STATUS "Could not find nice library.")
 
32
#else(NOT NICE_FOUND)
 
33
#       message(STATUS "Nice library is found.")
 
34
#       include_directories(${NICE_INCLUDE_DIRS})
 
35
#       ADD_DEFINITIONS("-DJREEN_HAVE_NICE=1")
 
36
#endif(NOT NICE_FOUND)
 
37
 
 
38
pkg_search_module(SPEEX speex)
 
39
if(NOT SPEEX_FOUND)
 
40
        message(STATUS "Could not find speex library.")
 
41
else(NOT SPEEX_FOUND)
 
42
        message(STATUS "Speex library is found.")
 
43
        include_directories(${SPEEX_INCLUDE_DIRS})
 
44
        ADD_DEFINITIONS("-DJREEN_HAVE_SPEEX=1")
 
45
endif(NOT SPEEX_FOUND)
 
46
 
 
47
# FindZLIB is broken on Ubuntu, so find the library using pkg-config
 
48
if(LINUX)
 
49
        find_package(PkgConfig)
 
50
        pkg_search_module(ZLIB_PKGCONF REQUIRED zlib)
 
51
        find_path(ZLIB_INCLUDE_DIR
 
52
          NAMES zlib.h
 
53
          PATHS ${ZLIB_PKGCONF_INCLUDE_DIRS}
 
54
        )
 
55
        find_library(ZLIB_LIBRARIES
 
56
          NAMES z
 
57
          PATHS ${ZLIB_PKGCONF_LIBRARY_DIRS}
 
58
        )
 
59
        if(NOT ZLIB_INCLUDE_DIR)
 
60
          message(SEND_ERROR "Could not find zlib includes.")
 
61
        endif(NOT ZLIB_INCLUDE_DIR)
 
62
        if(NOT ZLIB_LIBRARIES)
 
63
          message(SEND_ERROR "Could not find zlib library.")
 
64
        endif(NOT ZLIB_LIBRARIES)
 
65
 
 
66
 
 
67
else()
 
68
        find_package(ZLIB REQUIRED)
 
69
endif()
 
70
 
 
71
#add_subdirectory(3rdparty)
 
72
 
 
73
#spike
 
74
 
 
75
# Add include directories
 
76
INCLUDE_DIRECTORIES(.
 
77
        ${CMAKE_CURRENT_BINARY_DIR}
 
78
        3rdparty
 
79
        ${QCA2_INCLUDE_DIR}
 
80
        ${ZLIB_INCLUDE_DIR}
 
81
)
 
82
 
 
83
LIST(APPEND SRC ${3RD_PARTY_SRC_C})
 
84
LIST(APPEND SRC ${3RD_PARTY_SRC})
 
85
LIST(APPEND HDR ${3RD_PARTY_HDR})
 
86
 
 
87
# Ice support
 
88
option(JREEN_USE_IRISICE "Use ICE from IRIS" OFF)
 
89
if (JREEN_USE_IRISICE)
 
90
        file(GLOB_RECURSE ICESUPPORT_SRC "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/icesupport/*.cpp")
 
91
        file(GLOB_RECURSE ICESUPPORT_SRC_C "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/icesupport/*.c")
 
92
        file(GLOB_RECURSE ICESUPPORT_HDR "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/icesupport/*.h")
 
93
        list(APPEND SRC ${ICESUPPORT_SRC})
 
94
        list(APPEND SRC ${ICESUPPORT_SRC_C})
 
95
        list(APPEND HDR ${ICESUPPORT_HDR})
 
96
        add_definitions("-DHAVE_IRISICE")
 
97
endif()
 
98
 
 
99
option(JREEN_USE_SIMPLESASL "Use SimpleSASL" ON)
 
100
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/simplesasl")
 
101
        set(JREEN_USE_SIMPLESASL OFF)
 
102
        message("Using cyrus sasl auth")
 
103
endif()
 
104
if(JREEN_USE_SIMPLESASL)
 
105
        message("Using simple sasl auth instead cyrus sasl")
 
106
        add_definitions("-DHAVE_SIMPLESASL")
 
107
        file(GLOB_RECURSE SIMPLESASL_SRC "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/simplesasl/*.cpp")
 
108
        file(GLOB_RECURSE SIMPLESASL_SRC_C "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/simplesasl/*.c")
 
109
        file(GLOB_RECURSE SIMPLESASL_HDR "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/simplesasl/*.h")
 
110
        list(APPEND SRC ${SIMPLESASL_SRC})
 
111
        list(APPEND SRC ${SIMPLESASL_SRC_C})
 
112
        list(APPEND HDR ${SIMPLESASL_HDR})
 
113
endif()
 
114
 
 
115
option(JREEN_USE_SYSTEM_JDNS "Use system JDNS" OFF)
 
116
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jdns")
 
117
        set(JREEN_USE_SYSTEM_JDNS ON)
 
118
endif()
 
119
if(JREEN_USE_SYSTEM_JDNS)
 
120
        # For Linux it was found already before at line 29
 
121
        if(NOT LINUX)
 
122
                find_package(PkgConfig)
 
123
        endif()
 
124
        pkg_search_module(JDNS REQUIRED qjdns)
 
125
        include_directories(${JDNS_INCLUDE_DIR})
 
126
        list(APPEND EXTRA_LIBS ${JDNS_LIBRARIES})
 
127
else()
 
128
        file(GLOB_RECURSE JDNS_SRC "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jdns/*.cpp")
 
129
        file(GLOB_RECURSE JDNS_SRC_C "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jdns/*.c")
 
130
        file(GLOB_RECURSE JDNS_HDR "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jdns/*.h")
 
131
        list(APPEND SRC ${JDNS_SRC})
 
132
        list(APPEND SRC ${JDNS_SRC_C})
 
133
        list(APPEND HDR ${JDNS_HDR})
 
134
        include_directories("${CMAKE_CURRENT_SOURCE_DIR}/3rdparty")
 
135
endif()
 
136
 
 
137
# Generate moc files
 
138
JREEN_WRAP_CPP(MOC_SRC ${HDR})
 
139
 
 
140
# This project will generate library
 
141
 
 
142
if(SYMBIAN)
 
143
        set(JREEN_BUILD_TYPE STATIC)
 
144
else()
 
145
set(JREEN_BUILD_TYPE SHARED)
 
146
endif()
 
147
 
 
148
ADD_LIBRARY(jreen ${JREEN_BUILD_TYPE} ${SRC} ${MOC_SRC} ${HDR} )
 
149
 
 
150
#compiler flags
 
151
#fixme add macro to clang
 
152
if(CMAKE_COMPILER_IS_GNUCXX)
 
153
        IF(SYMBIAN)
 
154
                #disable stupid warnings
 
155
                ADD_DEFINITIONS("-w")
 
156
        ELSE()
 
157
                ADD_DEFINITIONS("-Wall -Wextra" ) #add -Werror
 
158
        ENDIF()
 
159
        if(NOT WIN32)
 
160
                ADD_DEFINITIONS("-fvisibility=hidden" )
 
161
        endif(NOT WIN32)
 
162
elseif(MSVC)
 
163
        ADD_DEFINITIONS("/W3" )
 
164
endif()
 
165
 
 
166
set_target_properties(jreen PROPERTIES
 
167
        VERSION ${CMAKE_JREEN_VERSION_STRING}
 
168
        SOVERSION ${CMAKE_JREEN_VERSION_MAJOR}
 
169
        DEFINE_SYMBOL J_BUILD_LIBRARY
 
170
)
 
171
 
 
172
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/include/jreen" )
 
173
file(GLOB_RECURSE JREEN_INCLUDE_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/src" "${CMAKE_CURRENT_SOURCE_DIR}/src/*.h")
 
174
foreach(header ${JREEN_INCLUDE_HEADERS})
 
175
        if(NOT ${header} MATCHES ".*_p\\.h")
 
176
                if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/include/jreen/${header}")
 
177
                        file( WRITE "${CMAKE_CURRENT_BINARY_DIR}/include/jreen/${header}"
 
178
                "#include \"${CMAKE_CURRENT_SOURCE_DIR}/src/${header}\"
 
179
        "
 
180
                        )
 
181
                endif(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/include/jreen/${header}")
 
182
                get_filename_component(headerPath ${header} PATH)
 
183
                install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/${header}"
 
184
                                DESTINATION include/jreen/${headerPath}
 
185
                                COMPONENT jreenDevel
 
186
                )
 
187
    endif(NOT ${header} MATCHES ".*_p\\.h")
 
188
endforeach(header)
 
189
 
 
190
set(JREEN_LIBRARIES jreen CACHE INTERNAL "" )
 
191
set(JREEN_INCLUDE_DIRS "${CMAKE_CURRENT_BINARY_DIR}/include" CACHE INTERNAL "")
 
192
 
 
193
IF(WIN32)
 
194
        LIST(APPEND EXTRA_LIBS ws2_32)
 
195
ENDIF()
 
196
#IF(NICE_FOUND)
 
197
#       LIST(APPEND EXTRA_LIBS ${NICE_LIBRARIES})
 
198
#ENDIF(NICE_FOUND)
 
199
IF(SPEEX_FOUND)
 
200
        LIST(APPEND EXTRA_LIBS ${SPEEX_LIBRARIES})
 
201
ENDIF(SPEEX_FOUND)
 
202
 
 
203
# Link with Qt
 
204
#IF(SYMBIAN)
 
205
#ENDIF()
 
206
 
 
207
JREEN_TARGET_LINK_LIBRARIES(jreen
 
208
        ${QT_LIBRARIES}
 
209
        ${QCA2_LIBRARIES}
 
210
        ${ZLIB_LIBRARIES}
 
211
        ${EXTRA_LIBS}
 
212
)
 
213
 
 
214
# Install package config file
 
215
if(NOT WIN32)
 
216
        configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/libjreen.pc.cmake
 
217
                ${CMAKE_CURRENT_BINARY_DIR}/libjreen.pc
 
218
        )
 
219
        install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libjreen.pc
 
220
        DESTINATION lib${LIB_SUFFIX}/pkgconfig
 
221
)
 
222
endif(NOT WIN32)
 
223
 
 
224
install( TARGETS jreen
 
225
        RUNTIME DESTINATION bin
 
226
                COMPONENT jreen
 
227
        LIBRARY DESTINATION lib${LIB_SUFFIX}
 
228
                COMPONENT jreen
 
229
        ARCHIVE DESTINATION lib${LIB_SUFFIX}
 
230
                COMPONENT jreenDevel
 
231
        BUNDLE DESTINATION library
 
232
)
 
233