mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-17 19:18:06 +00:00
Allow building both shared and static libraries with CMake.
This commit is contained in:
parent
2fc3b377ed
commit
c64cf6b4ca
7 changed files with 84 additions and 63 deletions
|
|
@ -21,13 +21,13 @@
|
|||
############################################################################
|
||||
|
||||
cmake_minimum_required(VERSION 3.0)
|
||||
project(LINPHONE C CXX)
|
||||
project(linphone VERSION 3.9.1 LANGUAGES C CXX)
|
||||
|
||||
|
||||
set(LINPHONE_MAJOR_VERSION "3")
|
||||
set(LINPHONE_MINOR_VERSION "9")
|
||||
set(LINPHONE_MICRO_VERSION "1")
|
||||
set(LINPHONE_VERSION "${LINPHONE_MAJOR_VERSION}.${LINPHONE_MINOR_VERSION}.${LINPHONE_MICRO_VERSION}")
|
||||
set(LINPHONE_MAJOR_VERSION ${PROJECT_VERSION_MAJOR})
|
||||
set(LINPHONE_MINOR_VERSION ${PROJECT_VERSION_MINOR})
|
||||
set(LINPHONE_MICRO_VERSION ${PROJECT_VERSION_PATCH})
|
||||
set(LINPHONE_VERSION ${PROJECT_VERSION})
|
||||
set(LINPHONE_SO_VERSION "8")
|
||||
|
||||
file(GLOB LINPHONE_PO_FILES RELATIVE "${CMAKE_CURRENT_LIST_DIR}/po" "${CMAKE_CURRENT_LIST_DIR}/po/*.po")
|
||||
|
|
@ -36,7 +36,8 @@ string(REPLACE ";" " " LINPHONE_ALL_LANGS "${LINPHONE_ALL_LANGS_LIST}")
|
|||
|
||||
include(CMakeDependentOption)
|
||||
|
||||
option(ENABLE_STATIC "Build static library (default is shared library)." NO)
|
||||
option(ENABLE_SHARED "Build shared library." YES)
|
||||
option(ENABLE_STATIC "Build static library." YES)
|
||||
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_DOC "Enable documentation generation with Doxygen." YES)
|
||||
|
|
@ -79,6 +80,12 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
|||
|
||||
include(CheckSymbolExists)
|
||||
include(CMakePushCheckState)
|
||||
include(GNUInstallDirs)
|
||||
|
||||
if(NOT CMAKE_INSTALL_RPATH AND CMAKE_INSTALL_PREFIX)
|
||||
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR})
|
||||
message(STATUS "Setting install rpath to ${CMAKE_INSTALL_RPATH}")
|
||||
endif()
|
||||
|
||||
set(MSVC_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include/MSVC")
|
||||
if(MSVC)
|
||||
|
|
@ -251,13 +258,13 @@ if(ENABLE_RELATIVE_PREFIX)
|
|||
else()
|
||||
set(LINPHONE_DATA_DIR "${CMAKE_INSTALL_PREFIX}")
|
||||
endif()
|
||||
set(LINPHONE_PLUGINS_DIR "${LINPHONE_DATA_DIR}/lib/liblinphone/plugins")
|
||||
set(LINPHONE_PLUGINS_DIR "${LINPHONE_DATA_DIR}/${CMAKE_INSTALL_LIBDIR}/liblinphone/plugins")
|
||||
if(WIN32)
|
||||
set(LINPHONE_CONFIG_DIR "Linphone")
|
||||
endif()
|
||||
set(PACKAGE_LOCALE_DIR "${LINPHONE_DATA_DIR}/share/locale")
|
||||
set(PACKAGE_DATA_DIR "${LINPHONE_DATA_DIR}/share")
|
||||
set(PACKAGE_SOUND_DIR "${LINPHONE_DATA_DIR}/share/sounds/linphone")
|
||||
set(PACKAGE_LOCALE_DIR "${LINPHONE_DATA_DIR}/${CMAKE_INSTALL_DATADIR}/locale")
|
||||
set(PACKAGE_DATA_DIR "${LINPHONE_DATA_DIR}/${CMAKE_INSTALL_DATADIR}")
|
||||
set(PACKAGE_SOUND_DIR "${LINPHONE_DATA_DIR}/${CMAKE_INSTALL_DATADIR}/sounds/linphone")
|
||||
set(PACKAGE_RING_DIR "${PACKAGE_SOUND_DIR}/rings")
|
||||
set(PACKAGE_FREEDESKTOP_DIR "${PACKAGE_DATA_DIR}/applications")
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
|
||||
|
|
@ -309,13 +316,13 @@ configure_file(cmake/LinphoneConfig.cmake.in
|
|||
@ONLY
|
||||
)
|
||||
|
||||
set(ConfigPackageLocation lib/cmake/Linphone)
|
||||
set(CONFIG_PACKAGE_LOCATION "${CMAKE_INSTALL_DATADIR}/Linphone/cmake")
|
||||
install(EXPORT ${EXPORT_TARGETS_NAME}Targets
|
||||
FILE LinphoneTargets.cmake
|
||||
DESTINATION ${ConfigPackageLocation}
|
||||
DESTINATION ${CONFIG_PACKAGE_LOCATION}
|
||||
)
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/LinphoneConfig.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/LinphoneConfigVersion.cmake"
|
||||
DESTINATION ${ConfigPackageLocation}
|
||||
DESTINATION ${CONFIG_PACKAGE_LOCATION}
|
||||
)
|
||||
|
|
|
|||
|
|
@ -47,8 +47,8 @@ if(WIN32)
|
|||
endif()
|
||||
|
||||
install(TARGETS ${INSTALL_TARGETS}
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
|
|
|
|||
|
|
@ -176,47 +176,65 @@ if(INTL_FOUND)
|
|||
list(APPEND LIBS ${INTL_LIBRARIES})
|
||||
endif()
|
||||
|
||||
add_library(linphone-objects OBJECT ${LINPHONE_HEADER_FILES} ${LINPHONE_SOURCE_FILES_C} ${LINPHONE_SOURCE_FILES_CXX} ${LINPHONE_SOURCE_FILES_OBJC})
|
||||
set_target_properties(linphone-objects PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
|
||||
add_dependencies(linphone-objects liblinphone-git-version)
|
||||
|
||||
if(ENABLE_STATIC)
|
||||
add_library(linphone STATIC ${LINPHONE_HEADER_FILES} ${LINPHONE_SOURCE_FILES_C} ${LINPHONE_SOURCE_FILES_CXX} ${LINPHONE_SOURCE_FILES_OBJC})
|
||||
target_link_libraries(linphone ${LIBS})
|
||||
else()
|
||||
add_library(linphone SHARED ${LINPHONE_HEADER_FILES} ${LINPHONE_SOURCE_FILES_C} ${LINPHONE_SOURCE_FILES_CXX} ${LINPHONE_SOURCE_FILES_OBJC})
|
||||
add_library(linphone-static STATIC $<TARGET_OBJECTS:linphone-objects>)
|
||||
set_target_properties(linphone-static PROPERTIES OUTPUT_NAME linphone)
|
||||
target_link_libraries(linphone-static ${LIBS})
|
||||
if(IOS)
|
||||
target_link_libraries(linphone-static "-framework Foundation" "-framework AVFoundation")
|
||||
endif()
|
||||
install(TARGETS linphone-static EXPORT ${EXPORT_TARGETS_NAME}Targets
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
endif()
|
||||
if(ENABLE_SHARED)
|
||||
add_library(linphone SHARED $<TARGET_OBJECTS:linphone-objects>)
|
||||
set_target_properties(linphone PROPERTIES VERSION ${LINPHONE_SO_VERSION} LINKER_LANGUAGE CXX)
|
||||
target_link_libraries(linphone ${LIBS})
|
||||
if(WIN32 AND CMAKE_SYSTEM_NAME STREQUAL "WindowsPhone" AND NOT CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
|
||||
set_target_properties(linphone PROPERTIES PREFIX "lib")
|
||||
endif()
|
||||
if(MSVC)
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Debug/linphone.pdb
|
||||
DESTINATION bin
|
||||
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
if(IOS)
|
||||
target_link_libraries(linphone "-framework Foundation" "-framework AVFoundation")
|
||||
endif()
|
||||
add_dependencies(linphone liblinphone-git-version)
|
||||
if(WIN32 AND CMAKE_SYSTEM_NAME STREQUAL "WindowsPhone" AND NOT CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
|
||||
set_target_properties(linphone PROPERTIES PREFIX "lib")
|
||||
install(TARGETS linphone EXPORT ${EXPORT_TARGETS_NAME}Targets
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
endif()
|
||||
if(ICONV_FOUND)
|
||||
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")
|
||||
if(ENABLE_STATIC)
|
||||
target_compile_options(linphone-static PRIVATE "-include" "${ICONV_INCLUDE_DIRS}/iconv.h")
|
||||
endif()
|
||||
if(ENABLE_SHARED)
|
||||
target_compile_options(linphone PRIVATE "-include" "${ICONV_INCLUDE_DIRS}/iconv.h")
|
||||
endif()
|
||||
else()
|
||||
target_include_directories(linphone PRIVATE ${ICONV_INCLUDE_DIRS})
|
||||
if(ENABLE_STATIC)
|
||||
target_include_directories(linphone-static PRIVATE ${ICONV_INCLUDE_DIRS})
|
||||
endif()
|
||||
if(ENABLE_SHARED)
|
||||
target_include_directories(linphone PRIVATE ${ICONV_INCLUDE_DIRS})
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
install(TARGETS linphone EXPORT ${EXPORT_TARGETS_NAME}Targets
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
|
||||
install(FILES ${LINPHONE_HEADER_FILES}
|
||||
DESTINATION include/linphone
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/linphone
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ if(DOXYGEN_FOUND)
|
|||
)
|
||||
add_custom_target(linphone-doc ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/doc/html/index.html")
|
||||
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/doc/html" "${CMAKE_CURRENT_BINARY_DIR}/doc/xml"
|
||||
DESTINATION "share/doc/linphone-${LINPHONE_VERSION}")
|
||||
DESTINATION "${CMAKE_INSTALL_DATADIR}/doc/linphone-${LINPHONE_VERSION}")
|
||||
else()
|
||||
message(WARNING "The dot program is needed to generate the linphone documentation. You can get it from http://www.graphviz.org/.")
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -120,9 +120,9 @@ set_target_properties(linphone-gtk PROPERTIES XCODE_ATTRIBUTE_WARNING_CFLAGS "")
|
|||
|
||||
|
||||
install(TARGETS linphone-gtk
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -66,13 +66,13 @@ if(IOS)
|
|||
target_include_directories(linphonetester PUBLIC ${CUNIT_INCLUDE_DIRS} PRIVATE common)
|
||||
target_link_libraries(linphonetester linphone ${CUNIT_LIBRARIES})
|
||||
install(TARGETS linphonetester
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
install(FILES "liblinphone_tester.h" "common/bc_tester_utils.h"
|
||||
DESTINATION include/linphone
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/linphone
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
||||
)
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
|
||||
|
|
@ -93,15 +93,15 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
|
|||
set_target_properties(linphone_tester_runtime PROPERTIES LINK_FLAGS "/WINMDFILE:BelledonneCommunications.Linphone.Tester.winmd")
|
||||
|
||||
install(TARGETS linphone_tester_runtime
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/BelledonneCommunications.Linphone.Tester.winmd" DESTINATION lib)
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Debug/BelledonneCommunications.Linphone.Tester.pdb
|
||||
DESTINATION lib
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -49,9 +49,9 @@ target_link_libraries(lp-gen-wrappers ${LP_GEN_WRAPPERS_LIBS})
|
|||
|
||||
|
||||
install(TARGETS lp-gen-wrappers
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
|
||||
|
|
@ -69,9 +69,9 @@ target_link_libraries(lp-auto-answer linphone)
|
|||
|
||||
|
||||
install(TARGETS lp-auto-answer
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
|
||||
|
|
@ -89,12 +89,8 @@ target_link_libraries(lp-sendmsg linphone)
|
|||
|
||||
|
||||
install(TARGETS lp-sendmsg
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue