HG = hg
PYTHON = python

DESTDIR =
PREFIX = /usr/local

DEBCHANGE = debchange
DEBUILD = debuild

.PHONY: all
all:
	$(MAKE) -C src all
	$(PYTHON) setup.py build

.PHONY: local
local:
	$(MAKE) -C src all
	$(PYTHON) setup.py \
		build_py -c -d. \
		build_ext -i

.PHONY: help
help:
	@echo 'Make targets:'
	@echo '  all          - build program'
	@echo '  local        - build for inplace usage'
	@echo '  install      - install program to $(PREFIX)'
	@echo '  tests        - run Mercurial test suite with cHg (needs HGROOT)'
	@echo '  run-server   - run command server in foreground (for debug)'
	@echo '  deb          - build debian package'
	@echo '  clean        - remove intermediate files'

.PHONY: install
install: all
	$(MAKE) -C src install
	$(PYTHON) setup.py install --root "$(DESTDIR)/" --prefix "$(PREFIX)"

.PHONY: tests
tests:
	cd $(HGROOT)/tests && $(PYTHON) $(PWD)/tests/run-hgtests.py \
		--blacklist $(PWD)/tests/hgtests.blacklist $(TESTFLAGS)

.PHONY: run-server
run-server:
	$(MAKE) -C src serve

.PHONY: deb
deb: debian/changelog
	$(DEBUILD)

debian/changelog: .hg/dirstate .hg/store/00changelog.i
	$(HG) revert -q $@
	$(DEBCHANGE) -v "`$(HG) log -r. -T'0.3~hg{rev}.{node|short}'`" \
		'Nightly build.'

.PHONY: clean
clean:
	$(RM) hgext/*.pyc
	-find . -name '*.orig' -print0 | xargs -0 $(RM)
	$(MAKE) -C src clean
	$(PYTHON) setup.py clean

.PHONY: distclean
distclean:
	$(RM) hgext/*.pyc hgext/_chgutil.so
	-find . -name '*.orig' -print0 | xargs -0 $(RM)
	$(MAKE) -C src distclean
	$(PYTHON) setup.py clean -a
