#!/usr/bin/make -f # Copyright Ron Lee 2003 - 2017 #export DH_VERBOSE=1 SHELL = /bin/bash NUM_CPUS = $(shell getconf _NPROCESSORS_ONLN 2>/dev/null) PARALLEL = $(subst parallel=,,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) NJOBS = -j$(or $(PARALLEL),$(NUM_CPUS),1) DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) HARD_CPPFLAGS = -D_FORTIFY_SOURCE=2 HARD_CFLAGS = -Wformat=2 HARD_LDFLAGS = -Wl,-z,now ifneq (,$(filter-out alpha hppa arm, $(DEB_HOST_ARCH))) HARD_CFLAGS += -fstack-protector-strong --param ssp-buffer-size=4 endif ifneq (,$(filter-out ia64 hppa avr32, $(DEB_HOST_ARCH))) HARD_LDFLAGS += -Wl,-z,relro endif # Keep dpkg-buildpackage the hell out of messing with our compile flags, # we should trust upstream to know better than it what to use here. # We explicitly re-add -g and -O2 here, since by explicitly overriding # these variables, we otherwise disable autoconf adding them by default. CPPFLAGS = $(HARD_CPPFLAGS) CFLAGS = $(HARD_CFLAGS) -g -O2 CXXFLAGS = $(HARD_CFLAGS) -g -O2 LDFLAGS = $(HARD_LDFLAGS) ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS = -g -O0 endif ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) INSTALL_PROGRAM += -s endif # The mp3splt project consists of three parts, a common shared library, and # two front-end applications, one command-line the other a GUI. Even though # all parts of that are typically released in lockstep and must all be updated # together, the libmp3splt and mp3splt-gtk releases have a different version # to what the CLI mp3splt component does. (presumably because they were split # out of it at some later point in time when the GUI tool was added). # # We take the mp3splt binary package version from the changelog, since we use # its version as the source package version. For the library and GUI binary # packages, we use the upstream version of those components, to minimise any # confusion when comparing what we ship to upstream's latest release. To get # that, we parse it from the version that their respective configure reports. # The debian revision part will obviously always be the same for all of them. mp3splt_version := $(shell dpkg-parsechangelog -SVersion) debian_revision := $(shell echo $(mp3splt_version) | sed -e 's/.*-//') libmp3splt_version := $(shell ./libmp3splt/configure -V | awk '/libmp3splt configure/ {print $$3}')-$(debian_revision) mp3splt_gtk_version := $(shell ./mp3splt-gtk/configure -V | awk '/mp3splt-gtk configure/ {print $$3}')-$(debian_revision) SUBST_VARS = -Vlibmp3splt:Version=$(libmp3splt_version) -Vmp3splt-gtk:Version=$(mp3splt_gtk_version) lib_objdir := lib-objs cli_objdir := cli-objs gui_objdir := gui-objs show-versions: @echo " mp3splt_version = $(mp3splt_version)" @echo " libmp3splt_version = $(libmp3splt_version)" @echo " mp3splt_gtk_version = $(mp3splt_gtk_version)" @echo " debian_revision = $(debian_revision)" @echo " SUBST_VARS = $(SUBST_VARS)" clean: dh_testdir dh_testroot $(RM) -r $(lib_objdir) $(cli_objdir) $(gui_objdir) dh_clean $(lib_objdir)/config.status: libmp3splt/configure dh_testdir mkdir -p $(lib_objdir) cd $(lib_objdir) && \ ../libmp3splt/configure --host=$(DEB_HOST_GNU_TYPE) \ --build=$(DEB_BUILD_GNU_TYPE) \ --prefix=/usr \ --disable-maintainer-mode \ --enable-silent-rules \ CPPFLAGS="$(CPPFLAGS)" \ CFLAGS="$(CFLAGS)" \ CXXFLAGS="$(CXXFLAGS)" \ LDFLAGS="$(LDFLAGS)" \ || (cat config.log; exit 1) # Set LIBMP3SPLT_CFLAGS and LIBMP3SPLT_LIBS so that we don't need an # installed libmp3splt.pc to find the library files and headers. lib_cflags = -I$(CURDIR)/libmp3splt/include lib_ldflags = -L$(CURDIR)/$(lib_objdir)/src/.libs -lmp3splt $(cli_objdir)/config.status: mp3splt/configure dh_testdir mkdir -p $(cli_objdir) cd $(cli_objdir) && \ ../mp3splt/configure --host=$(DEB_HOST_GNU_TYPE) \ --build=$(DEB_BUILD_GNU_TYPE) \ --prefix=/usr \ --disable-maintainer-mode \ --enable-silent-rules \ --disable-rpath \ --enable-oggsplt_symlink \ --enable-flacsplt_symlink \ LIBMP3SPLT_CFLAGS="$(lib_cflags)" \ LIBMP3SPLT_LIBS="$(lib_ldflags)" \ CPPFLAGS="$(CPPFLAGS)" \ CFLAGS="$(CFLAGS)" \ CXXFLAGS="$(CXXFLAGS)" \ LDFLAGS="$(LDFLAGS)" \ || (cat config.log; exit 1) $(gui_objdir)/config.status: mp3splt-gtk/configure dh_testdir mkdir -p $(gui_objdir) cd $(gui_objdir) && \ ../mp3splt-gtk/configure --host=$(DEB_HOST_GNU_TYPE) \ --build=$(DEB_BUILD_GNU_TYPE) \ --prefix=/usr \ --disable-maintainer-mode \ --disable-scrollkeeper \ --enable-silent-rules \ --disable-rpath \ --disable-gnome \ LIBMP3SPLT_CFLAGS="$(lib_cflags)" \ LIBMP3SPLT_LIBS="$(lib_ldflags)" \ CPPFLAGS="$(CPPFLAGS)" \ CFLAGS="$(CFLAGS)" \ CXXFLAGS="$(CXXFLAGS)" \ LDFLAGS="$(LDFLAGS)" \ || (cat config.log; exit 1) build: build-arch build-arch: build-lib-stamp build-cli-stamp build-gui-stamp build-indep: build-lib-stamp: $(lib_objdir)/config.status dh_testdir $(MAKE) $(NJOBS) -C $(lib_objdir) touch $@ build-cli-stamp: $(cli_objdir)/config.status dh_testdir $(MAKE) $(NJOBS) -C $(cli_objdir) touch $@ build-gui-stamp: $(gui_objdir)/config.status dh_testdir $(MAKE) $(NJOBS) -C $(gui_objdir) touch $@ install: install-arch install-arch: install-lib-stamp install-cli-stamp install-gui-stamp install-indep: install-lib-stamp: build-lib-stamp dh_testdir cd $(lib_objdir) && $(MAKE) install DESTDIR=$(CURDIR)/debian/libmp3splt $(RM) debian/libmp3splt/usr/lib/libmp3splt0/*.{a,la,so} $(RM) debian/libmp3splt/usr/lib/*.{a,la,so} $(RM) debian/libmp3splt/usr/share/doc/libmp3splt/doxygen/*.md5 $(RM) -r debian/libmp3splt/usr/lib/pkgconfig $(RM) -r debian/libmp3splt/usr/include dh_lintian -plibmp3splt touch $@ install-cli-stamp: build-cli-stamp dh_testdir cd $(cli_objdir) && $(MAKE) install DESTDIR=$(CURDIR)/debian/mp3splt touch $@ install-gui-stamp: build-gui-stamp dh_testdir cd $(gui_objdir) && $(MAKE) install DESTDIR=$(CURDIR)/debian/mp3splt-gtk touch $@ binary: binary-arch binary-indep: binary-arch: install-arch dh_testdir dh_testroot dh_installdocs -a dh_installchangelogs -a dh_strip -a --dbg-package=mp3splt-dbg dh_compress -a dh_fixperms -a dh_makeshlibs -plibmp3splt -V'libmp3splt (= $(libmp3splt_version))' dh_installdeb -a dh_shlibdeps -a -- -xlibmp3splt dh_gencontrol -pmp3splt -pmp3splt-dbg -- $(SUBST_VARS) dh_gencontrol -pmp3splt-gtk -- -v$(mp3splt_gtk_version) $(SUBST_VARS) dh_gencontrol -plibmp3splt -- -v$(libmp3splt_version) $(SUBST_VARS) dh_md5sums -a dh_builddeb -a .PHONY: clean build build-arch build-indep install install-arch install-indep \ binary binary-arch binary-indep show-versions