diff --git a/CMakeLists.txt b/CMakeLists.txt index 725126296..94f49e8f0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,11 +21,33 @@ ############################################################################ cmake_minimum_required(VERSION 2.6) -project(LINPHONE C) +project(LINPHONE C CXX) +set(LINPHONE_MAJOR_VERSION "3") +set(LINPHONE_MINOR_VERSION "7") +set(LINPHONE_MICRO_VERSION "0") +set(LINPHONE_VERSION "${LINPHONE_MAJOR_VERSION}.${LINPHONE_MINOR_VERSION}.${LINPHONE_MICRO_VERSION}") +set(LINPHONE_SO_VERSION "6") + + +include(CMakeDependentOption) + option(ENABLE_STATIC "Build static library (default is shared library)." NO) +option(ENABLE_CONSOLE_UI "Turn on or off compilation of console interface." YES) +option(ENABLE_DATE "Use build date in internal version number." NO) +option(ENABLE_GTK_UI "Turn on or off compilation of gtk interface." YES) +option(ENABLE_LDAP "Enable LDAP support." NO) +option(ENABLE_MSG_STORAGE "Turn on compilation of message storage." YES) +option(ENABLE_NOTIFY "Enable libnotify support." YES) +option(ENABLE_RELATIVE_PREFIX "Find resources relatively to the installation directory." NO) +option(ENABLE_TOOLS "Turn on or off compilation of console interface" YES) +option(ENABLE_TUNNEL "Turn on compilation of tunnel support." NO) +option(ENABLE_TUTORIALS "Enable compilation of tutorials." YES) +option(ENABLE_UNIT_TESTS "Enable compilation of unit tests." YES) +option(ENABLE_UPNP "Build with uPnP support." YES) option(ENABLE_VIDEO "Build with video support." YES) +cmake_dependent_option(ENABLE_ASSISTANT "Turn on assistant compiling." YES "ENABLE_GTK_UI" NO) list(APPEND CMAKE_MODULE_PATH ${CMAKE_PREFIX_PATH}/share/cmake/Modules) @@ -44,6 +66,7 @@ find_package(XML2 REQUIRED) include_directories( include/ coreapi/ + ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/coreapi/ ${BELLESIP_INCLUDE_DIRS} ${MS2_INCLUDE_DIRS} @@ -55,5 +78,15 @@ if(MSVC) endif() +if(ENABLE_RELATIVE_PREFIX) + set(LINPHONE_PLUGINS_DIR "./lib/liblinphone/plugins") +else() + set(LINPHONE_PLUGINS_DIR "${CMAKE_INSTALL_PREFIX}/lib/liblinphone/plugins") +endif() +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) +set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/config.h PROPERTIES GENERATED ON) +add_definitions(-DHAVE_CONFIG_H) + + add_subdirectory(coreapi) add_subdirectory(share) diff --git a/config.h.cmake b/config.h.cmake new file mode 100644 index 000000000..6f8db1a86 --- /dev/null +++ b/config.h.cmake @@ -0,0 +1,28 @@ +/*************************************************************************** +* config.h.cmake +* 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. +* +****************************************************************************/ + +#define LINPHONE_MAJOR_VERSION ${LINPHONE_MAJOR_VERSION} +#define LINPHONE_MINOR_VERSION ${LINPHONE_MINOR_VERSION} +#define LINPHONE_MICRO_VERSION ${LINPHONE_MICRO_VERSION} +#define LINPHONE_VERSION "${LINPHONE_VERSION}" + +#cmakedefine LINPHONE_PLUGINS_DIR "${LINPHONE_PLUGINS_DIR}" diff --git a/coreapi/CMakeLists.txt b/coreapi/CMakeLists.txt index e6f530ee9..ff39dfb41 100644 --- a/coreapi/CMakeLists.txt +++ b/coreapi/CMakeLists.txt @@ -25,40 +25,6 @@ if(MSVC) find_library(LIBMINGWEX NAMES mingwex) endif() -find_program(GIT git) - -set(GIT_VERSION "unknown") -if(GIT) - execute_process( - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - COMMAND ${GIT} describe --always - OUTPUT_VARIABLE GIT_DESCRIBE - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - execute_process( - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - COMMAND ${GIT} describe --abbrev=0 - OUTPUT_VARIABLE GIT_TAG - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - execute_process( - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - COMMAND ${GIT} rev-parse HEAD - OUTPUT_VARIABLE GIT_REVISION - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - if(GIT_DESCRIBE) - set(GIT_VERSION ${GIT_DESCRIBE}) - else(GIT_DESCRIBE) - if(GIT_REVISION) - set(GIT_VERSION ${GIT_REVISION}) - endif(GIT_REVISION) - endif(GIT_DESCRIBE) -endif(GIT) -execute_process( - COMMAND ${CMAKE_COMMAND} -E echo "#define LIBLINPHONE_GIT_VERSION \"${GIT_VERSION}\"" - OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/liblinphone_gitversion.h -) set(SOURCE_FILES address.c @@ -85,7 +51,6 @@ set(SOURCE_FILES info.c linphonecall.c linphonecore.c - #linphone_tunnel.cc linphone_tunnel_stubs.c linphone_tunnel_config.c lpconfig.c @@ -100,7 +65,6 @@ set(SOURCE_FILES sal.c siplogin.c sipsetup.c - #TunnelManager.cc xml.c xml2lpc.c bellesip_sal/sal_impl.h @@ -116,16 +80,26 @@ set(SOURCE_FILES sipsetup.h xml2lpc.h ) +if(ENABLE_TUNNEL) + list(APPEND SOURCE_FILES + linphone_tunnel.cc + TunnelManager.cc + ) + add_definitions(-DTUNNEL_ENABLED) +endif() + +set(GENERATED_SOURCE_FILES + ${CMAKE_CURRENT_BINARY_DIR}/liblinphone_gitversion.h +) +set_source_files_properties(${GENERATED_SOURCE_FILES} PROPERTIES GENERATED TRUE) +find_package(Git) +add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/liblinphone_gitversion.h + COMMAND ${CMAKE_COMMAND} -DGIT_EXECUTABLE=${GIT_EXECUTABLE} -DOUTPUT_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/gitversion.cmake) add_definitions( - -D_TRUE_TIME -DIN_LINPHONE -DUSE_BELLESIP - #-DTUNNEL_ENABLED - -DLINPHONE_PACKAGE_NAME="linphone" - -DLINPHONE_VERSION="Devel" -DLIBLINPHONE_EXPORTS - -DLINPHONE_PLUGINS_DIR="" ) if(ENABLE_VIDEO) @@ -139,23 +113,30 @@ set(LIBS ${MS2_LIBRARIES} ${XML2_LIBRARIES} ) -if(WIN32) -add_definitions( - -DWINDOW_NATIVE - /FIliblinphone_gitversion.h -) + +if(ENABLE_STATIC) + add_library(linphone STATIC ${SOURCE_FILES} ${GENERATED_SOURCE_FILES}) + target_link_libraries(linphone ${LIBS}) +else() + add_library(linphone SHARED ${SOURCE_FILES} ${GENERATED_SOURCE_FILES}) + set_target_properties(linphone PROPERTIES VERSION ${LINPHONE_VERSION} SOVERSION ${LINPHONE_SO_VERSION} LINKER_LANGUAGE CXX) + 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() -add_library(linphone SHARED ${SOURCE_FILES}) -set_target_properties(linphone PROPERTIES VERSION 3.7.0 SOVERSION 5) - -target_link_libraries(linphone ${LIBS}) - install(TARGETS linphone - RUNTIME DESTINATION bin + RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE +) file(GLOB HEADER_FILES "*.h") @@ -164,11 +145,3 @@ install(FILES ${HEADER_FILES} DESTINATION include/linphone PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) -if(WIN32) -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() diff --git a/coreapi/gitversion.cmake b/coreapi/gitversion.cmake new file mode 100644 index 000000000..1a6ec406c --- /dev/null +++ b/coreapi/gitversion.cmake @@ -0,0 +1,38 @@ +############################################################################ +# 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. +# +############################################################################ + +if(GIT_EXECUTABLE) + execute_process( + COMMAND ${GIT_EXECUTABLE} describe --always + OUTPUT_VARIABLE GIT_REVISION + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + execute_process( + COMMAND ${CMAKE_COMMAND} -E echo "#define GIT_VERSION \"${GIT_REVISION}\"" + OUTPUT_FILE ${OUTPUT_DIR}/liblinphone_gitversion.h + ) +else() + execute_process( + COMMAND ${CMAKE_COMMAND} -E echo "#define GIT_VERSION \"unknown\"" + OUTPUT_FILE ${OUTPUT_DIR}/liblinphone_gitversion.h + ) +endif()