SHELL		= /bin/sh
MAKE		= make

CC		= cc
CFLAGS		= -DNDEBUG
LDFLAGS		= $(CFLAGS)

DESTDIR		=
PREFIX		= /usr/local
BINDIR		= $(PREFIX)/games
DATADIR		= $(PREFIX)/share/games
INCDIR		= $(PREFIX)/inc
LIBDIR		= $(PREFIX)/lib
MANDIR		= $(PREFIX)/man

PRGNAM		= hnefatafl
VERSION		= 140617
MANCAT		= 6
MANTITLE	= Hnefatafl
BIN		= $(PRGNAM)

GLEIPNIR	= gleipnir
GLINE_H		= $(GLEIPNIR)_line.h
GLINES_H	= $(GLEIPNIR)_lines.h
GLINEREAD_H	= $(GLEIPNIR)_lineread.h
GLANG_H		= $(GLEIPNIR)_lang.h

RAWDATA_DIR	= data
RAWMAN_DIR	= man
SRC_DIR		= src
GLEIPNIR_DIR	= $(SRC_DIR)/$(GLEIPNIR)
CORE_DIR	= $(SRC_DIR)/core
AIM_DIR		= $(SRC_DIR)/aim
UICX_DIR	= $(SRC_DIR)/uicx

all: static

static:
	cd $(SRC_DIR)		&& $(MAKE) static\
					CC="$(CC)"\
					CFLAGS="$(CFLAGS)"

dynamic:
	cd $(SRC_DIR)		&& $(MAKE) dynamic\
					CC="$(CC)"\
					CFLAGS="$(CFLAGS)"\
					LDFLAGS="$(LDFLAGS)"

clean:
	cd $(SRC_DIR)	&& make clean

mrproper: clean
	cd $(SRC_DIR)	&& make mrproper

clean-roff:
	rm -f $(RAWMAN_DIR)/$(PRGNAM)_eng.$(MANCAT)
	rm -f $(RAWMAN_DIR)/$(PRGNAM)_swe.$(MANCAT)

clean-dist: mrproper clean-roff
	cd $(SRC_DIR)	&& make clean-dist

roff:
	cat $(RAWMAN_DIR)/$(PRGNAM)_eng.txt\
		| ./.cman.sh -c "$(MANCAT)" -t "$(MANTITLE)"\
			-p "$(PRGNAM)" -v "$(VERSION)"\
		> $(RAWMAN_DIR)/$(PRGNAM)_eng.$(MANCAT)
	cat $(RAWMAN_DIR)/$(PRGNAM)_swe.txt\
		| ./.cman.sh -c "$(MANCAT)" -t "$(MANTITLE)"\
			-p "$(PRGNAM)" -v "$(VERSION)"\
		> $(RAWMAN_DIR)/$(PRGNAM)_swe.$(MANCAT)

dist: clean-dist
	cd $(SRC_DIR)	&& make dist
	$(MAKE) roff
	./.cdist.sh "$(PRGNAM)$(VERSION)"

install: install-static

install-dynamic: dynamic
	$(MAKE) install-bin
	$(MAKE) install-data
	$(MAKE) install-inc
	$(MAKE) install-lib
	$(MAKE) install-man

install-static: static
	$(MAKE) install-bin
	$(MAKE) install-data
	$(MAKE) install-man

install-bin:
	mkdir -p $(DESTDIR)$(BINDIR)
	cp $(UICX_DIR)/$(BIN)			$(DESTDIR)$(BINDIR)/

install-data:
	mkdir -p $(DESTDIR)$(DATADIR)/$(PRGNAM)
	cp -r $(RAWDATA_DIR)/*		$(DESTDIR)$(DATADIR)/$(PRGNAM)/

install-inc:
	mkdir -p $(DESTDIR)$(INCDIR)
	cp $(CORE_DIR)/$(PRGNAM).h		$(DESTDIR)$(INCDIR)/
	cp $(AIM_DIR)/$(PRGNAM)_aim.h		$(DESTDIR)$(INCDIR)/
	cp $(GLEIPNIR_DIR)/$(GLINE_H)		$(DESTDIR)$(INCDIR)/
	cp $(GLEIPNIR_DIR)/$(GLINES_H)		$(DESTDIR)$(INCDIR)/
	cp $(GLEIPNIR_DIR)/$(GLINEREAD_H)	$(DESTDIR)$(INCDIR)/
	cp $(GLEIPNIR_DIR)/$(GLANG_H)		$(DESTDIR)$(INCDIR)/

install-lib:
	mkdir -p $(DESTDIR)$(LIBDIR)
	cp $(CORE_DIR)/lib$(PRGNAM).so		$(DESTDIR)$(LIBDIR)/
	cp $(AIM_DIR)/lib$(PRGNAM)_aim.so	$(DESTDIR)$(LIBDIR)/

install-man:
	mkdir -p $(DESTDIR)$(MANDIR)/man$(MANCAT)
	mkdir -p $(DESTDIR)$(MANDIR)/sv/man$(MANCAT)
	cp $(RAWMAN_DIR)/$(PRGNAM)_eng.$(MANCAT)\
		$(DESTDIR)$(MANDIR)/man$(MANCAT)/$(PRGNAM).$(MANCAT)
	cp $(RAWMAN_DIR)/$(PRGNAM)_swe.$(MANCAT)\
		$(DESTDIR)$(MANDIR)/sv/man$(MANCAT)/$(PRGNAM).$(MANCAT)

uninstall: uninstall-static

uninstall-dynamic:
	$(MAKE) uninstall-bin
	$(MAKE) uninstall-data
	$(MAKE) uninstall-inc
	$(MAKE) uninstall-lib
	$(MAKE) uninstall-man

uninstall-static:
	$(MAKE) uninstall-bin
	$(MAKE) uninstall-data
	$(MAKE) uninstall-man

uninstall-bin:
	rm -f $(DESTDIR)$(BINDIR)/$(BIN)

uninstall-data:
	rm -rf $(DESTDIR)$(DATADIR)/$(PRGNAM)

uninstall-inc:
	rm -f $(DESTDIR)$(INCDIR)/$(PRGNAM).h
	rm -f $(DESTDIR)$(INCDIR)/$(PRGNAM)_aim.h
	rm -f $(DESTDIR)$(INCDIR)/$(GLINE_H)
	rm -f $(DESTDIR)$(INCDIR)/$(GLINES_H)
	rm -f $(DESTDIR)$(INCDIR)/$(GLINEREAD_H)
	rm -f $(DESTDIR)$(INCDIR)/$(GLANG_H)

uninstall-lib:
	rm -f $(DESTDIR)$(LIBDIR)/lib$(PRGNAM).so
	rm -f $(DESTDIR)$(LIBDIR)/lib$(PRGNAM)_aim.so

uninstall-man:
	rm -f $(DESTDIR)$(MANDIR)/man$(MANCAT)/$(PRGNAM).$(MANCAT)
	rm -f $(DESTDIR)$(MANDIR)/sv/man$(MANCAT)/$(PRGNAM).$(MANCAT)

sloc:
	./.csloc.sh	$$(find $(CORE_DIR)	-type f -name '*\.c')\
			$$(find $(AIM_DIR)	-type f -name '*\.c')\
			$$(find $(UICX_DIR)	-type f -name '*\.c')

style:
	./.cstyle.sh	$$(find $(CORE_DIR) -type f -name '*\.[ch]'\
				-o -name 'README' -o -name 'DEPENDS'\
				-o -name 'LICENSE' -o -name '*\.awk')\
			$$(find $(AIM_DIR) -type f -name '*\.[ch]'\
				-o -name 'README' -o -name 'DEPENDS')\
			$$(find $(UICX_DIR) -type f -name '*\.[ch]'\
				-o -name 'README' -o -name 'DEPENDS')\
			CHANGES CONTRIBUTING INSTALL LICENSE README TODO

.PHONY: all clean mrproper\
	dynamic static\
	dist clean-dist\
	install install-dynamic install-static\
		install-bin install-data install-inc\
		install-lib install-man\
	uninstall uninstall-dynamic uninstall-static\
		uninstall-bin uninstall-data uninstall-inc\
		uninstall-lib install-man\
	sloc style

