2023-01-12 12:28:43 -05:00
|
|
|
cmake_minimum_required(VERSION 3.16)
|
2019-12-06 16:48:20 -05:00
|
|
|
|
2023-01-18 15:31:12 -05:00
|
|
|
project(jami-daemon
|
|
|
|
VERSION 13.7.0
|
|
|
|
LANGUAGES C CXX)
|
2023-01-12 12:28:43 -05:00
|
|
|
set(PACKAGE_NAME "Jami Daemon")
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Build options
|
|
|
|
################################################################################
|
|
|
|
option(JAMI_NATPMP "Build with NAT-PMP" ON)
|
|
|
|
option(JAMI_PUPNP "Build with PUPNP" ON)
|
|
|
|
option(JAMI_PLUGIN "Build with plugin support" ON)
|
|
|
|
option(JAMI_JNI "Build the JNI binding" OFF)
|
2023-01-13 11:36:27 -05:00
|
|
|
option(JAMI_DBUS "Build the DBUS binding" OFF)
|
2023-01-12 12:28:43 -05:00
|
|
|
option(JAMI_VIDEO "Build with video support" ON)
|
2023-01-12 17:15:44 -05:00
|
|
|
option(BUILD_CONTRIB "Build contrib to CONTRIB_PATH" ON)
|
|
|
|
option(BUILD_EXTRA_TOOLS "Build extra tools" OFF)
|
|
|
|
|
2023-01-17 11:36:48 -03:00
|
|
|
if(NOT MSVC)
|
|
|
|
################################################################################
|
|
|
|
# Contrib
|
|
|
|
################################################################################
|
2023-01-12 17:15:44 -05:00
|
|
|
|
2023-01-17 11:36:48 -03:00
|
|
|
# Android target mapping for contrib
|
|
|
|
if (ANDROID_ABI STREQUAL "x86")
|
|
|
|
set(TARGET i686-linux-android)
|
|
|
|
elseif (ANDROID_ABI STREQUAL "x86_64")
|
|
|
|
set(TARGET x86_64-linux-android)
|
|
|
|
elseif (ANDROID_ABI STREQUAL "arm64-v8a")
|
|
|
|
set(TARGET aarch64-linux-android)
|
|
|
|
elseif (ANDROID_ABI STREQUAL "armeabi-v7a")
|
|
|
|
set(TARGET armv7a-linux-androideabi)
|
|
|
|
else()
|
|
|
|
set(TARGET ${CMAKE_LIBRARY_ARCHITECTURE})
|
|
|
|
if (NOT TARGET)
|
|
|
|
execute_process(COMMAND gcc -dumpmachine COMMAND tr -d '\n' OUTPUT_VARIABLE TARGET)
|
|
|
|
endif()
|
2023-01-12 17:15:44 -05:00
|
|
|
endif()
|
2023-01-17 11:36:48 -03:00
|
|
|
set(CONTRIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/contrib/${TARGET})
|
2023-01-12 17:15:44 -05:00
|
|
|
|
2023-01-31 14:24:05 -05:00
|
|
|
include(ProcessorCount)
|
|
|
|
ProcessorCount(NPROC)
|
|
|
|
if(NOT NPROC EQUAL 0)
|
|
|
|
set(CONTRIB_BUILD_FLAGS -j${NPROC})
|
|
|
|
endif()
|
|
|
|
|
2023-01-17 11:36:48 -03:00
|
|
|
if (BUILD_EXTRA_TOOLS)
|
|
|
|
set(ENV{PATH} "${CMAKE_CURRENT_SOURCE_DIR}/extras/tools/build/bin:$ENV{PATH}")
|
|
|
|
execute_process(
|
|
|
|
COMMAND ./bootstrap
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/extras/tools)
|
|
|
|
execute_process(
|
2023-01-31 14:24:05 -05:00
|
|
|
COMMAND make ${CONTRIB_BUILD_FLAGS}
|
2023-01-17 11:36:48 -03:00
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/extras/tools)
|
|
|
|
execute_process(
|
|
|
|
COMMAND make .pkg-config
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/extras/tools)
|
|
|
|
execute_process(
|
|
|
|
COMMAND make .gas
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/extras/tools)
|
|
|
|
endif()
|
|
|
|
if (JAMI_JNI)
|
|
|
|
# Generate swig binding
|
|
|
|
add_custom_command(
|
|
|
|
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/bin/jni/jami_wrapper.cpp
|
|
|
|
COMMAND env PACKAGEDIR=${JAMI_JNI_PACKAGEDIR} "./make-swig.sh"
|
|
|
|
DEPENDS
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/jni/make-swig.sh
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/jni/jni_interface.i
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/jni/callmanager.i
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/jni/configurationmanager.i
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/jni/conversation.i
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/jni/managerimpl.i
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/jni/data_view.i
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/jni
|
|
|
|
)
|
2023-01-12 17:15:44 -05:00
|
|
|
endif()
|
2023-01-17 11:36:48 -03:00
|
|
|
if (BUILD_CONTRIB)
|
|
|
|
set(CONTRIB_BUILD_PATH ${CMAKE_CURRENT_SOURCE_DIR}/contrib/native-${TARGET})
|
|
|
|
file(MAKE_DIRECTORY ${CONTRIB_BUILD_PATH})
|
|
|
|
file(MAKE_DIRECTORY ${CONTRIB_PATH})
|
2023-01-12 17:15:44 -05:00
|
|
|
|
2023-01-17 11:36:48 -03:00
|
|
|
if (ANDROID)
|
|
|
|
# See https://developer.android.com/ndk/guides/other_build_systems
|
|
|
|
set(ENV{ANDROID_NDK} ${ANDROID_NDK})
|
|
|
|
set(ENV{ANDROID_ABI} ${ANDROID_ABI})
|
|
|
|
set(ENV{ANDROID_API} ${ANDROID_PLATFORM})
|
|
|
|
set(ENV{TOOLCHAIN} ${ANDROID_TOOLCHAIN_ROOT})
|
|
|
|
set(ENV{TARGET} ${TARGET})
|
|
|
|
set(ENV{API} ${ANDROID_PLATFORM_LEVEL})
|
|
|
|
set(ENV{CC} $ENV{TOOLCHAIN}/bin/${TARGET}$ENV{API}-clang)
|
|
|
|
set(ENV{CXX} $ENV{TOOLCHAIN}/bin/${TARGET}$ENV{API}-clang++)
|
|
|
|
set(ENV{AS} "$ENV{CC} -c")
|
|
|
|
set(ENV{AR} ${CMAKE_AR})
|
|
|
|
set(ENV{RANLIB} ${CMAKE_RANLIB})
|
|
|
|
set(ENV{STRIP} ${CMAKE_STRIP})
|
|
|
|
set(ENV{LD} $ENV{TOOLCHAIN}/bin/ld)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
execute_process(
|
|
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/contrib/bootstrap --host=${TARGET}
|
|
|
|
WORKING_DIRECTORY ${CONTRIB_BUILD_PATH})
|
|
|
|
execute_process(COMMAND make list
|
|
|
|
WORKING_DIRECTORY ${CONTRIB_BUILD_PATH})
|
2023-01-31 14:24:05 -05:00
|
|
|
execute_process(COMMAND make ${CONTRIB_BUILD_FLAGS}
|
2023-01-17 11:36:48 -03:00
|
|
|
WORKING_DIRECTORY ${CONTRIB_BUILD_PATH})
|
|
|
|
endif()
|
2023-01-12 17:15:44 -05:00
|
|
|
endif()
|
2023-01-12 12:28:43 -05:00
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Check dependencies
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
if(NOT MSVC)
|
|
|
|
include(FindPkgConfig)
|
2023-01-12 17:15:44 -05:00
|
|
|
if (JAMI_NATPMP)
|
|
|
|
pkg_search_module (natpmp IMPORTED_TARGET natpmp)
|
|
|
|
if (NOT natpmp_FOUND)
|
2023-01-13 11:36:27 -05:00
|
|
|
find_library(natpmp_LIBRARIES natpmp)
|
|
|
|
if (NOT natpmp_LIBRARIES)
|
2023-01-12 17:15:44 -05:00
|
|
|
message("NAT-PMP not found: disabling")
|
|
|
|
set(JAMI_NATPMP Off)
|
|
|
|
endif()
|
|
|
|
endif()
|
2023-01-12 12:28:43 -05:00
|
|
|
endif()
|
|
|
|
if (JAMI_PUPNP)
|
2023-01-12 17:15:44 -05:00
|
|
|
pkg_search_module (upnp IMPORTED_TARGET upnp libupnp)
|
|
|
|
if (NOT upnp_FOUND)
|
|
|
|
set(JAMI_PUPNP Off)
|
|
|
|
endif()
|
2023-01-12 12:28:43 -05:00
|
|
|
endif()
|
2023-01-13 11:36:27 -05:00
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
|
|
pkg_search_module (udev REQUIRED IMPORTED_TARGET libudev)
|
|
|
|
pkg_search_module (pulseaudio REQUIRED IMPORTED_TARGET libpulse)
|
|
|
|
endif()
|
2023-01-12 12:28:43 -05:00
|
|
|
endif()
|
2019-12-06 16:48:20 -05:00
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Source groups
|
|
|
|
################################################################################
|
|
|
|
|
2020-02-12 14:13:24 -05:00
|
|
|
# compat, src source group
|
2023-01-12 12:28:43 -05:00
|
|
|
if(MSVC)
|
|
|
|
add_subdirectory("compat")
|
|
|
|
endif()
|
2019-12-06 16:48:20 -05:00
|
|
|
|
|
|
|
add_subdirectory("src")
|
|
|
|
source_group("Source Files" FILES ${Source_Files})
|
|
|
|
source_group("Source Files\\client" FILES ${Source_Files__client})
|
|
|
|
source_group("Source Files\\config" FILES ${Source_Files__config})
|
2022-10-18 11:48:18 -04:00
|
|
|
source_group("Source Files\\connectivity" FILES ${Source_Files__connectivity})
|
|
|
|
source_group("Source Files\\connectivity\\security" FILES ${Source_Files__security})
|
|
|
|
source_group("Source Files\\connectivity\\sip" FILES ${Source_Files__sip})
|
|
|
|
source_group("Source Files\\connectivity\\upnp" FILES ${Source_Files__upnp})
|
|
|
|
source_group("Source Files\\connectivity\\upnp\\protocol" FILES ${Source_Files__upnp__protocol})
|
|
|
|
source_group("Source Files\\connectivity\\upnp\\protocol\\natpmp" FILES ${Source_Files__upnp__protocol__natpmp})
|
|
|
|
source_group("Source Files\\connectivity\\upnp\\protocol\\pupnp" FILES ${Source_Files__upnp__protocol__pupnp})
|
daemon: Rename dring occurrences in code and file names to jamid.
Automated using the following commands:
$ mv src/{dring,jami}
$ git grep -l src/dring | xargs sed -i 's,src/dring,src/jami,g'
$ git grep -l '#include "dring/' | \
xargs sed -i 's,#include "dring/,#include "jami/,g'
$ git grep -l 'dring.h' | xargs sed -i 's,dring.h,jami.h,g'
And finally,
$ git grep -l 'dring' | xargs sed -i 's,dring,jami,g'
$ files=$(find -name '*dring*' | sort)
$ for f in $files; do mkdir -p "$(dirname "$f")"; \
mv "$f" "$(echo $f | sed 's/dring/jami/g')"; done
To resolve a bad renaming favorably:
$ git grep -l -i AlsaCarjami | \
xargs sed -i -E 's/([Aa])lsaCarjami/\1lsaCardRingtone/g'
The above renaming command is not perfect, so some hand-tuning was
required to complete it.
* src/manager.cpp (Manager::ManagerPimpl::retrieveConfigPath):
Preserve the dring.yml configuration file name, until we add something
to migrate (rename) it to jami.yml.
* man/dring.pod: Delete.
* bin/dbus/jamid.pod: Move to ...
* man/jamid.pod: here.
* bin/dbus/meson.build (jamid_targets): Normalize man section to the
pre-existing 1 and adjust accordingly.
* src/jami/def.h (dring_EXPORTS): Rename to ...
(jami_EXPORTS): ... this.
change-Id: I9828be6da9c711ab2f22c4d1b9539fea89d7b6fb
2021-06-15 11:03:11 -04:00
|
|
|
source_group("Source Files\\jami" FILES ${Source_Files__jami})
|
2019-12-06 16:48:20 -05:00
|
|
|
source_group("Source Files\\hooks" FILES ${Source_Files__hooks})
|
|
|
|
source_group("Source Files\\im" FILES ${Source_Files__im})
|
|
|
|
source_group("Source Files\\jamidht" FILES ${Source_Files__jamidht})
|
|
|
|
source_group("Source Files\\jamidht\\eth\\libdevcore" FILES ${Source_Files__jamidht__eth__libdevcore})
|
|
|
|
source_group("Source Files\\jamidht\\eth\\libdevcrypto" FILES ${Source_Files__jamidht__eth__libdevcrypto})
|
|
|
|
source_group("Source Files\\media" FILES ${Source_Files__media})
|
|
|
|
source_group("Source Files\\media\\audio" FILES ${Source_Files__media__audio})
|
2022-07-27 15:10:17 -04:00
|
|
|
source_group("Source Files\\media\\audio\\audio-processing" FILES ${Source_Files__media__audio__audio_processing})
|
2023-03-01 12:13:40 -05:00
|
|
|
source_group("Source Files\\media\\audio\\audio-processing" FILES ${Source_Files__media__audio__webrtc})
|
2019-12-06 16:48:20 -05:00
|
|
|
source_group("Source Files\\media\\audio\\sound" FILES ${Source_Files__media__audio__sound})
|
|
|
|
source_group("Source Files\\media\\video" FILES ${Source_Files__media__video})
|
2020-05-29 16:36:45 -04:00
|
|
|
source_group("Source Files\\plugin" FILES ${Source_Files__plugin})
|
2019-12-06 16:48:20 -05:00
|
|
|
|
|
|
|
if(MSVC)
|
|
|
|
if(WINDOWS_STORE)
|
|
|
|
source_group("Source Files\\media\\video\\uwpvideo" FILES ${Source_Files__media__video__uwpvideo})
|
|
|
|
endif()
|
|
|
|
source_group("Source Files\\media\\audio\\portaudio" FILES ${Source_Files__media__audio__portaudio})
|
|
|
|
source_group("Source Files\\media\\video\\winvideo" FILES ${Source_Files__media__video__winvideo})
|
|
|
|
endif()
|
|
|
|
|
|
|
|
list (APPEND ALL_FILES
|
|
|
|
${Source_Files}
|
|
|
|
${Source_Files__client}
|
|
|
|
${Source_Files__config}
|
2022-10-18 11:48:18 -04:00
|
|
|
${Source_Files__connectivity}
|
daemon: Rename dring occurrences in code and file names to jamid.
Automated using the following commands:
$ mv src/{dring,jami}
$ git grep -l src/dring | xargs sed -i 's,src/dring,src/jami,g'
$ git grep -l '#include "dring/' | \
xargs sed -i 's,#include "dring/,#include "jami/,g'
$ git grep -l 'dring.h' | xargs sed -i 's,dring.h,jami.h,g'
And finally,
$ git grep -l 'dring' | xargs sed -i 's,dring,jami,g'
$ files=$(find -name '*dring*' | sort)
$ for f in $files; do mkdir -p "$(dirname "$f")"; \
mv "$f" "$(echo $f | sed 's/dring/jami/g')"; done
To resolve a bad renaming favorably:
$ git grep -l -i AlsaCarjami | \
xargs sed -i -E 's/([Aa])lsaCarjami/\1lsaCardRingtone/g'
The above renaming command is not perfect, so some hand-tuning was
required to complete it.
* src/manager.cpp (Manager::ManagerPimpl::retrieveConfigPath):
Preserve the dring.yml configuration file name, until we add something
to migrate (rename) it to jami.yml.
* man/dring.pod: Delete.
* bin/dbus/jamid.pod: Move to ...
* man/jamid.pod: here.
* bin/dbus/meson.build (jamid_targets): Normalize man section to the
pre-existing 1 and adjust accordingly.
* src/jami/def.h (dring_EXPORTS): Rename to ...
(jami_EXPORTS): ... this.
change-Id: I9828be6da9c711ab2f22c4d1b9539fea89d7b6fb
2021-06-15 11:03:11 -04:00
|
|
|
${Source_Files__jami}
|
2019-12-06 16:48:20 -05:00
|
|
|
${Source_Files__hooks}
|
|
|
|
${Source_Files__im}
|
|
|
|
${Source_Files__jamidht}
|
|
|
|
${Source_Files__jamidht__eth__libdevcore}
|
|
|
|
${Source_Files__jamidht__eth__libdevcrypto}
|
|
|
|
${Source_Files__media}
|
|
|
|
${Source_Files__media__audio}
|
|
|
|
${Source_Files__media__audio__sound}
|
2022-07-27 15:10:17 -04:00
|
|
|
${Source_Files__media__audio__audio_processing}
|
2019-12-06 16:48:20 -05:00
|
|
|
${Source_Files__media__video}
|
|
|
|
${Source_Files__security}
|
|
|
|
${Source_Files__sip}
|
|
|
|
${Source_Files__upnp}
|
|
|
|
${Source_Files__upnp__protocol}
|
|
|
|
)
|
2023-01-12 12:28:43 -05:00
|
|
|
if (JAMI_NATPMP)
|
|
|
|
list (APPEND ALL_FILES ${Source_Files__upnp__protocol__natpmp})
|
|
|
|
endif()
|
|
|
|
if (JAMI_PUPNP)
|
|
|
|
list (APPEND ALL_FILES ${Source_Files__upnp__protocol__pupnp})
|
|
|
|
endif()
|
|
|
|
if (JAMI_PLUGIN)
|
|
|
|
list (APPEND ALL_FILES ${Source_Files__plugin})
|
|
|
|
endif()
|
|
|
|
if (ANDROID)
|
|
|
|
list (APPEND ALL_FILES ${ALL_FILES}
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src/media/video/androidvideo/video_device_impl.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src/media/video/androidvideo/video_device_monitor_impl.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src/media/audio/opensl/audio_player.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src/media/audio/opensl/audio_recorder.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src/media/audio/opensl/opensllayer.cpp
|
|
|
|
)
|
2023-01-13 11:36:27 -05:00
|
|
|
elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
|
|
if (JAMI_VIDEO)
|
|
|
|
list (APPEND ALL_FILES ${ALL_FILES}
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src/media/video/v4l2/video_device_impl.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src/media/video/v4l2/video_device_monitor_impl.cpp
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
list (APPEND ALL_FILES ${ALL_FILES}
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src/media/audio/pulseaudio/audiostream.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src/media/audio/pulseaudio/pulselayer.cpp
|
|
|
|
)
|
|
|
|
elseif(MSVC)
|
2019-12-06 16:48:20 -05:00
|
|
|
list (APPEND ALL_FILES ${ALL_FILES}
|
|
|
|
"${Source_Files__media__audio__portaudio}"
|
|
|
|
"${Source_Files__media__video__uwpvideo}"
|
|
|
|
"${Source_Files__media__video__winvideo}"
|
2023-03-01 12:13:40 -05:00
|
|
|
"${Source_Files__media__audio__webrtc}"
|
2019-12-06 16:48:20 -05:00
|
|
|
)
|
2023-01-12 12:28:43 -05:00
|
|
|
endif()
|
|
|
|
|
|
|
|
add_library(${PROJECT_NAME} STATIC ${ALL_FILES})
|
|
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER "daemon")
|
|
|
|
set_target_properties (${PROJECT_NAME} PROPERTIES CXX_STANDARD 17)
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
|
|
|
PACKAGE_NAME="${PACKAGE_NAME}"
|
2023-01-18 15:31:12 -05:00
|
|
|
PACKAGE_VERSION="${PROJECT_VERSION}"
|
2023-01-12 12:28:43 -05:00
|
|
|
PACKAGE="jami"
|
|
|
|
LIBJAMI_BUILD
|
|
|
|
HAVE_RINGNS
|
|
|
|
ASIO_STANDALONE
|
|
|
|
MSGPACK_NO_BOOST
|
|
|
|
)
|
|
|
|
if (JAMI_VIDEO)
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE ENABLE_VIDEO)
|
|
|
|
endif()
|
|
|
|
if (JAMI_PLUGIN)
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE ENABLE_PLUGIN)
|
|
|
|
endif()
|
|
|
|
if (JAMI_NATPMP)
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_LIBNATPMP)
|
|
|
|
endif()
|
|
|
|
if (ANDROID)
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_OPENSL)
|
|
|
|
endif()
|
|
|
|
target_include_directories(${PROJECT_NAME} PRIVATE
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/.;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/config;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/connectivity;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/connectivity/security;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/connectivity/sip;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/connectivity/upnp;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/connectivity/upnp/igd;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/connectivity/upnp/protocol;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/connectivity/upnp/mapping;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/client;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/hooks;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/im;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/media;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/jamidht;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/jamidht/eth;"
|
2023-01-12 17:15:44 -05:00
|
|
|
PUBLIC
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/jami;"
|
2023-01-12 12:28:43 -05:00
|
|
|
)
|
2019-12-06 16:48:20 -05:00
|
|
|
|
2023-01-12 12:28:43 -05:00
|
|
|
if(MSVC)
|
2019-12-06 16:48:20 -05:00
|
|
|
################################################################################
|
|
|
|
# Target
|
|
|
|
################################################################################
|
|
|
|
include("CMake/Utils.cmake")
|
|
|
|
use_props(${PROJECT_NAME} "${CMAKE_CONFIGURATION_TYPES}" "${DEFAULT_CXX_PROPS}")
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Include necessary .cmake file (need to init use_props first)
|
|
|
|
################################################################################
|
|
|
|
include("CMake/Default.cmake")
|
|
|
|
include("CMake/DefaultCXX.cmake")
|
|
|
|
|
2020-12-30 09:42:40 -05:00
|
|
|
# Supress generation of ZERO_CHECK
|
|
|
|
set(CMAKE_SUPPRESS_REGENERATION true)
|
2019-12-06 16:48:20 -05:00
|
|
|
set(ROOT_NAMESPACE ringdaemon)
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Target name
|
|
|
|
################################################################################
|
|
|
|
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
|
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
2021-06-29 21:27:38 -04:00
|
|
|
TARGET_NAME_RELEASELIB_WIN32 "jami"
|
2019-12-06 16:48:20 -05:00
|
|
|
)
|
|
|
|
endif()
|
|
|
|
################################################################################
|
|
|
|
# Output directory
|
|
|
|
################################################################################
|
|
|
|
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
|
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
2020-10-16 10:15:54 -04:00
|
|
|
OUTPUT_DIRECTORY_RELEASELIB_WIN32 "${CMAKE_CURRENT_SOURCE_DIR}/build/${CMAKE_VS_PLATFORM_NAME}/$<CONFIG>/bin/"
|
2019-12-06 16:48:20 -05:00
|
|
|
)
|
|
|
|
endif()
|
|
|
|
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
|
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
|
|
|
INTERPROCEDURAL_OPTIMIZATION_RELEASELIB_WIN32 "FALSE"
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
################################################################################
|
|
|
|
# Include directories
|
|
|
|
################################################################################
|
|
|
|
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
|
|
|
target_include_directories(${PROJECT_NAME} PUBLIC
|
2020-02-26 11:02:46 -05:00
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/compat/msvc;"
|
2019-12-06 16:48:20 -05:00
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/msvc;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/msvc/include;"
|
2021-02-26 10:21:04 -05:00
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/msvc/include/upnp;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/ffmpeg/Build/win32/x64/include;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/sndfile/src;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/openssl/include;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/asio/asio/include;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/restinio/dev;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/fmt/include;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/http_parser;"
|
2022-08-01 13:24:01 -04:00
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/natpmp/include"
|
2019-12-06 16:48:20 -05:00
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/msgpack-c/include;"
|
2020-10-16 10:15:54 -04:00
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/opendht/include;"
|
2019-11-29 10:42:07 -05:00
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/libarchive/libarchive;"
|
2019-12-06 16:48:20 -05:00
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/jsoncpp/include;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/yaml-cpp/include;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/pjproject/pjlib/include;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/pjproject/pjnath/include;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/pjproject/pjlib-util/include;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/pjproject/pjsip/include;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/pjproject/third_party;"
|
2020-02-26 11:02:46 -05:00
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/speexdsp/include;"
|
2019-10-09 17:06:36 -04:00
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/webrtc-audio-processing;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/portaudio/include;"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/pjproject/pjmedia/include;"
|
2022-09-08 14:23:40 -04:00
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/libgit2/include"
|
2019-12-06 16:48:20 -05:00
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Compile definitions
|
|
|
|
################################################################################
|
|
|
|
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
2021-03-11 13:47:10 -05:00
|
|
|
"_WIN32_WINNT=0x0A00;"
|
|
|
|
"STATIC_GETOPT;"
|
|
|
|
"LIBARCHIVE_STATIC;"
|
|
|
|
"OPENDHT_PROXY_CLIENT;"
|
|
|
|
"OPENDHT_PROXY_SERVER;"
|
|
|
|
"OPENDHT_PUSH_NOTIFICATIONS;"
|
|
|
|
"NATPMP_STATICLIB;"
|
|
|
|
"NDEBUG;"
|
2019-12-06 16:48:20 -05:00
|
|
|
"_USE_MATH_DEFINES;"
|
|
|
|
"_SCL_SECURE_NO_WARNINGS;"
|
|
|
|
"_CRT_SECURE_NO_WARNINGS;"
|
|
|
|
"NOMINMAX;"
|
|
|
|
"HAVE_CONFIG_H;"
|
|
|
|
"WIN32_LEAN_AND_MEAN;"
|
2021-02-26 10:21:04 -05:00
|
|
|
"WEBRTC_WIN;"
|
|
|
|
"WEBRTC_AUDIO_PROCESSING_ONLY_BUILD;"
|
|
|
|
"WEBRTC_NS_FLOAT;"
|
2019-12-06 16:48:20 -05:00
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Compile and link options
|
|
|
|
################################################################################
|
|
|
|
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
|
|
|
target_compile_options(${PROJECT_NAME} PRIVATE
|
2021-03-11 13:47:10 -05:00
|
|
|
/O2;
|
|
|
|
/Oi;
|
|
|
|
${DEFAULT_CXX_RUNTIME_LIBRARY};
|
|
|
|
/Gy;
|
|
|
|
/MP;
|
|
|
|
/Oy-;
|
|
|
|
/sdl-;
|
|
|
|
/W0;
|
|
|
|
/FC;
|
|
|
|
/FS
|
2019-12-06 16:48:20 -05:00
|
|
|
/nologo;
|
|
|
|
/Zi;
|
|
|
|
/wd4996;
|
|
|
|
/wd4503;
|
|
|
|
/wd4180;
|
|
|
|
/wd4244;
|
|
|
|
/wd4267;
|
2021-05-13 15:25:22 -04:00
|
|
|
/Zc:__cplusplus;
|
2019-12-06 16:48:20 -05:00
|
|
|
${DEFAULT_CXX_EXCEPTION_HANDLING}
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
|
|
|
target_link_options(${PROJECT_NAME} PRIVATE
|
2021-03-11 13:47:10 -05:00
|
|
|
/MACHINE:X64;
|
|
|
|
/OPT:REF;
|
|
|
|
/OPT:ICF
|
2019-12-06 16:48:20 -05:00
|
|
|
/VERBOSE:LIB;
|
|
|
|
/NODEFAULTLIB:libcmtd;
|
|
|
|
/NODEFAULTLIB:libcmt;
|
|
|
|
/OPT:NOLBR;
|
|
|
|
/OPT:NOICF;
|
|
|
|
/LTCG
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Dependencies
|
|
|
|
################################################################################
|
|
|
|
|
2020-08-20 17:52:11 -04:00
|
|
|
set(libAdditionalDependencies "${CMAKE_STATIC_LINKER_FLAGS} /LTCG
|
2021-05-13 15:25:22 -04:00
|
|
|
ws2_32.lib
|
|
|
|
advapi32.lib
|
2022-07-21 17:03:55 -03:00
|
|
|
Secur32.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/ffmpeg/Build/win32/x64/lib/libavcodec.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/ffmpeg/Build/win32/x64/lib/libavdevice.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/ffmpeg/Build/win32/x64/lib/libavfilter.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/ffmpeg/Build/win32/x64/lib/libavformat.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/ffmpeg/Build/win32/x64/lib/libavutil.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/ffmpeg/Build/win32/x64/lib/libswresample.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/ffmpeg/Build/win32/x64/lib/libswscale.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/msvc/lib/x64/libx264.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/msvc/lib/x64/libvpx.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/msvc/lib/x64/libopus.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/msvc/lib/x64/libmfx.lib
|
2021-05-13 15:25:22 -04:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/msvc/lib/x64/libgnutls.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/msvc/lib/x64/lib_json.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/opendht/build/Release/libopendht.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/argon2/vs2015/Argon2Ref/vs2015/build/Argon2Ref.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/msvc/lib/x64/secp256k1.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/yaml-cpp/msvc/Release/libyaml-cppmd.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/msvc/lib/x64/libupnp.lib
|
2022-08-01 13:24:01 -04:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/natpmp/build/Release/natpmp.lib
|
2021-05-13 15:25:22 -04:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/msvc/lib/x64/archive_static.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/pjproject/pjsip/lib/pjsip-core-x86_64-x64-vc15-Release.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/pjproject/pjsip/lib/pjsip-simple-x86_64-x64-vc15-Release.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/pjproject/pjsip/lib/pjsua2-lib-x86_64-x64-vc15-Release.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/pjproject/pjsip/lib/pjsua-lib-x86_64-x64-vc15-Release.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/pjproject/pjsip/lib/pjsip-ua-x86_64-x64-vc15-Release.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/pjproject/pjmedia/lib/pjmedia-x86_64-x64-vc15-Release.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/pjproject/pjlib-util/lib/pjlib-util-x86_64-x64-vc15-Release.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/pjproject/pjlib/lib/pjlib-x86_64-x64-vc15-Release.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/pjproject/pjnath/lib/pjnath-x86_64-x64-vc15-Release.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/fmt/msvc/Release/fmt.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/http_parser/x64/Release/http-parser.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/openssl/libcrypto.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/openssl/libssl.lib
|
2021-03-11 13:47:10 -05:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/speexdsp/lib/libspeexdsp.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/webrtc-audio-processing/build/Release/webrtc-audio-processing.lib
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/portaudio/build/Release/portaudio_static_x64.lib
|
2019-10-09 17:06:36 -04:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/contrib/build/libgit2/msvc/Release/git2.lib
|
2021-03-11 13:47:10 -05:00
|
|
|
/ignore:4006"
|
2019-12-06 16:48:20 -05:00
|
|
|
)
|
|
|
|
|
|
|
|
set ( CMAKE_STATIC_LINKER_FLAGS ${libAdditionalDependencies} )
|
2023-01-12 12:28:43 -05:00
|
|
|
else()
|
2023-01-12 17:15:44 -05:00
|
|
|
message("Contrib path: ${CONTRIB_PATH}")
|
2023-01-12 12:28:43 -05:00
|
|
|
list(APPEND CMAKE_FIND_ROOT_PATH ${CONTRIB_PATH})
|
|
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH)
|
|
|
|
list(APPEND CMAKE_PREFIX_PATH ${CONTRIB_PATH})
|
|
|
|
|
2023-02-23 11:53:28 -05:00
|
|
|
find_package (jsoncpp CONFIG REQUIRED)
|
|
|
|
find_package (yaml-cpp CONFIG REQUIRED)
|
2023-01-13 11:36:27 -05:00
|
|
|
pkg_search_module (fmt REQUIRED IMPORTED_TARGET fmt)
|
2023-02-23 11:53:28 -05:00
|
|
|
pkg_search_module (webrtcap IMPORTED_TARGET webrtc-audio-processing)
|
2023-01-12 12:28:43 -05:00
|
|
|
pkg_search_module (gnutls REQUIRED IMPORTED_TARGET gnutls)
|
|
|
|
pkg_search_module (opendht REQUIRED IMPORTED_TARGET opendht)
|
|
|
|
pkg_search_module (git2 REQUIRED IMPORTED_TARGET libgit2)
|
|
|
|
pkg_search_module (secp256k1 REQUIRED IMPORTED_TARGET libsecp256k1)
|
|
|
|
pkg_search_module (pjproject REQUIRED IMPORTED_TARGET libpjproject)
|
|
|
|
pkg_search_module (avformat REQUIRED IMPORTED_TARGET libavformat)
|
|
|
|
pkg_search_module (avdevice REQUIRED IMPORTED_TARGET libavdevice)
|
|
|
|
pkg_search_module (avfilter REQUIRED IMPORTED_TARGET libavfilter)
|
|
|
|
pkg_search_module (avcodec REQUIRED IMPORTED_TARGET libavcodec)
|
|
|
|
pkg_search_module (swresample REQUIRED IMPORTED_TARGET libswresample)
|
|
|
|
pkg_search_module (swscale REQUIRED IMPORTED_TARGET libswscale)
|
|
|
|
pkg_search_module (avutil REQUIRED IMPORTED_TARGET libavutil)
|
2023-02-23 11:53:28 -05:00
|
|
|
if (JAMI_PLUGIN)
|
|
|
|
if (APPLE)
|
|
|
|
pkg_search_module (archive REQUIRED IMPORTED_TARGET minizip)
|
|
|
|
else()
|
|
|
|
pkg_search_module (archive REQUIRED IMPORTED_TARGET libarchive)
|
|
|
|
endif()
|
|
|
|
endif()
|
2023-01-12 12:28:43 -05:00
|
|
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE
|
|
|
|
PkgConfig::opendht
|
|
|
|
PkgConfig::pjproject
|
|
|
|
PkgConfig::git2
|
|
|
|
PkgConfig::gnutls
|
|
|
|
PkgConfig::avformat
|
|
|
|
PkgConfig::avdevice
|
|
|
|
PkgConfig::avfilter
|
|
|
|
PkgConfig::avcodec
|
|
|
|
PkgConfig::swresample
|
|
|
|
PkgConfig::swscale
|
|
|
|
jsoncpp
|
|
|
|
yaml-cpp
|
2023-01-13 11:36:27 -05:00
|
|
|
PkgConfig::fmt
|
|
|
|
PkgConfig::secp256k1
|
2023-01-12 12:28:43 -05:00
|
|
|
PUBLIC
|
|
|
|
PkgConfig::avutil
|
|
|
|
)
|
|
|
|
target_compile_options(${PROJECT_NAME} PRIVATE
|
|
|
|
-fvisibility=hidden
|
|
|
|
-Wall -Wextra
|
|
|
|
-Wnon-virtual-dtor
|
|
|
|
-Wno-deprecated
|
|
|
|
-Wno-deprecated-declarations
|
|
|
|
-Wno-unknown-pragmas
|
|
|
|
)
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
|
|
|
JAMI_DATADIR="${JAMI_DATADIR}"
|
|
|
|
PJ_AUTOCONF=1
|
|
|
|
)
|
|
|
|
if (ANDROID)
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE OpenSLES log)
|
2023-01-13 11:36:27 -05:00
|
|
|
elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE
|
|
|
|
PkgConfig::udev
|
|
|
|
PkgConfig::pulseaudio
|
|
|
|
)
|
2023-01-12 12:28:43 -05:00
|
|
|
endif()
|
|
|
|
if (JAMI_NATPMP)
|
2023-01-13 11:36:27 -05:00
|
|
|
if (natpmp_FOUND)
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE PkgConfig::natpmp)
|
|
|
|
elseif (natpmp_LIBRARIES)
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE natpmp_LIBRARIES)
|
|
|
|
endif()
|
2023-01-12 12:28:43 -05:00
|
|
|
endif()
|
|
|
|
if (JAMI_PUPNP)
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE upnp)
|
|
|
|
endif()
|
2023-02-23 11:53:28 -05:00
|
|
|
if (JAMI_PLUGIN)
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE PkgConfig::archive)
|
|
|
|
endif()
|
|
|
|
if (webrtcap_FOUND)
|
|
|
|
target_sources(${PROJECT_NAME} PRIVATE ${Source_Files__media__audio__webrtc} )
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE PkgConfig::webrtcap)
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_WEBRTC_AP)
|
|
|
|
endif()
|
2023-01-12 12:28:43 -05:00
|
|
|
|
|
|
|
if (JAMI_JNI)
|
|
|
|
# Build jni binding
|
|
|
|
add_library(${PROJECT_NAME}-jni SHARED ${CMAKE_CURRENT_SOURCE_DIR}/bin/jni/jami_wrapper.cpp)
|
|
|
|
target_link_directories(${PROJECT_NAME}-jni PRIVATE ${CONTRIB_PATH}/lib)
|
|
|
|
target_link_libraries(${PROJECT_NAME}-jni ${PROJECT_NAME} android log)
|
|
|
|
set_target_properties(${PROJECT_NAME}-jni PROPERTIES CXX_STANDARD 17)
|
2023-01-13 11:36:27 -05:00
|
|
|
target_compile_options(${PROJECT_NAME}-jni PRIVATE
|
|
|
|
-fvisibility=hidden
|
|
|
|
-Wall -Wextra
|
|
|
|
-Wnon-virtual-dtor
|
|
|
|
-Wno-deprecated
|
|
|
|
-Wno-deprecated-declarations
|
|
|
|
-Wno-unknown-pragmas
|
|
|
|
-Wno-unused-function
|
|
|
|
-Wno-unused-parameter
|
|
|
|
)
|
2023-01-12 12:28:43 -05:00
|
|
|
target_link_options(${PROJECT_NAME}-jni PRIVATE
|
|
|
|
-Wl,-Bsymbolic
|
|
|
|
-Wall -Wextra
|
|
|
|
)
|
|
|
|
endif()
|
2019-12-06 16:48:20 -05:00
|
|
|
|
2023-01-13 11:36:27 -05:00
|
|
|
if (JAMI_DBUS)
|
|
|
|
find_program(DBusXml2Cpp dbusxx-xml2cpp REQUIRED)
|
|
|
|
pkg_search_module (DBusCpp REQUIRED IMPORTED_TARGET dbus-c++-1)
|
|
|
|
configure_file(
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/net.jami.daemon.service.in
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/cx.ring.Ring.service
|
|
|
|
@ONLY)
|
|
|
|
set(DBUS_XML_FILES
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/cx.ring.Ring.CallManager.xml
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/cx.ring.Ring.ConfigurationManager.xml
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/cx.ring.Ring.Instance.xml
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/cx.ring.Ring.PresenceManager.xml
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/cx.ring.Ring.VideoManager.xml
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/cx.ring.Ring.PluginManagerInterface.xml
|
|
|
|
)
|
|
|
|
set(DBUS_ADAPTOR_FILES
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/dbuscallmanager.adaptor.h
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/dbusconfigurationmanager.adaptor.h
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/dbusinstance.adaptor.h
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/dbuspresencemanager.adaptor.h
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/dbusvideomanager.adaptor.h
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/dbuspluginmanagerinterface.adaptor.h
|
|
|
|
)
|
|
|
|
set(DBUS_FILES
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/dbuscallmanager.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/dbusclient.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/dbusconfigurationmanager.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/dbusinstance.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/dbuspresencemanager.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bin/dbus/main.cpp
|
|
|
|
)
|
|
|
|
|
|
|
|
# XML adaptors
|
|
|
|
foreach(DBUS_XML_FILE ${DBUS_XML_FILES})
|
|
|
|
list(FIND DBUS_XML_FILES ${DBUS_XML_FILE} DBUS_XML_FILE_INDEX)
|
|
|
|
list(GET DBUS_ADAPTOR_FILES ${DBUS_XML_FILE_INDEX} DBUS_ADAPTOR_FILE)
|
|
|
|
add_custom_command(
|
|
|
|
OUTPUT ${DBUS_ADAPTOR_FILE}
|
|
|
|
COMMAND ${DBusXml2Cpp} ${DBUS_XML_FILE} --adaptor=${DBUS_ADAPTOR_FILE}
|
|
|
|
DEPENDS ${DBUS_XML_FILE}
|
|
|
|
)
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
# Jamid
|
|
|
|
add_executable(jamid
|
|
|
|
${DBUS_FILES}
|
|
|
|
${DBUS_ADAPTOR_FILES}
|
|
|
|
)
|
|
|
|
target_link_libraries(jamid ${PROJECT_NAME} PkgConfig::DBusCpp)
|
|
|
|
endif()
|
|
|
|
|
2022-07-27 15:10:17 -04:00
|
|
|
endif()
|