1
CMAKE_MINIMUM_REQUIRED( VERSION 2.6 )
4
LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
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)
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")
16
SET(QT_MIN_VERSION "4.6.0")
19
FIND_PACKAGE(Qt4 COMPONENTS QtCore QtNetwork REQUIRED)
20
INCLUDE(${QT_USE_FILE})
22
FIND_PACKAGE(QCA2 REQUIRED)
24
if( JREEN_BUILD_INTERNAL )
25
add_definitions( "-DJ_BUILD_INTERNAL" )
27
FIND_PACKAGE(PkgConfig)
29
#pkg_search_module(NICE nice)
31
# message(STATUS "Could not find nice library.")
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)
38
pkg_search_module(SPEEX speex)
40
message(STATUS "Could not find speex library.")
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)
47
# FindZLIB is broken on Ubuntu, so find the library using pkg-config
49
find_package(PkgConfig)
50
pkg_search_module(ZLIB_PKGCONF REQUIRED zlib)
51
find_path(ZLIB_INCLUDE_DIR
53
PATHS ${ZLIB_PKGCONF_INCLUDE_DIRS}
55
find_library(ZLIB_LIBRARIES
57
PATHS ${ZLIB_PKGCONF_LIBRARY_DIRS}
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)
68
find_package(ZLIB REQUIRED)
71
#add_subdirectory(3rdparty)
75
# Add include directories
77
${CMAKE_CURRENT_BINARY_DIR}
83
LIST(APPEND SRC ${3RD_PARTY_SRC_C})
84
LIST(APPEND SRC ${3RD_PARTY_SRC})
85
LIST(APPEND HDR ${3RD_PARTY_HDR})
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")
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")
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})
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)
119
if(JREEN_USE_SYSTEM_JDNS)
120
# For Linux it was found already before at line 29
122
find_package(PkgConfig)
124
pkg_search_module(JDNS REQUIRED qjdns)
125
include_directories(${JDNS_INCLUDE_DIR})
126
list(APPEND EXTRA_LIBS ${JDNS_LIBRARIES})
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")
138
JREEN_WRAP_CPP(MOC_SRC ${HDR})
140
# This project will generate library
143
set(JREEN_BUILD_TYPE STATIC)
145
set(JREEN_BUILD_TYPE SHARED)
148
ADD_LIBRARY(jreen ${JREEN_BUILD_TYPE} ${SRC} ${MOC_SRC} ${HDR} )
151
#fixme add macro to clang
152
if(CMAKE_COMPILER_IS_GNUCXX)
154
#disable stupid warnings
155
ADD_DEFINITIONS("-w")
157
ADD_DEFINITIONS("-Wall -Wextra" ) #add -Werror
160
ADD_DEFINITIONS("-fvisibility=hidden" )
163
ADD_DEFINITIONS("/W3" )
166
set_target_properties(jreen PROPERTIES
167
VERSION ${CMAKE_JREEN_VERSION_STRING}
168
SOVERSION ${CMAKE_JREEN_VERSION_MAJOR}
169
DEFINE_SYMBOL J_BUILD_LIBRARY
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}\"
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}
187
endif(NOT ${header} MATCHES ".*_p\\.h")
190
set(JREEN_LIBRARIES jreen CACHE INTERNAL "" )
191
set(JREEN_INCLUDE_DIRS "${CMAKE_CURRENT_BINARY_DIR}/include" CACHE INTERNAL "")
194
LIST(APPEND EXTRA_LIBS ws2_32)
197
# LIST(APPEND EXTRA_LIBS ${NICE_LIBRARIES})
200
LIST(APPEND EXTRA_LIBS ${SPEEX_LIBRARIES})
207
JREEN_TARGET_LINK_LIBRARIES(jreen
214
# Install package config file
216
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/libjreen.pc.cmake
217
${CMAKE_CURRENT_BINARY_DIR}/libjreen.pc
219
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libjreen.pc
220
DESTINATION lib${LIB_SUFFIX}/pkgconfig
224
install( TARGETS jreen
225
RUNTIME DESTINATION bin
227
LIBRARY DESTINATION lib${LIB_SUFFIX}
229
ARCHIVE DESTINATION lib${LIB_SUFFIX}
231
BUNDLE DESTINATION library