#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.

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

DESTDIR = $(CURDIR)/debian/tmp
libdir := $(DESTDIR)/lib
sbindir := $(DESTDIR)/sbin
man8dir := $(DESTDIR)/usr/share/man/man8

DEB_HOST_ARCH_OS = $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)

CFLAGS := -Wall -Werror=implicit-function-declaration \
          $(shell dpkg-buildflags --get CPPFLAGS) \
          $(shell dpkg-buildflags --get CFLAGS) \
          $(shell pkg-config --cflags libbsd-overlay)
LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS) \
           $(shell pkg-config --libs libbsd-overlay)

# Note: GNU/kFreeBSD already has a 64-bit off_t. It must not be enabled,
# as it would change size of ino_t.
ifneq (kfreebsd,$(DEB_HOST_ARCH_OS))
CFLAGS += -D_FILE_OFFSET_BITS=64

# Only use the local sys partial headers hierarchy on non-kFreeBSD systems.
CFLAGS += -I$(CURDIR)/sys
endif

CFLAGS += -I$(CURDIR)/lib/port -include port.h \
          -I$(CURDIR)/lib/libufs \
          -D_GNU_SOURCE
LDFLAGS += -L$(CURDIR)/lib/port -L$(CURDIR)/lib/libufs

PATH := /usr/lib/freebsd:$(PATH)
PMAKE = CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
        NO_WERROR=1 NO_SHARED=NO NO_PROFILE=1 NO_PIC=1 WARNS=0 \
        DESTDIR=$(DESTDIR) make

SRCDIRS := \
  lib/libufs \
  sbin/badsect \
  sbin/dumpfs \
  sbin/ffsinfo \
  sbin/fsck_ffs \
  sbin/fsdb \
  sbin/growfs \
  sbin/newfs \
  sbin/tunefs \
  $(nil)

SOURCE = $(shell dpkg-parsechangelog -SSource)
VERSION = $(shell dpkg-parsechangelog -SVersion | sed -e 's/-.*//g')
SVN = http://svn.freebsd.org/base/release/$(VERSION).0
ORIGDIR = $(SOURCE)-$(VERSION)
TARNAME = $(SOURCE)_$(VERSION).orig.tar.gz

get-orig-source:
	rm -rf $(ORIGDIR)
	mkdir -p $(ORIGDIR)/sys/sys $(ORIGDIR)/sys/geom
	for i in $(SRCDIRS) \
		 sbin/bsdlabel \
		 sbin/dump \
		 sbin/mount \
		 sbin/sunlabel \
		 sys/ufs \
		 sys/geom/geom_bsd_enc.c \
		 sys/sys/disklabel.h sys/sys/mount.h sys/sys/param.h \
		 sys/sys/ucred.h ; \
	do \
	    svn export $(SVN)/$$i $(ORIGDIR)/$$i ; \
	done
	tar --numeric-owner --owner 0 --group 0 -czf ../$(TARNAME) $(ORIGDIR)
	rm -rf $(ORIGDIR)

build-indep:

build-arch:
	dh_testdir

	$(PMAKE) -C lib/port
	for d in $(SRCDIRS); do \
		$(PMAKE) -C $$d; \
	done

build: build-indep build-arch

.PHONY: build-indep build-arch build

clean:
	dh_testdir

	[ ! -f lib/port/Makefile ] || $(PMAKE) -C lib/port clean
	for d in $(SRCDIRS); do \
		$(PMAKE) -C $$d clean; \
	done

	dh_clean

install-indep:

install-arch: build-arch
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs

	mkdir -p $(libdir)
	mkdir -p $(sbindir)
	mkdir -p $(man8dir)

	for d in $(SRCDIRS); do \
		$(PMAKE) -C $$d install BINDIR=/sbin SHLIBDIR=/lib; \
	done

	# Rename files
	mv $(sbindir)/badsect	$(sbindir)/badsect.ufs
	mv $(sbindir)/dumpfs	$(sbindir)/dumpfs.ufs
	mv $(sbindir)/fsck_ffs	$(sbindir)/fsck.ufs
	mv $(sbindir)/fsdb	$(sbindir)/fsdb.ufs
	mv $(sbindir)/growfs	$(sbindir)/growfs.ufs
	mv $(sbindir)/newfs	$(sbindir)/mkfs.ufs
	mv $(sbindir)/tunefs	$(sbindir)/tunefs.ufs

	# Remove hardlinks
	rm $(sbindir)/fsck_4.2bsd
	rm $(sbindir)/fsck_ufs

	mv $(man8dir)/badsect.8.gz	$(man8dir)/badsect.ufs.8.gz
	mv $(man8dir)/dumpfs.8.gz	$(man8dir)/dumpfs.ufs.8.gz
	mv $(man8dir)/fsck_ffs.8.gz	$(man8dir)/fsck.ufs.8.gz
	mv $(man8dir)/fsdb.8.gz		$(man8dir)/fsdb.ufs.8.gz
	mv $(man8dir)/growfs.8.gz	$(man8dir)/growfs.ufs.8.gz
	mv $(man8dir)/newfs.8.gz	$(man8dir)/mkfs.ufs.8.gz
	mv $(man8dir)/tunefs.8.gz	$(man8dir)/tunefs.ufs.8.gz

	# Remove broken symlinks
	rm $(man8dir)/fsck_4.2bsd.8.gz
	rm $(man8dir)/fsck_ufs.8.gz

install: install-indep install-arch

.PHONY: clean install-indep install-arch install

# Build architecture-independent files here.
binary-indep:
	# Nothing to do.

# Build architecture-dependent files here.
binary-arch: install-arch
	dh_testdir
	dh_testroot
	dh_installchangelogs -s
	dh_installdocs -s
	dh_install -s --sourcedir=debian/tmp
	dh_installman -s
	dh_link -s
	dh_strip -s
	dh_compress -s
	dh_fixperms -s
	dh_installdeb -s
	dh_shlibdeps -s
	dh_gencontrol -s
	dh_md5sums -s
	dh_builddeb -s

binary: binary-indep binary-arch

.PHONY: binary-indep binary-arch binary
