#!/usr/bin/make
#
# Makefile for SchoolBell
#
# $Id: Makefile 5066 2005-09-22 18:01:58Z jinty $

PYTHON=python
TESTFLAGS=-w1
POT=src/schoolbell/app/locales/schoolbell.pot
PO=$(wildcard src/schoolbell/app/locales/*/LC_MESSAGES/*.po)
PYTHONPATH=src:Zope3/src

.PHONY: all
all: build

Zope3:
	svn co svn://svn.zope.org/repos/main/Zope3/branches/Zope-3.1 Zope3

.PHONY: build
build: Zope3
	[ ! -d Zope3 ] || cd Zope3 && $(PYTHON) setup.py build_ext -i
	$(PYTHON) setup.py build
	$(PYTHON) remove-stale-bytecode.py

.PHONY: clean
clean:
	find . \( -path './src/*.mo' -o -name '*.o' \
	         -o -name '*.py[co]' \) -exec rm -f {} \;
	rm -rf build
	rm -rf rosetta-schoolbell-ui
	rm -f rosetta-schoolbell-ui.tar.gz

.PHONY: realclean
realclean: clean
	find . \( -name '*.so' -o -name '*.pyd' \) -exec rm -f {} \;
	rm -f Data.fs* tags ID *.log
	rm -f MANIFEST
	rm -rf dist

.PHONY: test
test: build
	LC_ALL="C" $(PYTHON) test.py $(TESTFLAGS)

.PHONY: ftest
ftest: build
	$(PYTHON) test.py -f $(TESTFLAGS)

.PHONY: run
run: build
	$(PYTHON) schoolbell-server.py

.PHONY: dist
dist: realclean build update-translations clean
	rm -rf dist
	find . -name '*.py[dco]' -exec rm -f {} \;
	./setup.py sdist --formats=schooltooltgz

.PHONY: signtar
signtar: dist
	md5sum dist/school*.tar.gz > dist/md5sum
	gpg --clearsign dist/md5sum
	mv dist/md5sum.asc dist/md5sum

.PHONY: extract-translations
extract-translations: build
	# here for backwards compatibility only,
	# setup.py does the work!

.PHONY: update-translations
update-translations:
	set -e; for f in $(PO); do		\
	     msgmerge -U $$f $(POT);		\
	     msgfmt -o $${f%.po}.mo $$f;	\
	done

rosetta-schoolbell-ui.tar.gz:
	wget $(TRANSLATION) && touch `basename $(TRANSLATION)`

rosetta-schoolbell-ui: rosetta-schoolbell-ui.tar.gz
	tar -xmzf rosetta-schoolbell-ui.tar.gz

src/schoolbell/app/locales/%/LC_MESSAGES/schoolbell.po: rosetta-schoolbell-ui
	mkdir -p `dirname $@`
	cp rosetta-schoolbell-ui/$*.po $@

.PHONY: get-rosetta-translations
get-rosetta-translations: rosetta-schoolbell-ui $(foreach locale,$(basename $(notdir $(wildcard rosetta-schoolbell-ui/*.po))),src/schoolbell/app/locales/$(locale)/LC_MESSAGES/schoolbell.po)
