CMakeLists.txt 5.08 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
############################################################################
# CMakeLists.txt
# Copyright (C) 2014  Belledonne Communications, Grenoble France
#
############################################################################
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#
############################################################################

Ghislain MARY's avatar
Ghislain MARY committed
23
if(MSVC AND NOT CMAKE_SYSTEM_NAME STREQUAL "WindowsPhone")
24 25 26
	find_library(LIBGCC NAMES gcc)
	find_library(LIBMINGWEX NAMES mingwex)
endif()
Ghislain MARY's avatar
Ghislain MARY committed
27

28
if(NOT WIN32)
29
	find_package(Iconv QUIET)
30
endif()
Ghislain MARY's avatar
Ghislain MARY committed
31

32

33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
set(LINPHONE_HEADER_FILES
	account_creator.h
	buffer.h
	call_log.h
	call_params.h
	content.h
	event.h
	linphonecore.h
	linphonecore_utils.h
	linphonefriend.h
	linphonepresence.h
	linphone_proxy_config.h
	linphone_tunnel.h
	lpc2xml.h
	lpconfig.h
	sipsetup.h
	xml2lpc.h
	xmlrpc.h
)

set(LINPHONE_SOURCE_FILES
54
	account_creator.c
55 56 57 58
	address.c
	authentication.c
	bellesip_sal/sal_address_impl.c
	bellesip_sal/sal_impl.c
59
	bellesip_sal/sal_impl.h
60 61 62 63 64 65 66 67 68 69
	bellesip_sal/sal_op_call.c
	bellesip_sal/sal_op_call_transfer.c
	bellesip_sal/sal_op_events.c
	bellesip_sal/sal_op_impl.c
	bellesip_sal/sal_op_info.c
	bellesip_sal/sal_op_message.c
	bellesip_sal/sal_op_presence.c
	bellesip_sal/sal_op_publish.c
	bellesip_sal/sal_op_registration.c
	bellesip_sal/sal_sdp.c
70
	buffer.c
71
	callbacks.c
72
	call_log.c
73
	call_params.c
74
	chat.c
75
	chat_file_transfer.c
76
	conference.c
77
	contactprovider.c
78
	content.c
79
	dict.c
80 81
	ec-calibrator.c
	enum.c
82
	enum.h
83 84 85
	event.c
	friend.c
	info.c
86
	ldap/ldapprovider.c
87
	lime.c
88 89 90
	linphonecall.c
	linphonecore.c
	linphone_tunnel_config.c
91
	localplayer.c
Ghislain MARY's avatar
Ghislain MARY committed
92
	lpc2xml.c
93
	lpconfig.c
94
	lpconfig.h
95 96 97 98
	lsd.c
	message_storage.c
	misc.c
	offeranswer.c
99
	offeranswer.h
100
	player.c
101
	presence.c
102
	private.h
103
	proxy.c
104
	quality_reporting.c
Ghislain MARY's avatar
Ghislain MARY committed
105
	remote_provisioning.c
106 107 108
	sal.c
	siplogin.c
	sipsetup.c
109
	xml2lpc.c
110
	xml.c
111
	xmlrpc.c
Simon Morlat's avatar
Simon Morlat committed
112
	vtables.c
113
)
114

115
if(ENABLE_TUNNEL)
116
	list(APPEND LINPHONE_SOURCE_FILES
117 118 119 120
		linphone_tunnel.cc
		TunnelManager.cc
	)
	add_definitions(-DTUNNEL_ENABLED)
121
else()
122
	list(APPEND LINPHONE_SOURCE_FILES linphone_tunnel_stubs.c)
123 124 125
endif()

find_package(Git)
126 127 128 129
add_custom_target(liblinphone-git-version
	COMMAND ${CMAKE_COMMAND} -DGIT_EXECUTABLE=${GIT_EXECUTABLE} -DWORK_DIR=${CMAKE_CURRENT_SOURCE_DIR} -DOUTPUT_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/gitversion.cmake
	BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/liblinphone_gitversion.h"
)
130 131 132 133 134 135

add_definitions(
	-DUSE_BELLESIP
	-DLIBLINPHONE_EXPORTS
)

136 137
set(LIBS
	${BELLESIP_LIBRARIES}
138
	${MEDIASTREAMER2_LIBRARIES}
139 140
	${XML2_LIBRARIES}
)
141 142 143
if(ZLIB_FOUND)
	list(APPEND LIBS ${ZLIB_LIBRARIES})
endif()
144 145 146
if(SQLITE3_FOUND)
	list(APPEND LIBS ${SQLITE3_LIBRARIES})
endif()
Ghislain MARY's avatar
Ghislain MARY committed
147 148 149
if(ICONV_FOUND)
	list(APPEND LIBS ${ICONV_LIBRARIES})
endif()
150 151 152
if(ENABLE_TUNNEL)
	list(APPEND LIBS ${TUNNEL_LIBRARIES})
endif()
Ghislain MARY's avatar
Ghislain MARY committed
153
if(MSVC AND NOT CMAKE_SYSTEM_NAME STREQUAL "WindowsPhone")
154 155
	list(APPEND LIBS ${LIBGCC} ${LIBMINGWEX})
endif()
Ghislain MARY's avatar
Ghislain MARY committed
156
if(WIN32 AND NOT CMAKE_SYSTEM_NAME STREQUAL "WindowsPhone")
157 158
	list(APPEND LIBS shlwapi)
endif()
159
if(INTL_FOUND)
160 161
	list(APPEND LIBS ${INTL_LIBRARIES})
endif()
162

163
if(ENABLE_STATIC)
164
	add_library(linphone STATIC ${LINPHONE_HEADER_FILES} ${LINPHONE_SOURCE_FILES})
165 166
	target_link_libraries(linphone ${LIBS})
else()
167
	add_library(linphone SHARED ${LINPHONE_HEADER_FILES} ${LINPHONE_SOURCE_FILES})
168
	set_target_properties(linphone PROPERTIES VERSION ${LINPHONE_SO_VERSION} LINKER_LANGUAGE CXX)
169 170 171 172 173 174 175 176 177 178
	target_link_libraries(linphone ${LIBS})
	if(MSVC)
		if(CMAKE_BUILD_TYPE STREQUAL "Debug")
			install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Debug/linphone.pdb
				DESTINATION bin
				PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
			)
		endif()
	endif()
endif()
179
add_dependencies(linphone liblinphone-git-version)
Ghislain MARY's avatar
Ghislain MARY committed
180
if(WIN32 AND CMAKE_SYSTEM_NAME STREQUAL "WindowsPhone")
181 182
	set_target_properties(linphone PROPERTIES PREFIX "lib")
endif()
Ghislain MARY's avatar
Ghislain MARY committed
183
if(ICONV_FOUND)
184 185 186 187 188 189
	if(APPLE)
		# Prevent conflict between the system iconv.h header and the one from macports.
		target_compile_options(linphone PRIVATE "-include" "${ICONV_INCLUDE_DIRS}/iconv.h")
	else()
		target_include_directories(linphone PRIVATE ${ICONV_INCLUDE_DIRS})
	endif()
Ghislain MARY's avatar
Ghislain MARY committed
190
endif()
191

192
install(TARGETS linphone EXPORT ${EXPORT_TARGETS_NAME}Targets
193
	RUNTIME DESTINATION bin
Ghislain MARY's avatar
Ghislain MARY committed
194 195
	LIBRARY DESTINATION lib
	ARCHIVE DESTINATION lib
196 197
	PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
198

199
install(FILES ${LINPHONE_HEADER_FILES}
200 201 202
	DESTINATION include/linphone
	PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
203

204 205 206
if(ENABLE_DOC)
	add_subdirectory(help)
endif()