#!/usr/bin/make -f
# 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

# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_BUILD_GNU_TYPE	:= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_BUILD_GNU_CPU	:= $(shell dpkg-architecture -qDEB_BUILD_GNU_CPU)
DEB_HOST_ARCH_CPU	:= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
DEB_HOST_MULTIARCH	:= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

ifeq ($(DEB_HOST_ARCH_CPU), mipsel)
MACHINE_ARCH		:= mips
else
MACHINE_ARCH		:= $(DEB_HOST_ARCH_CPU)
endif

ifeq ($(DEB_HOST_MULTIARCH), mipsel)
MACHINE_MULTIARCH	:= mips
else
MACHINE_MULTIARCH	:= $(DEB_HOST_MULTIARCH)
endif

ifneq (,$(filter nostrip,$(DEB_BUILD_OPTIONS)))
    export STRIPFLAG=
endif

SOURCE = freebsd-buildutils
VERSION = $(shell dpkg-parsechangelog | sed -e '/^Version:/!d' -e 's/^Version: //g' -e 's/-.*//g')
SVN = http://svn.freebsd.org/base/release/$(VERSION).0

PVERSION = $(shell dpkg-parsechangelog | sed -e '/^Version:/!d' -e 's/^Version: //g' -e 's/-.*//g' -e 's/\./_/g')
PCVS = anoncvs@anoncvs.fr.freebsd.org:/home/ncvs
PTAG = RELEASE_$(PVERSION)_0

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

export CFLAGS = -O2 -g -Wall -D_GNU_SOURCE \
         -DMACHINE_ARCH='"$(MACHINE_ARCH)"' \
         -DMACHINE_MULTIARCH='"$(MACHINE_MULTIARCH)"' \
         -I$(CURDIR)/build-tree/src/sys \
	 -D'__FBSDID(string)='
# disabled due to #630907 (see also 20_libbsd_overlay.diff)
# $(shell pkg-config --cflags libbsd-overlay)
MAKE_BUILD_FLAGS = CC=gcc NO_WERROR=1 NOGCCERROR=1 NOSHARED=NO NO_SHARED=NO

PMAKE_FLAGS = -m $(CURDIR)/src/share/mk
PMAKE_BOOTSTRAP = $(CURDIR)/build-tree/src/usr.bin/make/pmake $(PMAKE_FLAGS)
PMAKE = $(CURDIR)/build-tree/src/usr.bin/make/make $(PMAKE_FLAGS)
YACC = $(CURDIR)/build-tree/src/usr.bin/yacc/yacc

package = $(SOURCE)

get-orig-source:
	rm -rf $(ORIGDIR)
	mkdir -p $(ORIGDIR)/src/sys/sys $(ORIGDIR)/src/sys/kern/
	for i in \
		share/mk \
		usr.bin/cksum \
		usr.bin/file2c \
		usr.bin/lex \
		usr.bin/make \
		usr.bin/mkdep \
		usr.bin/yacc \
		usr.bin/brandelf \
		usr.sbin/btxld \
		usr.sbin/kgzip \
		usr.sbin/mtree \
	; do \
		svn export $(SVN)/$$i $(ORIGDIR)/src/$$i ; \
	done
	cd $(ORIGDIR); cvs -d $(PCVS) export -r $(PTAG) ports/Mk ; cd ..
	tar --numeric-owner --owner 0 --group 0 -czf ../$(TARNAME) $(ORIGDIR)
	rm -rf $(ORIGDIR)

unpack: unpack-stamp
unpack-stamp:
	mkdir build-tree
	cp -a src ports build-tree/
	set -e ; for i in \
		build-tree/ports/Mk/bsd.port.mk \
		build-tree/ports/Mk/bsd.port.subdir.mk \
	; do sed -i $$i \
		-e "s,/usr/bin/,,g" \
		-e "s,/usr/sbin/,,g" \
		-e "s,/bin/,,g" \
		-e "s,/sbin/,,g" \
		-e "s,/usr/ports,/usr/share/$(package)/ports,g" \
	; done

	touch unpack-stamp

build: build-stamp
build-stamp: unpack-stamp
	dh_testdir

	# Bootstrap pmake using GNU make
	$(MAKE) -C build-tree/src/usr.bin/make -f Makefile.dist
	$(MAKE) -C build-tree/src/usr.bin/make -f Makefile.dist mostlyclean
	$(PMAKE_BOOTSTRAP) $(MAKE_BUILD_FLAGS) -C build-tree/src/usr.bin/make

	$(PMAKE) $(MAKE_BUILD_FLAGS) -C build-tree/src/usr.bin/yacc

	$(PMAKE) $(MAKE_BUILD_FLAGS) -C build-tree/src/usr.bin/cksum

	cd build-tree/src/usr.bin/lex ; \
		$(PMAKE) bootstrap ; \
		$(YACC) -d -o parse.c parse.y ; \
		$(PMAKE) $(MAKE_BUILD_FLAGS) NO_PROFILE=1 NO_INSTALLLIB=1

	$(PMAKE) $(MAKE_BUILD_FLAGS) -C build-tree/src/usr.bin/mkdep
	$(PMAKE) $(MAKE_BUILD_FLAGS) -C build-tree/src/usr.sbin/mtree
	$(PMAKE) $(MAKE_BUILD_FLAGS) -C build-tree/src/usr.bin/file2c
	$(PMAKE) $(MAKE_BUILD_FLAGS) -C build-tree/src/usr.bin/brandelf

	touch build-stamp

install: build
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs

	for i in cksum lex make mkdep yacc file2c brandelf ; do \
	  $(PMAKE) -C $(CURDIR)/build-tree/src/usr.bin/$$i install \
		DESTDIR=$(CURDIR)/debian/$(package) BINDIR=/usr/lib/freebsd ; \
	done
	for i in mtree ; do \
	  $(PMAKE) -C $(CURDIR)/build-tree/src/usr.sbin/$$i install \
		DESTDIR=$(CURDIR)/debian/$(package) BINDIR=/usr/lib/freebsd ; \
	done
	$(PMAKE) -C build-tree/src/share/mk install \
		DESTDIR=$(CURDIR)/debian/$(package) BINDIR=/usr/share

	cp -af $(CURDIR)/build-tree/ports/Mk \
		$(CURDIR)/debian/$(package)/usr/share/

	# remove trash
	rm -rf 	$(CURDIR)/debian/$(package)/usr/include \
		$(CURDIR)/debian/$(package)/var
	find $(CURDIR)/debian/$(package)/usr/share/man -type l | \
		xargs rm

	# relocate files
	for m in `find $(CURDIR)/debian/$(package)/usr/share/man -type f`; do \
		mv $$m `echo $$m | sed -e 's:\(man[0-9]/\):\1freebsd-:'` ; \
	done
	for i in `cd $(CURDIR)/debian/$(package)/usr/lib/freebsd && ls` ; do \
		ln -s ../lib/freebsd/$$i \
		$(CURDIR)/debian/$(package)/usr/bin/freebsd-$$i ; \
	done
	rmdir $(CURDIR)/debian/$(package)/usr/sbin

clean:
	dh_testdir
	dh_testroot
	rm -rf build-tree
	rm -f *-stamp

	dh_clean


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

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir
	dh_testroot
#	dh_installdebconf
	dh_installdocs
#	dh_installexamples
#	dh_installmenu
#	dh_installlogrotate
#	dh_installemacsen
#	dh_installpam
#	dh_installmime
#	dh_installinit
#	dh_installcron
	dh_installman
#	dh_installinfo
	dh_installchangelogs
	dh_link
	dh_strip
	dh_compress
	dh_fixperms
#	dh_makeshlibs
	dh_installdeb
#	dh_perl
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

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