mirror of
https://git.jami.net/savoirfairelinux/jami-client-qt.git
synced 2025-09-10 12:03:18 +02:00
build: use cmake instead autotools
Change-Id: I73657d7fb1cd70bb150eefc2e5e60a88d1259caf
This commit is contained in:
parent
bb359f851b
commit
22be4be864
6 changed files with 81 additions and 110 deletions
2
3rdparty/md4c
vendored
2
3rdparty/md4c
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 635f29673582c55fb0b897b2b03236dd9f86c1ed
|
||||
Subproject commit ad8d41127b94e2f0633ad14b3787f0bc4613a689
|
|
@ -26,7 +26,7 @@ set(CMAKE_SCRIPTS_DIR ${PROJECT_SOURCE_DIR}/extras/build/cmake)
|
|||
include(${CMAKE_SCRIPTS_DIR}/extra_tools.cmake)
|
||||
|
||||
option(WITH_DAEMON_SUBMODULE "Build with daemon submodule" ON)
|
||||
option(JAMICORE_AS_SUBDIR "Build Jami-core as a subdir dependency" OFF)
|
||||
option(JAMICORE_AS_SUBDIR "Build Jami-core as a subdir dependency" ON)
|
||||
option(WITH_WEBENGINE "Build with WebEngine" ON)
|
||||
option(ENABLE_LIBWRAP "Enable libwrap (single process mode)" ON)
|
||||
if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
|
@ -62,6 +62,7 @@ endif()
|
|||
# client cmake.
|
||||
if(JAMICORE_AS_SUBDIR)
|
||||
add_subdirectory(${DAEMON_DIR})
|
||||
set(LIBJAMI_LIB jami-core)
|
||||
endif()
|
||||
|
||||
# init some variables for includes, libs, etc.
|
||||
|
@ -234,11 +235,12 @@ cloned this repository via git, perhaps you did not initialize its \
|
|||
submodules afterwards. You can do so by running \"git submodule \
|
||||
update --init\" in the repository.")
|
||||
endif()
|
||||
set(CMAKE_MODULE_PATH
|
||||
${CMAKE_MODULE_PATH} "${EXTRAS_DIR}/build/cmake/modules")
|
||||
find_package(LibJami REQUIRED)
|
||||
if(LIBJAMI_FOUND)
|
||||
include_directories(${LIBJAMI_INCLUDE_DIR})
|
||||
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/extras/build/cmake/modules)
|
||||
if (NOT JAMICORE_AS_SUBDIR)
|
||||
find_package(LibJami REQUIRED)
|
||||
if(LIBJAMI_FOUND)
|
||||
include_directories(${LIBJAMI_INCLUDE_DIRS})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(FindPython3)
|
||||
|
@ -444,7 +446,7 @@ set(LIBJAMI_CONTRIB_DIR "${DAEMON_DIR}/contrib")
|
|||
find_path(AVUTIL_INCLUDE_DIR libavutil/avutil.h
|
||||
PATHS
|
||||
${LIBJAMI_CONTRIB_DIR}/native/ffmpeg
|
||||
${LIBJAMI_CONTRIB_DIR}/apple-darwin/include/
|
||||
${LIBJAMI_CONTRIB_DIR}/apple-darwin${CMAKE_SYSTEM_VERSION}/include/
|
||||
${LIBJAMI_CONTRIB_DIR}/build/ffmpeg/Build/win32/x64/include)
|
||||
include_directories(${AVUTIL_INCLUDE_DIR})
|
||||
|
||||
|
@ -574,19 +576,6 @@ elseif (NOT APPLE)
|
|||
add_definitions(${LIBGDKPIXBUF_CFLAGS})
|
||||
endif()
|
||||
|
||||
# Link against the version of libavutil built in the daemon's contribs to
|
||||
# make sure we don't have ABI incompatibility issues.
|
||||
set(ARCHITECTURE ${CMAKE_LIBRARY_ARCHITECTURE})
|
||||
if (NOT ARCHITECTURE)
|
||||
execute_process(COMMAND gcc -dumpmachine COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE)
|
||||
endif()
|
||||
list(PREPEND CMAKE_PREFIX_PATH
|
||||
${LIBJAMI_CONTRIB_DIR}/${ARCHITECTURE})
|
||||
pkg_check_modules(avutil REQUIRED IMPORTED_TARGET libavutil=58.2.100)
|
||||
list(REMOVE_ITEM CMAKE_PREFIX_PATH
|
||||
${LIBJAMI_CONTRIB_DIR}/${ARCHITECTURE})
|
||||
list(APPEND CLIENT_LIBS PkgConfig::avutil)
|
||||
|
||||
include_directories(
|
||||
${LIBCLIENT_SRC_DIR}
|
||||
${LIBNM_INCLUDE_DIRS}
|
||||
|
|
|
@ -41,7 +41,6 @@ set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib;.so;.dll")
|
|||
set(LIBJAMI_NAMES
|
||||
jami-core
|
||||
jami
|
||||
ring
|
||||
)
|
||||
|
||||
if(WITH_DAEMON_SUBMODULE)
|
||||
|
|
|
@ -124,79 +124,78 @@ else
|
|||
BUILD_DIR="build"
|
||||
fi
|
||||
|
||||
# jamid
|
||||
DAEMON="${TOP}/daemon"
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
sh "${TOP}"/extras/scripts/build_daemon_macos.sh -a "$arch" -d "$debug"
|
||||
else
|
||||
cd "$DAEMON"
|
||||
|
||||
# Build the contribs.
|
||||
mkdir -p contrib/native
|
||||
(
|
||||
cd contrib/native
|
||||
../bootstrap ${prefix:+"--prefix=$prefix"} ${asan:+"--enable-asan"}
|
||||
make -j"${proc}"
|
||||
)
|
||||
|
||||
if [[ "${enable_libwrap}" != "true" ]]; then
|
||||
# Disable shared if requested
|
||||
if [[ "$OSTYPE" != "darwin"* ]]; then
|
||||
CONFIGURE_FLAGS+=" --disable-shared"
|
||||
fi
|
||||
else
|
||||
CONFIGURE_FLAGS+="--without-dbus"
|
||||
fi
|
||||
|
||||
BUILD_TYPE="Release"
|
||||
if [ "${debug}" = "true" ]; then
|
||||
BUILD_TYPE="Debug"
|
||||
CONFIGURE_FLAGS+=" --enable-debug"
|
||||
fi
|
||||
|
||||
if [ "${asan}" = "true" ]; then
|
||||
CONFIGURE_FLAGS+=" --enable-asan"
|
||||
fi
|
||||
|
||||
# Build the daemon itself.
|
||||
test -f configure || ./autogen.sh
|
||||
|
||||
if [ "${global}" = "true" ]; then
|
||||
./configure ${CONFIGURE_FLAGS} ${prefix:+"--prefix=$prefix"}
|
||||
else
|
||||
./configure ${CONFIGURE_FLAGS} --prefix="${INSTALL_DIR}"
|
||||
fi
|
||||
make -j"${proc}" V=1
|
||||
make_install "${global}" "${priv_install}"
|
||||
|
||||
# Verify system's version if no path provided.
|
||||
if [ -z "$qtpath" ]; then
|
||||
sys_qtver=""
|
||||
if command -v qmake6 &> /dev/null; then
|
||||
sys_qtver=$(qmake6 -v)
|
||||
elif command -v qmake-qt6 &> /dev/null; then
|
||||
sys_qtver=$(qmake-qt6 -v) # Fedora
|
||||
elif command -v qmake &> /dev/null; then
|
||||
sys_qtver=$(qmake -v)
|
||||
else
|
||||
echo "No valid Qt found"; exit 1;
|
||||
fi
|
||||
|
||||
sys_qtver=${sys_qtver#*Qt version}
|
||||
sys_qtver=${sys_qtver%\ in\ *}
|
||||
|
||||
installed_qtver=$(echo "$sys_qtver" | cut -d'.' -f 2)
|
||||
required_qtver=$(echo $QT_MIN_VER | cut -d'.' -f 2)
|
||||
|
||||
if [[ $installed_qtver -ge $required_qtver ]] ; then
|
||||
# Set qtpath to empty in order to use system's Qt.
|
||||
qtpath=""
|
||||
else
|
||||
echo "No valid Qt found"; exit 1;
|
||||
fi
|
||||
#detect arch for macos
|
||||
CMAKE_OSX_ARCHITECTURES="arm64"
|
||||
if [[ "$arch" == 'unified' ]]; then
|
||||
CMAKE_OSX_ARCHITECTURES="x86_64;arm64"
|
||||
elif [[ "$arch" != '' ]]; then
|
||||
CMAKE_OSX_ARCHITECTURES="$arch"
|
||||
fi
|
||||
fi
|
||||
|
||||
# jamid
|
||||
DAEMON="${TOP}/daemon"
|
||||
cd "$DAEMON"
|
||||
|
||||
mkdir -p "${BUILD_DIR}"
|
||||
cd "${BUILD_DIR}"
|
||||
daemon_cmake_flags=(-DCMAKE_BUILD_TYPE="${BUILD_TYPE}")
|
||||
if [ "${asan}" = "true" ]; then
|
||||
daemon_cmake_flags+=(-DENABLE_ASAN=On)
|
||||
fi
|
||||
if [ "${enable_libwrap}" = "false" ]; then
|
||||
daemon_cmake_flags+=(-DJAMI_DBUS=On)
|
||||
else
|
||||
daemon_cmake_flags+=(-DJAMI_DBUS=Off)
|
||||
fi
|
||||
if [ "${enable_testing}" = "true" ]; then
|
||||
daemon_cmake_flags+=(-DBUILD_TESTING=On)
|
||||
else
|
||||
daemon_cmake_flags+=(-DBUILD_TESTING=Off)
|
||||
fi
|
||||
if [ "${global}" = "true" ]; then
|
||||
daemon_cmake_flags+=(${prefix:+"-DCMAKE_INSTALL_PREFIX=$prefix"})
|
||||
else
|
||||
daemon_cmake_flags+=(-DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}")
|
||||
fi
|
||||
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
daemon_cmake_flags+=(-DCMAKE_OSX_ARCHITECTURES="${CMAKE_OSX_ARCHITECTURES}")
|
||||
fi
|
||||
|
||||
cmake .. "${daemon_cmake_flags[@]}"
|
||||
make -j"${proc}" V=1
|
||||
make_install "${global}" "${priv_install}"
|
||||
|
||||
# Verify system's version if no path provided.
|
||||
if [ -z "$qtpath" ]; then
|
||||
sys_qtver=""
|
||||
if command -v qmake6 &> /dev/null; then
|
||||
sys_qtver=$(qmake6 -v)
|
||||
elif command -v qmake-qt6 &> /dev/null; then
|
||||
sys_qtver=$(qmake-qt6 -v) # Fedora
|
||||
elif command -v qmake &> /dev/null; then
|
||||
sys_qtver=$(qmake -v)
|
||||
else
|
||||
echo "No valid Qt found"; exit 1;
|
||||
fi
|
||||
|
||||
sys_qtver=${sys_qtver#*Qt version}
|
||||
sys_qtver=${sys_qtver%\ in\ *}
|
||||
|
||||
installed_qtver=$(echo "$sys_qtver" | cut -d'.' -f 2)
|
||||
required_qtver=$(echo $QT_MIN_VER | cut -d'.' -f 2)
|
||||
|
||||
if [[ $installed_qtver -ge $required_qtver ]] ; then
|
||||
# Set qtpath to empty in order to use system's Qt.
|
||||
qtpath=""
|
||||
else
|
||||
echo "No valid Qt found"; exit 1;
|
||||
fi
|
||||
fi
|
||||
# fi
|
||||
|
||||
# client
|
||||
cd "${TOP}"
|
||||
mkdir -p "${BUILD_DIR}"
|
||||
|
@ -224,13 +223,6 @@ else
|
|||
fi
|
||||
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
#detect arch for macos
|
||||
CMAKE_OSX_ARCHITECTURES="arm64"
|
||||
if [[ "$arch" == 'unified' ]]; then
|
||||
CMAKE_OSX_ARCHITECTURES="x86_64;arm64"
|
||||
elif [[ "$arch" != '' ]]; then
|
||||
CMAKE_OSX_ARCHITECTURES="$arch"
|
||||
fi
|
||||
client_cmake_flags+=(-DCMAKE_OSX_ARCHITECTURES="${CMAKE_OSX_ARCHITECTURES}")
|
||||
# build qrencode
|
||||
(
|
||||
|
|
|
@ -191,12 +191,6 @@ else()
|
|||
endif()
|
||||
|
||||
if(ENABLE_LIBWRAP)
|
||||
# The daemon is only required for when using direct linking
|
||||
if(NOT LIBJAMI_LIB)
|
||||
message(FATAL_ERROR "Jami daemon library is required when \
|
||||
building with ENABLE_LIBWRAP")
|
||||
endif()
|
||||
|
||||
# Use native calls (no DBus)
|
||||
add_definitions(-DENABLE_LIBWRAP=true)
|
||||
if (NOT (CMAKE_CXX_COMPILER_ID MATCHES "MSVC"))
|
||||
|
@ -314,7 +308,7 @@ set(LIBJAMI_CONTRIB_DIR
|
|||
find_path(AVUTIL_INCLUDE_DIR libavutil/avutil.h
|
||||
PATHS
|
||||
${LIBJAMI_CONTRIB_DIR}/native/ffmpeg
|
||||
${LIBJAMI_CONTRIB_DIR}/apple-darwin/include/
|
||||
${LIBJAMI_CONTRIB_DIR}/apple-darwin${CMAKE_SYSTEM_VERSION}/include/
|
||||
${LIBJAMI_CONTRIB_DIR}/build/ffmpeg/Build/win32/x64/include)
|
||||
include_directories(${AVUTIL_INCLUDE_DIR})
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
||||
|
@ -324,10 +318,6 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
|||
else()
|
||||
set(CC_MACHINE "")
|
||||
endif()
|
||||
find_library(AVUTIL_LIBRARY avutil
|
||||
HINTS
|
||||
${LIBJAMI_CONTRIB_DIR}/${CC_MACHINE}/lib
|
||||
${LIBJAMI_CONTRIB_DIR}/apple-darwin/lib)
|
||||
|
||||
if(ENABLE_LIBWRAP)
|
||||
list(APPEND LIBCLIENT_HEADERS directrenderer.h)
|
||||
|
@ -478,7 +468,7 @@ if(NOT(APPLE OR MSVC))
|
|||
endif()
|
||||
|
||||
if(ENABLE_LIBWRAP)
|
||||
target_link_libraries(${LIBCLIENT_NAME} qtwrapper ${LIBJAMI_LIB})
|
||||
target_link_libraries(${LIBCLIENT_NAME} qtwrapper)
|
||||
if (NOT (CMAKE_CXX_COMPILER_ID MATCHES "MSVC"))
|
||||
target_link_libraries(${LIBCLIENT_NAME} ${AVUTIL_LIBRARY})
|
||||
endif()
|
||||
|
|
|
@ -120,6 +120,7 @@ function(setup_test TEST_NAME TEST_SOURCES TEST_INPUT)
|
|||
target_link_libraries(${TEST_BINARY_NAME} ${ALL_TESTS_LIBS})
|
||||
target_include_directories(${TEST_BINARY_NAME} PUBLIC ${ALL_TESTS_INCLUDES})
|
||||
if(MSVC)
|
||||
string(TOUPPER ${CMAKE_BUILD_TYPE} BUILD_TYPE)
|
||||
set_target_properties(${TEST_BINARY_NAME} PROPERTIES
|
||||
RUNTIME_OUTPUT_DIRECTORY_${BUILD_TYPE} ${OUTPUT_DIRECTORY})
|
||||
endif()
|
||||
|
|
Loading…
Add table
Reference in a new issue