# vim:noexpandtab:autoindent:tabstop=8:shiftwidth=8:filetype=make:nocindent:tw=0:
#  This is a template of all of the 'Standard' stuff that we use in all our
#  projects.

CLEANFILES=$(PACKAGE_NAME)-*.tar.gz $(PACKAGE_NAME)-*.tar.bz2 $(PACKAGE_NAME)-*.rpm _buildtemp version
DISTCLEANFILES=*~

EXTRA_DIST =
EXTRA_PROGRAMS=

CLEANFILES += $(EXTRA_PROGRAMS)
CLEANFILES += *.pyc */*.pyc */*/*.pyc */*/*/*.pyc
DISTCLEANFILES += pkg/$(PACKAGE).spec

clean-local:
	-test -z "$(CLEANFILES)" || rm -rf $(CLEANFILES)

distclean-local:
	-test -z "$(DISTCLEANFILES)" || rm -rf $(DISTCLEANFILES)

.PHONY: git-tag
git-tag:
	git tag -u libsmbios -m "tag for official release: $(PACKAGE_STRING)" v$(PACKAGE_VERSION)

.PHONY: get-version
get-version:
	@echo 'PACKAGE_STRING="$(PACKAGE_STRING)"'
	@echo 'PACKAGE_VERSION="$(PACKAGE_VERSION)"'
	@echo 'PACKAGE="$(PACKAGE)"'

ChangeLog:
	(GIT_DIR=$(top_srcdir)/.git git log > .changelog.tmp && mv .changelog.tmp ChangeLog; rm -f .changelog.tmp) || (touch ChangeLog; echo 'git directory not found: installing possibly empty changelog.' >&2)

AUTHORS:
	(GIT_DIR=$(top_srcdir)/.git git log | grep ^Author | sort |uniq > .authors.tmp && mv .authors.tmp AUTHORS; rm -f .authors.tmp) || (touch AUTHORS; echo 'git directory not found: installing possibly empty AUTHORS.' >&2)

REPLACE_VARS=GETTEXT_PACKAGE PACKAGE_VERSION PACKAGE localedir libdir libexecdir datadir sysconfdir pythondir pkgpythondir pkgdatadir pkgconfdir pkggladedir pkglibexecdir
export $(REPLACE_VARS)
# compat for RHEL3, dont ask
export GETTEXT_PACKAGE

DATA_HOOK_REPLACE=
install-data-hook:
	for i in $(DATA_HOOK_REPLACE); do      \
	    file=$(DESTDIR)/$$i                     ;\
	    for var in $(REPLACE_VARS)	;\
	    do	\
	        perl -p -i -e "s|^$$var\s*=.*|$$var=\"$${!var}\"|"  $$file;\
	    done	;\
	done

EXEC_HOOK_REPLACE=
install-exec-hook:
	for i in $(EXEC_HOOK_REPLACE); do      \
	    file=$(DESTDIR)/$$i                     ;\
	    for var in $(REPLACE_VARS)	;\
	    do	\
	        perl -p -i -e "s|^$$var\s*=.*|$$var=\"$${!var}\"|"  $$file;\
	    done	;\
	done

# set default project. can be overridden on cmdline with 'make -e ...'
PROJECT=home:$(USER)

.PHONY: upload_buildservice
upload_buildservice: dist
	[ -n "$(PROJECT)" ] || (echo "Must specify PROJECT"; exit 1)
	osc co $(PROJECT) $(PACKAGE)
	rm -f $(PROJECT)/$(PACKAGE)/*
	cp ${PACKAGE}*.tar.bz2 $(PROJECT)/$(PACKAGE)
	cp */${PACKAGE}.spec $(PROJECT)/$(PACKAGE)
	cd $(PROJECT)/$(PACKAGE); osc addremove
	cd $(PROJECT)/$(PACKAGE); yes | osc updatepacmetafromspec
	cd $(PROJECT)/$(PACKAGE); osc ci -m "scripted source update"

TOPDIR := $(shell cd $(top_builddir);pwd)
BUILDDIR = $(TOPDIR)/_rpmbuild
RPMDIR = $(TOPDIR)
SOURCEDIR = $(TOPDIR)
SPECFILE= $(TOPDIR)/pkg/$(PACKAGE_NAME).spec
SPECDIR = $(TOPDIR)/pkg
SRCRPMDIR = $(TOPDIR)

AM_RPM_DEFINES = --define "_topdir $(TOPDIR)" \
		--define "_builddir $(BUILDDIR)" \
		--define "_rpmdir $(RPMDIR)" \
		--define "_sourcedir $(SOURCEDIR)" \
		--define "_specdir $(SPECDIR)" \
		--define "_srcrpmdir $(SRCRPMDIR)" \
		$(RPM_DEFINES)

.PHONY: rpm srpm
rpm: pkg/$(PACKAGE_NAME).spec dist
	mkdir -p $(BUILDDIR)
	rpmbuild $(AM_RPM_DEFINES) -ba --nodeps $(SPECFILE)
	rm -rf $(BUILDDIR)

srpm: pkg/$(PACKAGE_NAME).spec dist
	mkdir -p $(BUILDDIR)
	rpmbuild $(AM_RPM_DEFINES) -bs --nodeps $(SPECFILE)
	rm -rf $(BUILDDIR)

# This updates the debian version information, similar to how specfile for RPM
# is updated. It has to be manually invoked becuase it wont work for rpm builds.
CHANGELOG=pkg/debian/changelog
CHANGELOG_TEXT="Placeholder changelog entry. Please update this for release."
changelog: $(CHANGELOG)
.PHONY: $(CHANGELOG)
$(CHANGELOG): version.mk
	cd pkg/ && fakeroot debchange -v $(PACKAGE_VERSION)-$(DEB_RELEASE) $(CHANGELOG_TEXT)

TARBALL=$(PACKAGE_STRING).tar.gz

debmagic:
	[ -n "$$DEB_TMP_BUILDDIR" ] || (echo "Must set DEB_TMP_BUILDDIR=/tmp/... for deb and sdeb targets"; exit 1)
	[ -n "$$DIST" ] || (echo "Must set DIST={gutsy,hardy,sid,...} for deb and sdeb targets"; exit 1)
	[ -n "$$DIST" ] || echo "Remember to set DISTTAG='~gutsy1' for deb and sdeb targets for backports"
	mkdir -p dist/$(DIST)
	cp $(TARBALL) $(DEB_TMP_BUILDDIR)/$(PACKAGE_NAME)_$(PACKAGE_VERSION).orig.tar.gz
	tar -C $(DEB_TMP_BUILDDIR) -xzf $(TARBALL)
	cp -ar pkg/debian $(DEB_TMP_BUILDDIR)/$(PACKAGE_STRING)/debian
	chmod +x $(DEB_TMP_BUILDDIR)/$(PACKAGE_STRING)/debian/rules
	sed -e "s/#DISTTAG#/$(DISTTAG)/g" -e "s/#DIST#/$(DIST)/g" $(DEB_TMP_BUILDDIR)/$(PACKAGE_STRING)/debian/changelog.in > $(DEB_TMP_BUILDDIR)/$(PACKAGE_STRING)/debian/changelog
	rm $(DEB_TMP_BUILDDIR)/$(PACKAGE_STRING)/debian/changelog.in
	cd $(DEB_TMP_BUILDDIR)/$(PACKAGE_STRING) ; \
	./configure ; \
	pdebuild --use-pdebuild-internal --buildresult $(TOPDIR)/dist/$(DIST) ; \
	dpkg-buildpackage -D -S -sa -rfakeroot ; \
	mv ../$(PACKAGE_NAME)_* $(TOPDIR)/dist/$(DIST) ; \
	cd -

debs:
	tmp_dir=`mktemp -d /tmp/firmware-tools.XXXXXXXX` ; \
	make debmagic DEB_TMP_BUILDDIR=$${tmp_dir} DIST=$(DIST) DISTTAG=$(DISTTAG) ; \
	rm -rf $${tmp_dir}
