#!/usr/bin/make -f # -*- makefile -*- # Hardening export DEB_BUILD_MAINT_OPTIONS = hardening=+all DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/buildflags.mk # Build with LFS (See #913186) CFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 CXXFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 # Number of CPUS NO_CPUS=$(shell nproc) ifeq ($(NO_CPUS),0) NO_CPUS=1 endif %: dh $@ override_dh_auto_configure: ############################################### ## Re-create tarballs from tarballs-unpacked ## ############################################### mkdir -p daemon/contrib/tarballs # Create tarballs for i in $(CURDIR)/daemon/contrib/tarballs-unpacked/*; do \ projectname=`basename $$i` && \ cd $$i && tar -caf ../../tarballs/$$projectname * && \ echo "Repacked $$projectname"; \ done ########################### ## daemon configure ## ########################### mkdir -p daemon/contrib/native cd daemon/contrib/native && \ ../bootstrap \ --disable-downloads \ --no-checksums \ --disable-ogg \ --disable-flac \ --disable-gmp \ --disable-vorbis \ --disable-vorbisenc \ --disable-speex \ --disable-sndfile \ --disable-gsm \ --disable-speexdsp \ --disable-asio \ --disable-boost \ --disable-cryptopp \ --disable-ffmpeg \ --disable-restbed \ --disable-vpx \ --disable-x264 \ --disable-yaml-cpp \ --disable-opendht \ --disable-gnutls \ --disable-dbus-cpp \ --disable-secp256k1 \ --disable-upnp \ --disable-natpmp && \ make list && \ make -j$(NO_CPUS) V=1 cd daemon && \ ./autogen.sh && \ ./configure \ --prefix=/usr \ --disable-shared ############################# ## libringclient configure ## ############################# cd lrc && \ mkdir build && \ cd build && \ cmake \ -DRING_BUILD_DIR=$(CURDIR)/daemon/src \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Debug \ .. ############################ ## gnome client configure ## ############################ cd client-gnome && \ mkdir build && \ cd build && \ cmake \ -DCMAKE_INSTALL_PREFIX=/usr \ -DLibRingClient_PROJECT_DIR=/$(CURDIR)/lrc \ -DGSETTINGS_LOCALCOMPILE=OFF \ .. dh_auto_configure override_dh_auto_build: ####################### ## Ring Daemon build ## ####################### make -C daemon -j$(NO_CPUS) V=1 pod2man daemon/man/dring.pod > daemon/dring.1 ######################### ## libringclient build ## ######################### make -C lrc/build -j$(NO_CPUS) V=1 ######################## ## gnome client build ## ######################## make -C client-gnome/build LDFLAGS="-lpthread" -j$(NO_CPUS) V=1 override_dh_auto_clean: ################################ ## Generated contrib tarballs ## ################################ rm -rfv daemon/contrib/tarballs ####################### ## daemon clean ## ####################### if [ -f daemon/contrib/native/Makefile ]; then make -C daemon/contrib/native distclean; fi rm -rfv daemon/contrib/native rm -rfv daemon/dring.1 ######################### ## libringclient clean ## ######################### if [ -f lrc/build/Makefile ]; then make -C lrc/build distclean; fi rm -rfv lrc/build ######################## ## gnome client clean ## ######################## if [ -f client-gnome/build/Makefile ]; then make -C client-gnome/build distclean; fi rm -rfv client-gnome/build override_dh_auto_install: ######################### ## daemon install ## ######################### cd daemon && make DESTDIR=$(CURDIR)/debian/jami-daemon install rm -rfv $(CURDIR)/debian/jami-daemon/usr/include rm -rfv $(CURDIR)/debian/jami-daemon/usr/lib/*.a rm -rfv $(CURDIR)/debian/jami-daemon/usr/lib/*.la ########################### ## libringclient install ## ########################### cd lrc/build && make DESTDIR=$(CURDIR)/debian/jami install rm -rfv $(CURDIR)/debian/jami/usr/include # This is a symlink, should be in -dev package rm -v $(CURDIR)/debian/jami/usr/lib/libringclient.so # cmake files rm -rfv $(CURDIR)/debian/jami/usr/lib/cmake ########################## ## gnome client install ## ########################## cd client-gnome/build && make DESTDIR=$(CURDIR)/debian/jami install # Remove ring binary: it is not needed for now rm $(CURDIR)/debian/jami/usr/bin/ring.cx 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.*)(?:\~ds.+)(?:\-\d+.*)};') # Repacks the tarball with contrib tarballs unpacked. get-orig-source: # Download ring tarball if [ -n "$$GET_ORIG_SOURCE_OVERRIDE_USCAN_TARBALL" ]; then \ mv $$GET_ORIG_SOURCE_OVERRIDE_USCAN_TARBALL ${tmpdir}; \ else \ uscan --rename --destdir=${tmpdir} --download-version ${version_to_download} ;\ fi # Unpack ring tarball tar -C ${tmpdir} -xf ${tmpdir}/*.tar.* # Remove original tarball rm ${tmpdir}/*.tar.* # Unpack all of the orig tarballs into tarballs-unpacked mkdir ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked for i in `find ${tmpdir}/ring-project/daemon/contrib/tarballs/ -name "*.tar.*"`; do \ projectname=`basename $$i` && \ mkdir ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/$$projectname && \ tar -C ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/$$projectname -xf $$i && \ echo "Unpacked $$projectname"; \ done ################### ## Exclude files ## ################### # This does not exclude everything that we need to exclude. # debian/copyright's File-Excluded section also excludes files. ## pjproject rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/g7221 # non-distributable (requires a license from Polycom) rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/ilbc # non distributable (the version included with pjproject) rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/milenage # non distributable rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/BaseClasses # non distributable (?) rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/portaudio # not needed rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/speex # not needed rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/mp3 # not needed rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/gsm # not needed rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/bdsound # not needed #rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/third_party/srtp # not needed rm -f ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/pjmedia/src/pjmedia-audiodev/s60_g729_bitstream.h # non distributable rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/build/vs # not needed, VisualStudio files. rm -f ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/pjsip-apps/src/swig/java/android/gradle/wrapper/* # not needed rm -f ${tmpdir}/ring-project/daemon/contrib/tarballs-unpacked/pjproject-*/pjproject-*/pjsip-apps/src/pjsua/android/gradle/wrapper/* # not needed # Remove all contrib tarballs rm -rf ${tmpdir}/ring-project/daemon/contrib/tarballs # Create the new tarball cd ${tmpdir} && tar -czf ${workdir}/ring_${version_to_download}~ds1.orig.tar.gz ring-project # Clear the temp dir rm -rf ${tmpdir}