#!/usr/bin/make -f
# -*- makefile -*-
export DH_VERBOSE=1
export DESTDIR=$(CURDIR)/debian/tmp

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
  NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
  MAKEFLAGS += -j$(NUMJOBS)
endif

export DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

# Recommended snippet for Autoconf 2.52 or later
ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
  confflags += --build $(DEB_HOST_GNU_TYPE)
else
  confflags += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
endif

export DEB_HOST_ARCH      ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)

extraopts += --with-ocf --with-nss
extraopts += --with-debug
extraopts += --enable-cephfs-java

# rocksdb is not packaged by anyone.  build it if we can.
extraopts += --with-librocksdb-static=check

ifeq ($(DEB_HOST_ARCH), armel)
  # armel supports ARMv4t or above instructions sets.
  # libatomic-ops is only usable with Ceph for ARMv6 or above.
  extraopts += --without-libatomic-ops
endif

configure: configure-stamp
configure-stamp:
	dh_testdir
	./autogen.sh
	./configure --prefix=/usr --localstatedir=/var \
	  --sysconfdir=/etc  --libexecdir=/usr/lib $(extraopts) $(confflags) \
	  $(CEPH_EXTRA_CONFIGURE_ARGS)
	touch $@

build-arch: build
build-indep: build

build: build-stamp
build-stamp: configure-stamp  
	dh_testdir

	$(MAKE)

	cp src/init-ceph debian/ceph-base.ceph.init
	cp src/init-radosgw debian/radosgw.init
	cp src/logrotate.conf debian/ceph.logrotate

	touch $@

clean:
	dh_testdir
	dh_testroot
	rm -f build-stamp configure-stamp

	[ ! -f Makefile ] || $(MAKE) distclean
	rm -f aclocal.m4 compile config.sub config.guess depcomp install-sh \
	  ltmain.sh missing
	rm -f configure Makefile.in man/Makefile.in src/Makefile.in
	rm -f src/acconfig.h.in
	rm -f debian/ceph-base.ceph.init debian/radosgw.init debian/ceph.logrotate debian/radosgw.logrotate

	dh_clean

install: build
	dh_testdir
	dh_testroot
	dh_clean -k 
	dh_installdirs

	$(MAKE) DESTDIR=$(DESTDIR) install
	sed -i "/dependency_libs/ s/'.*'/''/" `find . -name '*.la'`
	install -D -m 644 udev/50-rbd.rules $(DESTDIR)/lib/udev/rules.d/50-rbd.rules
	install -D -m 644 udev/95-ceph-osd.rules $(DESTDIR)/lib/udev/rules.d/95-ceph-osd.rules
	install -D -m 644 udev/60-ceph-by-parttypeuuid.rules $(DESTDIR)/lib/udev/rules.d/60-ceph-by-parttypeuuid.rules
	install -D -m 644 src/etc-rbdmap $(DESTDIR)/etc/ceph/rbdmap
	install -D -m 755 src/init-rbdmap $(DESTDIR)/etc/init.d/rbdmap

# Add here commands to install the package into debian/testpack.
# Build architecture-independent files here.
binary-indep: build install
	dh_testdir
	dh_testroot
	jh_installlibs -v -i
	dh_installchangelogs -i
	dh_installdocs -i --all ChangeLog
	dh_installexamples -i
	dh_install -i --sourcedir=$(DESTDIR) --list-missing
	dh_installman -i
	dh_lintian -i
	dh_link -i
	dh_compress -i
	dh_fixperms -i
	dh_python2 -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

# We have nothing to do by default.
# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir
	dh_testroot
	dh_installchangelogs -a
	dh_installdocs -a --all ChangeLog
	dh_installexamples -a
	dh_install -a --sourcedir=$(DESTDIR) --list-missing
	install -d -m0755 debian/ceph-base/etc/logrotate.d
	install -m0644 debian/ceph.logrotate debian/ceph-base/etc/logrotate.d

	# dh_installinit is only set up to handle one upstart script
	# per package, so do this ourselves
	install -d -m0755 debian/ceph-base/etc/init
	install -m0644 src/upstart/ceph-all.conf debian/ceph-base/etc/init
	install -m0644 src/upstart/ceph-create-keys.conf debian/ceph-base/etc/init
	install -d -m0755 debian/ceph-osd/etc/init
	install -m0644 src/upstart/ceph-osd*.conf debian/ceph-osd/etc/init
	install -m0644 src/upstart/ceph-disk.conf debian/ceph-osd/etc/init
	install -d -m0755 debian/ceph-mon/etc/init
	install -m0644 src/upstart/ceph-mon*.conf debian/ceph-mon/etc/init
	install -d -m0755 debian/ceph-common/etc/init
	install -m0644 src/upstart/rbdmap.conf debian/ceph-common/etc/init
	install -d -m0755 debian/ceph-mds/etc/init
	install -m0644 src/upstart/ceph-mds*.conf debian/ceph-mds/etc/init
	install -d -m0755 debian/radosgw/etc/init
	install -m0644 src/upstart/radosgw*.conf debian/radosgw/etc/init
	install -d -m0755 debian/rbd-mirror/etc/init
	install -m0644 src/upstart/ceph-rbd-mirror*.conf debian/rbd-mirror/etc/init
	# install the systemd stuff manually since we have funny service names
	install -d -m0755 debian/ceph-common/lib/systemd/system
	install -m0644 systemd/ceph.target debian/ceph-common/lib/systemd/system
	install -d -m0755 debian/ceph-common/etc/default
	install -m0644 etc/default/ceph debian/ceph-common/etc/default/
	install -d -m0755 debian/ceph-common/usr/lib/tmpfiles.d
	install -m 0644 -D systemd/ceph.tmpfiles.d debian/ceph-common/usr/lib/tmpfiles.d/ceph.conf

	install -d -m0755 debian/ceph-base/lib/systemd/system
	install -d -m0755 debian/ceph-mon/lib/systemd/system
	install -d -m0755 debian/ceph-osd/lib/systemd/system
	install -m0644 systemd/ceph-mon@.service debian/ceph-mon/lib/systemd/system
	install -m0644 systemd/ceph-create-keys@.service debian/ceph-base/lib/systemd/system
	install -m0644 systemd/ceph-osd@.service debian/ceph-osd/lib/systemd/system
	install -m0644 systemd/ceph-disk@.service debian/ceph-osd/lib/systemd/system
	sed -i s./etc/sysconfig/./etc/default/.g debian/ceph-mon/lib/systemd/system/ceph-mon@.service
	sed -i s./etc/sysconfig/./etc/default/.g debian/ceph-base/lib/systemd/system/ceph-create-keys@.service
	sed -i s./etc/sysconfig/./etc/default/.g debian/ceph-osd/lib/systemd/system/ceph-osd@.service
	sed -i s./etc/sysconfig/./etc/default/.g debian/ceph-osd/lib/systemd/system/ceph-disk@.service
	install -m0644 systemd/ceph-mon.target debian/ceph-mon/lib/systemd/system
	install -m0644 systemd/ceph-osd.target debian/ceph-osd/lib/systemd/system

	install -d -m0755 debian/ceph-mds/lib/systemd/system
	install -m0644 systemd/ceph-mds@.service debian/ceph-mds/lib/systemd/system
	sed -i s./etc/sysconfig/./etc/default/.g debian/ceph-mds/lib/systemd/system/ceph-mds@.service
	install -m0644 systemd/ceph-mds.target debian/ceph-mds/lib/systemd/system

	install -d -m0755 debian/radosgw/lib/systemd/system
	install -m0644 systemd/ceph-radosgw@.service debian/radosgw/lib/systemd/system
	sed -i s./etc/sysconfig/./etc/default/.g debian/radosgw/lib/systemd/system/ceph-radosgw@.service
	install -m0644 systemd/ceph-radosgw.target debian/radosgw/lib/systemd/system

	install -d -m0755 debian/rbd-mirror/lib/systemd/system
	install -m0644 systemd/ceph-rbd-mirror@.service debian/rbd-mirror/lib/systemd/system
	sed -i s./etc/sysconfig/./etc/default/.g debian/rbd-mirror/lib/systemd/system/ceph-rbd-mirror@.service
	install -m0644 systemd/ceph-rbd-mirror.target debian/rbd-mirror/lib/systemd/system

	dh_systemd_enable
	dh_installinit -p ceph-base --name ceph --no-start
	dh_installinit -p radosgw --no-start
	dh_systemd_start --no-restart-on-upgrade

	dh_installman -a
	dh_lintian -a
	dh_link -a

	dh_strip -pceph-mds --dbg-package=ceph-mds-dbg
	dh_strip -pceph-mon --dbg-package=ceph-mon-dbg
	dh_strip -pceph-osd --dbg-package=ceph-osd-dbg
	dh_strip -pceph-fuse --dbg-package=ceph-fuse-dbg
	dh_strip -prbd-fuse --dbg-package=rbd-fuse-dbg
	dh_strip -prbd-mirror --dbg-package=rbd-mirror-dbg
	dh_strip -prbd-nbd --dbg-package=rbd-nbd-dbg
	dh_strip -pceph-common --dbg-package=ceph-common-dbg
	dh_strip -pceph-fs-common --dbg-package=ceph-fs-common-dbg
	dh_strip -plibrados2 --dbg-package=librados2-dbg
	dh_strip -plibradosstriper1 --dbg-package=libradosstriper1-dbg
	dh_strip -plibrbd1 --dbg-package=librbd1-dbg
	dh_strip -plibcephfs1 --dbg-package=libcephfs1-dbg
	dh_strip -plibrgw2 --dbg-package=librgw2-dbg
	dh_strip -pradosgw --dbg-package=radosgw-dbg
	dh_strip -pceph-test --dbg-package=ceph-test-dbg

	dh_compress -a
	dh_fixperms -a
	dh_makeshlibs -a
	dh_python2 -a
	dh_installdeb -a
	dh_shlibdeps -a
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure
