blob: 2d2e7c9fc4bedba0215d4ddb08246fcfefeb7996 [file] [log] [blame]
#!/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_CLIENT_GNOME_PKG_NAME="jami-gnome"
JAMI_LIB_CLIENT_PKG_NAME="jami-libclient"
JAMI_DAEMON_PKG_NAME="jami-daemon"
# Bundled packages from contrib
BUNDLED_PKGS=""
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} \
-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}
# 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
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 \
--without-dbus \
--host=${HOST_ARCH}
# Daemon build
make -C daemon -j$(NO_CPUS) V=1
pod2man daemon/man/jamid.pod > daemon/jamid.1
# Libringclient configure
cd lrc && \
mkdir build && \
cd build && \
cmake \
-DRING_BUILD_DIR=$(CURDIR)/daemon/src \
-DENABLE_LIBWRAP=true \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
$(CMAKE_OPTIONS) ..
# libringclient build
make -C lrc/build -j$(NO_CPUS) V=1
# GNOME client configure
cd client-gnome && \
mkdir build && \
cd build && \
cmake -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DLibRingClient_PROJECT_DIR=/$(CURDIR)/lrc \
-DGSETTINGS_LOCALCOMPILE=OFF \
$(CMAKE_OPTIONS) ..
# GNOME client build
make -C client-gnome/build LDFLAGS="-lpthread" -j$(NO_CPUS) V=1
# Qt client configure and build
cd client-qt && \
mkdir build && \
cd build && \
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DLRC=$(CURDIR)/lrc \
$(CMAKE_OPTIONS) ..
make -C client-qt/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
#########################
## libringclient clean ##
#########################
# CMake build system has no distclean target, so use clean.
[ -f lrc/build/Makefile ] && make -C lrc/build clean || true
rm -rfv lrc/build
########################
## gnome client clean ##
########################
# CMake build system has no distclean target, so use clean.
[ -f client-gnome/build/Makefile ] && \
make -C client-gnome/build clean || true
rm -rfv client-gnome/build
#####################
## qt client clean ##
#####################
# CMake build system has no distclean target, so use clean.
[ -f client-qt/build/Makefile ] && make -C client-qt/build clean || true
rm -rfv client-qt/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
#########################
## Jami client install ##
#########################
## LibRingClient
cd lrc/build && make DESTDIR=$(CURDIR)/debian/$(JAMI_LIB_CLIENT_PKG_NAME) install
rm -rfv $(CURDIR)/debian/$(JAMI_LIB_CLIENT_PKG_NAME)/usr/include
# This is a symlink, should be in -dev package
rm -v $(CURDIR)/debian/$(JAMI_LIB_CLIENT_PKG_NAME)/usr/lib/libringclient.so
# cmake files
rm -rfv $(CURDIR)/debian/$(JAMI_CLIENT_PKG_NAME)/usr/lib/cmake
## GNOME client
cd client-gnome/build && \
make DESTDIR=$(CURDIR)/debian/$(JAMI_CLIENT_GNOME_PKG_NAME) install
rm -rfv $(CURDIR)/debian/$(JAMI_CLIENT_GNOME_PKG_NAME)/usr/bin/jami
## Qt client
cd client-qt/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 AiO 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
## LibRingClient
cd lrc/build && make DESTDIR=$(CURDIR)/debian/$(JAMI_ALL_IN_ONE_PKG_NAME) install
rm -rfv $(CURDIR)/debian/$(JAMI_ALL_IN_ONE_PKG_NAME)/usr/include
# This is a symlink, should be in -dev package
rm -v $(CURDIR)/debian/$(JAMI_ALL_IN_ONE_PKG_NAME)/usr/lib/libringclient.so
# cmake files
rm -rfv $(CURDIR)/debian/$(JAMI_ALL_IN_ONE_PKG_NAME)/usr/lib/cmake
## Qt client
cd client-qt/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+.*)};')