1
0
Fork 0
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:
Sébastien Blin 2025-07-08 16:44:55 -04:00 committed by Adrien Béraud
parent bb359f851b
commit 22be4be864
6 changed files with 81 additions and 110 deletions

2
3rdparty/md4c vendored

@ -1 +1 @@
Subproject commit 635f29673582c55fb0b897b2b03236dd9f86c1ed
Subproject commit ad8d41127b94e2f0633ad14b3787f0bc4613a689

View file

@ -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}

View file

@ -41,7 +41,6 @@ set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib;.so;.dll")
set(LIBJAMI_NAMES
jami-core
jami
ring
)
if(WITH_DAEMON_SUBMODULE)

View file

@ -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
(

View file

@ -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()

View file

@ -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()