#!/usr/bin/make -f
# -*- makefile -*-

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

CFLAGS = -g -Wall
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
       CFLAGS += -O0
else
       CFLAGS += -O2
endif
export CFLAGS

#
# On PowerPC we compile against the hand-crafted assembly, on all
# other architectures we compile against GPL'ed sha1 code lifted
# from Mozilla.  OpenSSL is strangely licensed and best avoided
# in Debian.
#
HOST_ARCH=$(shell dpkg-architecture -qDEB_HOST_ARCH)
ifeq (${HOST_ARCH},powerpc)
	export PPC_SHA1=YesPlease
else
	export MOZILLA_SHA1=YesPlease
endif


PREFIX := /usr
MANDIR := /usr/share/man/

SRC    := ./
DOC    := Documentation/
DESTDIR  := $(CURDIR)/debian/tmp
DOC_DESTDIR := $(DESTDIR)/usr/share/doc/git-core/
MAN_DESTDIR := $(DESTDIR)/$(MANDIR)

build: debian/build-stamp
debian/build-stamp:
	dh_testdir
	$(MAKE) prefix=$(PREFIX) all doc
	touch debian/build-stamp

debian-clean:
	dh_testdir
	dh_testroot
	rm -f debian/build-stamp
	dh_clean

clean: debian-clean
	$(MAKE) clean

install: build
	dh_testdir
	dh_testroot
	dh_clean -k 
	dh_installdirs 

	make DESTDIR=$(DESTDIR) prefix=$(PREFIX) mandir=$(MANDIR) \
		install install-doc

	mkdir -p $(DOC_DESTDIR)
	find $(DOC) '(' -name '*.txt' -o -name '*.html' ')' -exec install {} $(DOC_DESTDIR) ';'

	dh_movefiles -p git-tk
	dh_movefiles -p git-core
	find debian/tmp -type d -o -print | sed -e 's/^/? /'

binary-arch: build install
	dh_testdir
	dh_testroot
	dh_installchangelogs -a
	dh_installdocs -a
	dh_strip -a
	dh_compress  -a
	dh_fixperms -a
	dh_perl -a
	dh_makeshlibs -a
	dh_installdeb -a
	dh_shlibdeps -a
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary-indep: build install
	dh_testdir
	dh_testroot
	dh_installchangelogs -i
	dh_installdocs -i
	dh_compress  -i
	dh_fixperms -i
	dh_makeshlibs -i
	dh_installdeb -i
	dh_shlibdeps -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

binary: binary-arch binary-indep

.PHONY: build clean binary install clean debian-clean
