#!/usr/bin/make -f
-# -*- makefile -*-
+
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
# This has to be exported to make some magic below work.
-export DH_OPTIONS
-
-# These are used for cross-compiling and for saving the configure script
-# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-CFLAGS = -Wall -g
+export DH_OPTIONS
+
+DEB_DESTDIR = $(CURDIR)/debian/tmp
+
+CFLAGS = -Wall -g -Werror=format-security
+
+COMPILER=
+EXTRA_ARGS=
+PROFILE_ARGS=
+#to enable debugging: export DEB_BUILD_OPTIONS="debug profiling threadoff rss gcov clang cares"
+ifneq (,$(findstring clang,$(DEB_BUILD_OPTIONS)))
+ COMPILER="clang"
+endif
+ifneq (,$(findstring profiling,$(DEB_BUILD_OPTIONS)))
+ PROFILE_ARGS= --with-gprof
+endif
-ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
- CFLAGS += -O0 -ggdb
+ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -O0 -ggdb -rdynamic -D_GNU_SOURCE -MD -MP -D TECH_PREVIEW -Wcast-align
+ LDFLAGS+=-Wl,--no-undefined -Wl,--as-needed
+ EXTRA_ARGS = --with-backtrace
+ ifneq (,$(findstring event,$(DEB_BUILD_OPTIONS)))
+ EXTRA_ARGS = --with-backtrace --with-experimental_eventsmtp
+ endif
else
+ LDFLAGS+=-Wl,--no-undefined -Wl,--as-needed
CFLAGS += -O2
endif
-config.status: configure
+ifneq (,$(findstring backtrace,$(DEB_BUILD_OPTIONS)))
+ CFLAGS+= -rdynamic -D_GNU_SOURCE -MD -MP
+ LDFLAGS+=-Wl,--no-undefined -Wl,--as-needed
+ EXTRA_ARGS += --with-backtrace
+endif
+
+ifneq (,$(findstring threadoff,$(DEB_BUILD_OPTIONS)))
+ THREAD_ARGS=--without-threaded-client
+ CFLAGS += -D WITH_THREADLOG
+else
+ THREAD_ARGS=
+endif
+
+
+ifneq (,$(findstring rss,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -D DEBUG_RSS
+endif
+
+ifneq (,$(findstring cares,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -D DEBUG_CARES
+endif
+
+ifneq (,$(findstring iodbg,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -D BIGBAD_IODBG -D LDAP_INITIALIZE
+endif
+
+ifneq (,$(findstring gcov,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -fprofile-arcs -ftest-coverage
+ LDFLAGS += -fprofile-arcs -ftest-coverage
+endif
+
+configure: configure-stamp
+configure-stamp:
dh_testdir
- CFLAGS="$(CFLAGS)" ./configure \
- --host=$(DEB_HOST_GNU_TYPE) \
- --build=$(DEB_BUILD_GNU_TYPE) \
- --prefix=/usr/sbin \
- --with-sysconfdir=/etc/citadel \
- --with-spooldir=/var/spool/citadel \
- --with-datadir=/var/lib/citadel \
- --with-rundir=/var/run/citadel \
+
+ export CC=$(COMPILER); export LDFLAGS="$(LDFLAGS)"; export CFLAGS="$(CFLAGS)"; ./configure \
+ --prefix=/var/lib/citadel/ \
+ --with-datadir=/var/lib/citadel/ \
+ --with-helpdir=/usr/share/citadel-server/ \
+ --with-staticdatadir=/etc/citadel/ \
+ --with-spooldir=/var/spool/citadel/ \
+ --with-sysconfdir=/etc/citadel/ \
+ --with-rundir=/var/run/citadel/ \
--with-docdir=/usr/share/doc/citadel-doc/ \
+ --with-ssldir=/etc/ssl/citadel/ \
+ --with-utility-bindir=/usr/lib/citadel-server/ \
+ --with-autosysconfdir=/var/lib/citadel/data/ \
+ --with-localedir=/usr/share/ \
--with-pam \
- --with-libical \
- --with-libsieve \
--with-db \
- --with-zlib \
- --with-ldap
+ --enable-debug $(EXTRA_ARGS) $(PROFILE_ARGS) $(THREAD_ARGS)
+ touch configure-stamp
#Architecture
build: build-arch build-indep
build-arch: build-arch-stamp
-build-arch-stamp: config.status
- touch build-arch-stamp
+build-arch-stamp: configure-stamp
+
+ $(MAKE)
+ touch $@
build-indep: build-indep-stamp
-build-indep-stamp: config.status
- touch build-indep-stamp
+build-indep-stamp: configure-stamp
+
+ touch $@
clean:
dh_testdir
dh_testroot
- rm -f build-arch-stamp build-indep-stamp #CONFIGURE-STAMP#
- -$(MAKE) distclean
-ifneq "$(wildcard /usr/share/misc/config.sub)" ""
- cp -f /usr/share/misc/config.sub config.sub
-endif
-ifneq "$(wildcard /usr/share/misc/config.guess)" ""
- cp -f /usr/share/misc/config.guess config.guess
-endif
+ rm -f build-arch-stamp build-indep-stamp configure-stamp
+
+
dh_clean
+ rm -f config.status config.log
+#[ ! -f Makefile ] || $(MAKE) distclean
install: install-indep install-arch
-install-indep:
+install-indep: build-indep
dh_testdir
dh_testroot
dh_clean -k -i
dh_installdirs -i
- $(MAKE) -C . install DESTDIR="$(CURDIR)/debian/tmp" install-doc-new prefix=$(CURDIR)/debian/citadel-doc/
+ $(MAKE) DESTDIR=$(DEB_DESTDIR) install-doc-new
-install-arch:
+ dh_install -i --sourcedir=debian/tmp
+
+install-arch: build-arch
dh_testdir
dh_testroot
dh_clean -k -s
dh_installdirs -s
- mkdir -p $(CURDIR)/debian/tmp/
- $(MAKE) -C . install DESTDIR="$(CURDIR)/debian/tmp/" install-exec-new install-data-new
- mkdir -p $(CURDIR)/debian/tmp/usr/lib/citadel-server
- mv \
- $(CURDIR)/debian/tmp/usr/sbin/setup \
- $(CURDIR)/debian/tmp/usr/lib/citadel-server/
- cp \
- $(CURDIR)/debian/tmp/usr/sbin/citmail \
- $(CURDIR)/debian/tmp/usr/sbin/sendmail
+ $(MAKE) install-locale DESTDIR=$(DEB_DESTDIR)
+ $(MAKE) DESTDIR=$(DEB_DESTDIR) install-exec-new install-data-new
+
+ install -D -p -m0755 database_cleanup.sh \
+ $(DEB_DESTDIR)/usr/share/doc/citadel-server/examples/database_cleanup.sh
+
+ install -D -p -m0644 docs/welcomemail.html \
+ $(DEB_DESTDIR)/usr/share/doc/citadel-server/welcomemail.html
+
+ install -D -p -m0644 docs/welcomemail.txt \
+ $(DEB_DESTDIR)/usr/share/doc/citadel-server/welcomemail.txt
- dh_install
+ dh_install -s --sourcedir=debian/tmp
binary-common:
dh_testdir
dh_testroot
+ dh_installchangelogs
dh_installdocs
- dh_installexamples
dh_installdebconf
- dh_installinit --name=citadel
+ dh_installinit --name=citadel
dh_installman
- dh_strip
+ dh_strip --dbg-package=citadel-dbg
+ dh_link
dh_compress
dh_fixperms
dh_makeshlibs
# Build architecture dependant packages using the common target.
binary-arch: build-arch install-arch
- $(MAKE) -f debian/rules DH_OPTIONS=-a binary-common
+ $(MAKE) -f debian/rules DH_OPTIONS=-s binary-common
binary: binary-arch binary-indep
-.PHONY: build clean binary-indep binary-arch binary install install-indep install-arch
+.PHONY: build clean binary-indep binary-arch binary install install-indep install-arch configure