#!/usr/bin/make -f
# Sample debian/rules that uses cdbs.  Originaly written by Robert Millan.
# This file is public domain.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

export SHELL = bash

CFLAGS = -Wall -g -pipe -fPIC -D_GNU_SOURCE \
	-Werror=implicit-function-declaration \
	-isystem /usr/include/freebsd \
	$(NULL)
CXXFLAGS = $(CFLAGS)

ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0
	CXXFLAGS += -O0
else
	CFLAGS += -O2
	CXXFLAGS += -O2
endif

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))

	# Do not mess with MAKEFLAGS until we transfer control to BSD make (see below)
	BSD_MAKEFLAGS += -j$(NUMJOBS)
endif

full_version	:= $(shell dpkg-parsechangelog | grep ^Version: | sed -e 's/^.*: //g')
tar_version	:= $(shell echo $(full_version) | sed -e 's/-.*//g')
svn_revision	:= $(shell echo $(full_version) | sed -e 's/.*~svn\([0-9]*\)-[0-9]*/\1/g')
version		:= $(shell echo $(full_version) | sed -e 's/[~+-].*//g')
major           := $(shell echo $(version) | sed -e 's/\..*//g')
revision	:= $(shell echo $(full_version) | sed -e 's/^[^+-]*//g')

#SVN		:= https://svn0.us-west.freebsd.org/base/release/$(version).0
SVN		:= https://svn0.us-west.freebsd.org/base/releng/$(version)
#SVN		:= https://svn0.us-west.freebsd.org/base/stable/$(major)
#SVN		:= https://svn0.us-west.freebsd.org/base/head

SOURCE = ufsutils
ORIGDIR = $(SOURCE)-$(tar_version)
TARNAME = $(SOURCE)_$(tar_version).orig.tar.gz

PATH := /usr/lib/freebsd:$(PATH)
DESTDIR = $(CURDIR)/debian/tmp
PMAKE = \
	MAKEFLAGS=$(BSD_MAKEFLAGS) \
	COPTS="$(CFLAGS)" CFLAGS="$(CFLAGS)" \
        NO_WERROR=1 NOGCCERROR=1 NOSHARED=NO NO_SHARED=NO \
        DESTDIR=$(DESTDIR) \
	bmake

build: build-arch build-indep

get-orig-source:
	rm -rf $(ORIGDIR)
	mkdir -p $(ORIGDIR)/sys/geom
	for i in \
		sbin/badsect sbin/dumpfs sbin/fsck_ffs sbin/fsdb \
		sbin/growfs sbin/newfs sbin/tunefs sbin/ffsinfo \
		sys/ufs lib/libufs sys/geom/geom_bsd_enc.c \
		sbin/mount \
	; do \
	    svn export --ignore-keywords $(SVN)/$$i $(ORIGDIR)/$$i || exit ; \
	done
	tar --numeric-owner --owner 0 --group 0 -czf ../$(TARNAME) $(ORIGDIR)
	rm -rf $(ORIGDIR)

build-arch: ufsutils

ufsutils: ufsutils-stamp
ufsutils-stamp:
	$(PMAKE) -C lib/libufs
	$(PMAKE) -C sbin/badsect
	$(PMAKE) -C sbin/dumpfs
	$(PMAKE) -C sbin/fsck_ffs
	$(PMAKE) -C sbin/fsdb
	$(PMAKE) -C sbin/growfs
	$(PMAKE) -C sbin/newfs
	$(PMAKE) -C sbin/tunefs
	$(PMAKE) -C sbin/ffsinfo
	touch $@

build-indep: build-indep-stamp
build-indep-stamp:
	touch $@

clean:
	dh_testdir
	dh_testroot

	$(PMAKE) -C lib/libufs clean
	$(PMAKE) -C sbin/badsect clean
	$(PMAKE) -C sbin/dumpfs clean
	$(PMAKE) -C sbin/fsck_ffs clean
	$(PMAKE) -C sbin/fsdb clean
	$(PMAKE) -C sbin/growfs clean
	$(PMAKE) -C sbin/newfs clean
	$(PMAKE) -C sbin/tunefs clean
	$(PMAKE) -C sbin/ffsinfo clean

	rm -f *stamp
	dh_clean

install: install-indep install-arch
install-indep:

install-arch:
	dh_testdir
	dh_testroot
	dh_prep -a
	dh_installdirs -a
	dh_install -a

	mkdir -p debian/ufsutils/{sbin,usr/share/man/man8}
	for i in badsect dumpfs fsdb growfs tunefs ; do \
		install -m 755 sbin/$$i/$$i	debian/ufsutils/sbin/$$i.ufs ; \
		install -m 644 sbin/$$i/$$i.8	debian/ufsutils/usr/share/man/man8/$$i.ufs.8 ; \
	done
	install -m 755 sbin/fsck_ffs/fsck_ffs	debian/ufsutils/sbin/fsck.ufs
	install -m 644 sbin/fsck_ffs/fsck_ffs.8	debian/ufsutils/usr/share/man/man8/fsck.ufs.8
	install -m 755 sbin/newfs/newfs		debian/ufsutils/sbin/mkfs.ufs
	install -m 644 sbin/newfs/newfs.8	debian/ufsutils/usr/share/man/man8/mkfs.ufs.8
	install -m 755 sbin/ffsinfo/ffsinfo	debian/ufsutils/sbin/ffsinfo
	install -m 644 sbin/ffsinfo/ffsinfo.8	debian/ufsutils/usr/share/man/man8/ffsinfo.8

	mkdir -p debian/ufsutils-udeb/sbin
	for i in badsect growfs tunefs ; do \
		install -m 755 sbin/$$i/$$i	debian/ufsutils-udeb/sbin/$$i.ufs ; \
	done
	install -m 755 sbin/fsck_ffs/fsck_ffs	debian/ufsutils-udeb/sbin/fsck.ufs
	install -m 755 sbin/newfs/newfs		debian/ufsutils-udeb/sbin/mkfs.ufs

# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

# Build architecture-dependant files that arn't kernel modules here.
binary-arch: build install
	dh_testdir
	dh_testroot
	dh_installchangelogs
	dh_installdocs
	dh_installexamples
#	dh_installmenu
	dh_installdebconf
#	dh_installlogrotate
#	dh_installemacsen
#	dh_installpam
#	dh_installmime
#	dh_installcron
#	dh_installinfo
	dh_installman
	dh_link
	dh_strip
	dh_compress
	dh_fixperms
#	dh_perl
#	dh_python
	dh_makeshlibs
	dh_makeshlibs -pufsutils --add-udeb=ufsutils-udeb
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

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