mirror of
https://git.jami.net/savoirfairelinux/jami-client-qt.git
synced 2025-07-18 22:45:25 +02:00

This patch moves already existing packaging scripts from jami-project into client-qt. Introduced changes are: + WITH_SUBMODULE must search in system lib too because for packaging client-qt (for rpm) will be built separately, and will depend on jami-daemon. + Fix appdata.xml (replace old wiki with docs.jami.net) + path changes (because we build in client-qt not jami-project). GitLab: #853 Change-Id: I1313830d85c8094fcbcc52e22033a2add7b1e89f
158 lines
4.8 KiB
Makefile
Executable file
158 lines
4.8 KiB
Makefile
Executable file
#!/usr/bin/make -f
|
|
# -*- makefile -*-
|
|
|
|
# Hardening
|
|
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
|
DPKG_EXPORT_BUILDFLAGS = 1
|
|
include /usr/share/dpkg/buildflags.mk
|
|
|
|
# Ubuntu defaults to use -Bsymbolic-functions, which breaks linking
|
|
# shared objects with static FFmpeg archives (see:
|
|
# https://bugs.launchpad.net/ubuntu/+source/ffmpeg/+bug/1942352).
|
|
ifeq ($(shell dpkg-vendor --derives-from Ubuntu && echo yes),yes)
|
|
ifneq (,$(LDFLAGS))
|
|
LDFLAGS := $(filter-out %-Bsymbolic-functions,$(LDFLAGS))
|
|
endif
|
|
endif
|
|
|
|
# Number of CPUS
|
|
NO_CPUS=$(shell nproc)
|
|
ifeq ($(NO_CPUS),0)
|
|
NO_CPUS=1
|
|
endif
|
|
|
|
# Binary package names
|
|
JAMI_ALL_IN_ONE_PKG_NAME="jami-all"
|
|
JAMI_CLIENT_PKG_NAME="jami"
|
|
JAMI_DAEMON_PKG_NAME="jami-daemon"
|
|
|
|
# Bundled packages from contrib
|
|
BUNDLED_PKGS=""
|
|
ifeq (debian_10,$(findstring debian_10, $(DISTRIBUTION)))
|
|
# Daemon's bundled libarchive does not build on Debian 10
|
|
BUNDLED_PKGS="--disable-libarchive"
|
|
endif
|
|
ifeq (ubuntu_18.04,$(findstring ubuntu_18.04, $(DISTRIBUTION)))
|
|
# Daemon's bundled libarchive does not build on Ubuntu 18.04
|
|
BUNDLED_PKGS="--disable-libarchive"
|
|
endif
|
|
ifeq (raspbian_10_armhf,$(findstring raspbian_10_armhf, $(DISTRIBUTION)))
|
|
# Raspbian's yaml-cpp lib does not work properly
|
|
BUNDLED_PKGS="--enable-ffmpeg --enable-yaml-cpp"
|
|
# Add host environment variables
|
|
CMAKE_OPTIONS=-DCHOST=${HOST_ARCH} \
|
|
-DCMAKE_C_COMPILER=${HOST_ARCH}-gcc \
|
|
-DCMAKE_CXX_COMPILER=${HOST_ARCH}-g++ \
|
|
-DCMAKE_FIND_ROOT_PATH=/usr/${HOST_ARCH} \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DPKG_CONFIG_EXECUTABLE=/usr/bin/${HOST_ARCH}-pkg-config
|
|
endif
|
|
|
|
# Qt-related variables
|
|
QT_JAMI_PREFIX := ${QT_JAMI_PREFIX}
|
|
export PATH := $(QT_JAMI_PREFIX)/bin:${PATH}
|
|
export LD_LIBRARY_PATH := $(QT_JAMI_PREFIX)/lib:${LD_LIBRARY_PATH}
|
|
export PKG_CONFIG_PATH := $(QT_JAMI_PREFIX)/lib/pkgconfig:${PKG_CONFIG_PATH}
|
|
export CMAKE_PREFIX_PATH := $(QT_JAMI_PREFIX)/lib/cmake:${CMAKE_PREFIX_PATH}
|
|
export CFLAGS := $(CFLAGS) -fno-lto
|
|
export CXXFLAGS := $(CXXFLAGS) -fno-lto
|
|
|
|
# Installation directories.
|
|
OCI_INSTALL_DIR = $(CURDIR)/debian/$(JAMI_ALL_IN_ONE_PKG_NAME)
|
|
|
|
%:
|
|
dh $@
|
|
|
|
override_dh_auto_configure:
|
|
|
|
override_dh_auto_build:
|
|
# Daemon contribs build + configure
|
|
mkdir -p daemon/contrib/native
|
|
ifeq (ubuntu_18.04,$(findstring ubuntu_18.04, $(DISTRIBUTION)))
|
|
sed -i 's/GNUTLS_CONF :=/& --without-zstd/' daemon/contrib/src/gnutls/rules.mak
|
|
endif
|
|
cd daemon/contrib/native && \
|
|
../bootstrap \
|
|
--host=${HOST_ARCH} \
|
|
--disable-downloads \
|
|
--no-checksums \
|
|
--disable-ogg \
|
|
--disable-flac \
|
|
--disable-vorbis \
|
|
--disable-vorbisenc \
|
|
--disable-speex \
|
|
--disable-sndfile \
|
|
--disable-gsm \
|
|
--disable-speexdsp \
|
|
--disable-natpmp \
|
|
--enable-gnutls $(BUNDLED_PKGS) && \
|
|
make list && \
|
|
make -j$(NO_CPUS) V=1
|
|
cd daemon && \
|
|
./autogen.sh && \
|
|
./configure \
|
|
--prefix=/usr \
|
|
--host=${HOST_ARCH}
|
|
|
|
# Daemon build
|
|
make -C daemon -j$(NO_CPUS) V=1
|
|
pod2man daemon/man/jamid.pod > daemon/jamid.1
|
|
|
|
# Qt client configure and build
|
|
mkdir build && \
|
|
cd build && \
|
|
cmake \
|
|
-DCMAKE_INSTALL_PREFIX=/usr \
|
|
-DLIBJAMI_BUILD_DIR=$(CURDIR)/daemon/src \
|
|
-DENABLE_LIBWRAP=true \
|
|
$(CMAKE_OPTIONS) ..
|
|
make -C build -j$(NO_CPUS) V=1
|
|
|
|
override_dh_auto_clean:
|
|
# Daemon clean
|
|
[ -f daemon/contrib/native/Makefile ] && \
|
|
make -C daemon/contrib/native distclean || true
|
|
rm -rfv daemon/contrib/native
|
|
rm -rfv daemon/jamid.1
|
|
|
|
# Qt client clean
|
|
# CMake build system has no distclean target, so use clean.
|
|
[ -f build/Makefile ] && make -C build clean || true
|
|
rm -rfv build
|
|
|
|
override_dh_auto_install:
|
|
# Daemon install
|
|
cd daemon && make DESTDIR=$(CURDIR)/debian/$(JAMI_DAEMON_PKG_NAME) install
|
|
rm -rfv $(CURDIR)/debian/$(JAMI_DAEMON_PKG_NAME)/usr/include
|
|
rm -rfv $(CURDIR)/debian/$(JAMI_DAEMON_PKG_NAME)/usr/lib/*.a
|
|
rm -rfv $(CURDIR)/debian/$(JAMI_DAEMON_PKG_NAME)/usr/lib/*.la
|
|
|
|
# Qt client install
|
|
cd build && \
|
|
make DESTDIR=$(CURDIR)/debian/$(JAMI_CLIENT_PKG_NAME) install
|
|
|
|
## Custom Qt package for Jami (libqt-jami)
|
|
## Copy our own Qt library package content into the OCI package.
|
|
for file_name in $$(dpkg-query -L libqt-jami); do \
|
|
mkdir -p "$(OCI_INSTALL_DIR)$$(dirname $$file_name)"; \
|
|
test -d "$$file_name" && continue; \
|
|
cp "$$file_name" "$(OCI_INSTALL_DIR)$$file_name"; \
|
|
done
|
|
|
|
# Jami all-in-one install
|
|
# Daemon
|
|
cd daemon && make DESTDIR=$(CURDIR)/debian/$(JAMI_ALL_IN_ONE_PKG_NAME) install
|
|
rm -rfv $(CURDIR)/debian/$(JAMI_ALL_IN_ONE_PKG_NAME)/usr/include
|
|
rm -rfv $(CURDIR)/debian/$(JAMI_ALL_IN_ONE_PKG_NAME)/usr/lib/*.a
|
|
rm -rfv $(CURDIR)/debian/$(JAMI_ALL_IN_ONE_PKG_NAME)/usr/lib/*.la
|
|
# Qt client
|
|
cd build && \
|
|
make DESTDIR=$(CURDIR)/debian/$(JAMI_ALL_IN_ONE_PKG_NAME) install
|
|
|
|
override_dh_shlibdeps:
|
|
dh_shlibdeps -- -x$(JAMI_ALL_IN_ONE_PKG_NAME)
|
|
|
|
tmpdir:= $(shell mktemp -d)
|
|
workdir:= $(shell pwd)
|
|
PKD := $(abspath $(dir $(MAKEFILE_LIST)))
|
|
version_to_download := $(shell dpkg-parsechangelog -ldebian/changelog | perl -ne 'print $$1 if m{^Version:\s+(?:\d+:)?(\d.*)(?:\~dfsg.+)(?:\-\d+.*)};')
|