PACKAGE	= Coder
VERSION	= 0.3.0
VENDOR	= DeforaOS
SUBDIRS	= data doc po src tests tools
OBJDIR	=
PREFIX	= /usr/local
DESTDIR	=
MKDIR	= mkdir -m 0755 -p
INSTALL	= install
RM	= rm -f
TARGETS	= tests
RM	= rm -f
LN	= ln -f
TAR	= tar
TGZEXT	= .tar.gz
MKDIR	= mkdir -m 0755 -p
INSTALL	= install


all: subdirs

subdirs:
	@for i in $(SUBDIRS); do (cd "$$i" && \
		if [ -n "$(OBJDIR)" ]; then \
		([ -d "$(OBJDIR)$$i" ] || $(MKDIR) -- "$(OBJDIR)$$i") && \
		$(MAKE) OBJDIR="$(OBJDIR)$$i/"; \
		else $(MAKE); fi) || exit; done

tests: all
	cd tests && (if [ -n "$(OBJDIR)" ]; then $(MAKE) OBJDIR="$(OBJDIR)tests/" "$(OBJDIR)tests/clint.log" "$(OBJDIR)tests/fixme.log" "$(OBJDIR)tests/htmllint.log" "$(OBJDIR)tests/xmllint.log"; else $(MAKE) clint.log fixme.log htmllint.log xmllint.log; fi)

clean:
	@for i in $(SUBDIRS); do (cd "$$i" && \
		if [ -n "$(OBJDIR)" ]; then \
		$(MAKE) OBJDIR="$(OBJDIR)$$i/" clean; \
		else $(MAKE) clean; fi) || exit; done

distclean:
	@for i in $(SUBDIRS); do (cd "$$i" && \
		if [ -n "$(OBJDIR)" ]; then \
		$(MAKE) OBJDIR="$(OBJDIR)$$i/" distclean; \
		else $(MAKE) distclean; fi) || exit; done

dist:
	$(RM) -r -- $(OBJDIR)$(PACKAGE)-$(VERSION)
	$(LN) -s -- "$$PWD" $(OBJDIR)$(PACKAGE)-$(VERSION)
	@cd $(OBJDIR). && $(TAR) -czvf $(PACKAGE)-$(VERSION)$(TGZEXT) -- \
		$(PACKAGE)-$(VERSION)/data/Makefile \
		$(PACKAGE)-$(VERSION)/data/deforaos-coder.desktop \
		$(PACKAGE)-$(VERSION)/data/deforaos-debugger.desktop \
		$(PACKAGE)-$(VERSION)/data/deforaos-gdeasm.desktop \
		$(PACKAGE)-$(VERSION)/data/deforaos-sequel.desktop \
		$(PACKAGE)-$(VERSION)/data/deforaos-simulator.desktop \
		$(PACKAGE)-$(VERSION)/data/project.conf \
		$(PACKAGE)-$(VERSION)/doc/Makefile \
		$(PACKAGE)-$(VERSION)/doc/docbook.sh \
		$(PACKAGE)-$(VERSION)/doc/coder.css.xml \
		$(PACKAGE)-$(VERSION)/doc/coder.xml \
		$(PACKAGE)-$(VERSION)/doc/debugger.css.xml \
		$(PACKAGE)-$(VERSION)/doc/debugger.xml \
		$(PACKAGE)-$(VERSION)/doc/manual.css.xml \
		$(PACKAGE)-$(VERSION)/doc/sequel.css.xml \
		$(PACKAGE)-$(VERSION)/doc/sequel.xml \
		$(PACKAGE)-$(VERSION)/doc/simulator.css.xml \
		$(PACKAGE)-$(VERSION)/doc/simulator.xml \
		$(PACKAGE)-$(VERSION)/doc/project.conf \
		$(PACKAGE)-$(VERSION)/po/Makefile \
		$(PACKAGE)-$(VERSION)/po/gettext.sh \
		$(PACKAGE)-$(VERSION)/po/POTFILES \
		$(PACKAGE)-$(VERSION)/po/es.po \
		$(PACKAGE)-$(VERSION)/po/fr.po \
		$(PACKAGE)-$(VERSION)/po/project.conf \
		$(PACKAGE)-$(VERSION)/src/callbacks.c \
		$(PACKAGE)-$(VERSION)/src/coder.c \
		$(PACKAGE)-$(VERSION)/src/main.c \
		$(PACKAGE)-$(VERSION)/src/project.c \
		$(PACKAGE)-$(VERSION)/src/Makefile \
		$(PACKAGE)-$(VERSION)/src/callbacks.h \
		$(PACKAGE)-$(VERSION)/src/coder.h \
		$(PACKAGE)-$(VERSION)/src/project.h \
		$(PACKAGE)-$(VERSION)/src/project.conf \
		$(PACKAGE)-$(VERSION)/tests/Makefile \
		$(PACKAGE)-$(VERSION)/tests/clint.sh \
		$(PACKAGE)-$(VERSION)/tests/fixme.sh \
		$(PACKAGE)-$(VERSION)/tests/htmllint.sh \
		$(PACKAGE)-$(VERSION)/tests/xmllint.sh \
		$(PACKAGE)-$(VERSION)/tests/project.conf \
		$(PACKAGE)-$(VERSION)/tools/console.c \
		$(PACKAGE)-$(VERSION)/tools/debugger.c \
		$(PACKAGE)-$(VERSION)/tools/debugger-main.c \
		$(PACKAGE)-$(VERSION)/tools/gdeasm.c \
		$(PACKAGE)-$(VERSION)/tools/gdeasm-main.c \
		$(PACKAGE)-$(VERSION)/tools/sequel.c \
		$(PACKAGE)-$(VERSION)/tools/sequel-main.c \
		$(PACKAGE)-$(VERSION)/tools/simulator.c \
		$(PACKAGE)-$(VERSION)/tools/simulator-main.c \
		$(PACKAGE)-$(VERSION)/tools/Makefile \
		$(PACKAGE)-$(VERSION)/tools/backend.h \
		$(PACKAGE)-$(VERSION)/tools/common.h \
		$(PACKAGE)-$(VERSION)/tools/debug.h \
		$(PACKAGE)-$(VERSION)/tools/debugger.h \
		$(PACKAGE)-$(VERSION)/tools/gdeasm.h \
		$(PACKAGE)-$(VERSION)/tools/sequel.h \
		$(PACKAGE)-$(VERSION)/tools/simulator.h \
		$(PACKAGE)-$(VERSION)/tools/project.conf \
		$(PACKAGE)-$(VERSION)/tools/backend/asm.c \
		$(PACKAGE)-$(VERSION)/tools/backend/Makefile \
		$(PACKAGE)-$(VERSION)/tools/backend/project.conf \
		$(PACKAGE)-$(VERSION)/tools/debug/ptrace.c \
		$(PACKAGE)-$(VERSION)/tools/debug/Makefile \
		$(PACKAGE)-$(VERSION)/tools/debug/project.conf \
		$(PACKAGE)-$(VERSION)/tools/models/Makefile \
		$(PACKAGE)-$(VERSION)/tools/models/android-generic-wvga.conf \
		$(PACKAGE)-$(VERSION)/tools/models/htc-touchpro.conf \
		$(PACKAGE)-$(VERSION)/tools/models/jolla-jolla.conf \
		$(PACKAGE)-$(VERSION)/tools/models/lenovo-ideapad-s10-3t.conf \
		$(PACKAGE)-$(VERSION)/tools/models/nokia-n800.conf \
		$(PACKAGE)-$(VERSION)/tools/models/nokia-n9.conf \
		$(PACKAGE)-$(VERSION)/tools/models/nokia-n900.conf \
		$(PACKAGE)-$(VERSION)/tools/models/openmoko-gta01.conf \
		$(PACKAGE)-$(VERSION)/tools/models/openmoko-gta02.conf \
		$(PACKAGE)-$(VERSION)/tools/models/sharp-zaurus-sl-c3200.conf \
		$(PACKAGE)-$(VERSION)/tools/models/project.conf \
		$(PACKAGE)-$(VERSION)/tools/models/16x16/Makefile \
		$(PACKAGE)-$(VERSION)/tools/models/16x16/simulator-jolla-jolla.png \
		$(PACKAGE)-$(VERSION)/tools/models/16x16/simulator-lenovo-ideapad-s10-3t.png \
		$(PACKAGE)-$(VERSION)/tools/models/16x16/simulator-nokia-n800.png \
		$(PACKAGE)-$(VERSION)/tools/models/16x16/simulator-nokia-n9.png \
		$(PACKAGE)-$(VERSION)/tools/models/16x16/simulator-nokia-n900.png \
		$(PACKAGE)-$(VERSION)/tools/models/16x16/simulator-openmoko-freerunner.png \
		$(PACKAGE)-$(VERSION)/tools/models/16x16/simulator-openmoko-neo1973.png \
		$(PACKAGE)-$(VERSION)/tools/models/16x16/simulator-sharp-zaurus-sl-c3200.png \
		$(PACKAGE)-$(VERSION)/tools/models/16x16/project.conf \
		$(PACKAGE)-$(VERSION)/tools/models/24x24/Makefile \
		$(PACKAGE)-$(VERSION)/tools/models/24x24/simulator-jolla-jolla.png \
		$(PACKAGE)-$(VERSION)/tools/models/24x24/simulator-lenovo-ideapad-s10-3t.png \
		$(PACKAGE)-$(VERSION)/tools/models/24x24/simulator-nokia-n800.png \
		$(PACKAGE)-$(VERSION)/tools/models/24x24/simulator-nokia-n9.png \
		$(PACKAGE)-$(VERSION)/tools/models/24x24/simulator-nokia-n900.png \
		$(PACKAGE)-$(VERSION)/tools/models/24x24/simulator-openmoko-freerunner.png \
		$(PACKAGE)-$(VERSION)/tools/models/24x24/simulator-openmoko-neo1973.png \
		$(PACKAGE)-$(VERSION)/tools/models/24x24/simulator-sharp-zaurus-sl-c3200.png \
		$(PACKAGE)-$(VERSION)/tools/models/24x24/project.conf \
		$(PACKAGE)-$(VERSION)/tools/models/32x32/Makefile \
		$(PACKAGE)-$(VERSION)/tools/models/32x32/simulator-jolla-jolla.png \
		$(PACKAGE)-$(VERSION)/tools/models/32x32/simulator-lenovo-ideapad-s10-3t.png \
		$(PACKAGE)-$(VERSION)/tools/models/32x32/simulator-nokia-n800.png \
		$(PACKAGE)-$(VERSION)/tools/models/32x32/simulator-nokia-n9.png \
		$(PACKAGE)-$(VERSION)/tools/models/32x32/simulator-nokia-n900.png \
		$(PACKAGE)-$(VERSION)/tools/models/32x32/simulator-openmoko-freerunner.png \
		$(PACKAGE)-$(VERSION)/tools/models/32x32/simulator-openmoko-neo1973.png \
		$(PACKAGE)-$(VERSION)/tools/models/32x32/simulator-sharp-zaurus-sl-c3200.png \
		$(PACKAGE)-$(VERSION)/tools/models/32x32/project.conf \
		$(PACKAGE)-$(VERSION)/tools/models/48x48/Makefile \
		$(PACKAGE)-$(VERSION)/tools/models/48x48/simulator-jolla-jolla.png \
		$(PACKAGE)-$(VERSION)/tools/models/48x48/simulator-lenovo-ideapad-s10-3t.png \
		$(PACKAGE)-$(VERSION)/tools/models/48x48/simulator-nokia-n800.png \
		$(PACKAGE)-$(VERSION)/tools/models/48x48/simulator-nokia-n9.png \
		$(PACKAGE)-$(VERSION)/tools/models/48x48/simulator-nokia-n900.png \
		$(PACKAGE)-$(VERSION)/tools/models/48x48/simulator-openmoko-freerunner.png \
		$(PACKAGE)-$(VERSION)/tools/models/48x48/simulator-openmoko-neo1973.png \
		$(PACKAGE)-$(VERSION)/tools/models/48x48/simulator-sharp-zaurus-sl-c3200.png \
		$(PACKAGE)-$(VERSION)/tools/models/48x48/project.conf \
		$(PACKAGE)-$(VERSION)/Makefile \
		$(PACKAGE)-$(VERSION)/COPYING \
		$(PACKAGE)-$(VERSION)/README.md \
		$(PACKAGE)-$(VERSION)/config.h \
		$(PACKAGE)-$(VERSION)/config.sh \
		$(PACKAGE)-$(VERSION)/project.conf
	$(RM) -- $(OBJDIR)$(PACKAGE)-$(VERSION)

distcheck: dist
	$(TAR) -xzvf $(OBJDIR)$(PACKAGE)-$(VERSION)$(TGZEXT)
	$(MKDIR) -- $(PACKAGE)-$(VERSION)/objdir
	$(MKDIR) -- $(PACKAGE)-$(VERSION)/destdir
	cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/"
	cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" DESTDIR="$$PWD/destdir" install
	cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" DESTDIR="$$PWD/destdir" uninstall
	cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" distclean
	cd "$(PACKAGE)-$(VERSION)" && $(MAKE) dist
	$(RM) -r -- $(PACKAGE)-$(VERSION)

install: all
	@for i in $(SUBDIRS); do (cd "$$i" && \
		if [ -n "$(OBJDIR)" ]; then \
		$(MAKE) OBJDIR="$(OBJDIR)$$i/" install; \
		else $(MAKE) install; fi) || exit; done
	$(MKDIR) $(DESTDIR)$(PREFIX)/share/doc/Coder
	$(INSTALL) -m 0644 COPYING $(DESTDIR)$(PREFIX)/share/doc/Coder/COPYING
	$(MKDIR) $(DESTDIR)$(PREFIX)/share/doc/Coder
	$(INSTALL) -m 0644 README.md $(DESTDIR)$(PREFIX)/share/doc/Coder/README.md

uninstall:
	@for i in $(SUBDIRS); do (cd "$$i" && \
		if [ -n "$(OBJDIR)" ]; then \
		$(MAKE) OBJDIR="$(OBJDIR)$$i/" uninstall; \
		else $(MAKE) uninstall; fi) || exit; done
	$(RM) -- $(DESTDIR)$(PREFIX)/share/doc/Coder/COPYING
	$(RM) -- $(DESTDIR)$(PREFIX)/share/doc/Coder/README.md

.PHONY: all subdirs clean distclean dist distcheck install uninstall tests
