# Makefile for C*Base
# Copyright © 2005-2016 David Weinehall <tao@triad.se>

PRGNAME := cbase
VERSION := 3.3.8

TARGETS := doc src data
DISTDIR := dist

ARCHIVE := $(PRGNAME)-$(VERSION)
MKDIR := mkdir -p
TAR_EXCLUDES := --exclude-backups --exclude-vcs
TAR := tar cz $(TAR_EXCLUDES) --file

.PHONY: all
all:
	@for target in $(TARGETS); do					\
		(cd $$target && make $(MAKEFLAGS) all) || exit $$?;	\
	done

.PHONY: clean
clean:
	@for target in $(TARGETS); do					\
		(cd $$target && make $(MAKEFLAGS) clean) || exit $$?;\
	done

.PHONY: distclean
distclean:
	@for target in $(TARGETS); do					\
		(cd $$target && make $(MAKEFLAGS) distclean) || exit $$?;\
	done								&&\
	$(RM) -f $(DISTDIR)/*

.PHONY: tarball
tarball:
	$(RM) $(DISTDIR)/$(ARCHIVE).tar.gz				&&\
	$(RM) -r $(ARCHIVE)						&&\
	$(MKDIR) $(ARCHIVE)						&&\
	find . -maxdepth 1 -path '*/$(ARCHIVE)' -prune -o		\
		-not -name '.' -exec cp -a {} $(ARCHIVE) \;		&&\
	$(TAR) dist/$(ARCHIVE).tar.gz $(ARCHIVE)			&&\
	$(RM) -r $(ARCHIVE)

.PHONY: dist
dist: distclean tarball all
	find $(TARGETS) -name "*.d64" -exec cp {} $(DISTDIR) \;		&&\
	find $(TARGETS) -name "*.pdf" -exec cp {} $(DISTDIR) \;
