#
# Makefile for oldgames
#
# Bob Eager   May 2015
#
SRC=		bcd.c caesar.c grdc.c morse.c number.c pom.c ppt.c primes.c unstr.c
FACTORSRC=	factor.c pr_tbl.c
FORTUNESRC=	fortune.c
FORTUNEHDR=	pathnames.h
PRIMESSRC=	primes.c pattern.c pr_tbl.c
PRIMESHDR=	primes.h
RANDOMSRC=	random.c randomize_fd.c
RANDOMHDR=	randomize_fd.h
STRFILESRC=	strfile.c
STRFILEHDR=	strfile.h
ALLSRC=		$(SRC) $(FACTORSRC) $(FORTUNESRC) $(FORTUNEHDR) $(PRIMESSRC) $(PRIMESHDR) $(RANDOMSRC) $(RANDOMHDR) $(STRFILESRC) $(STRFILEHDR)
BIN=		$(SRC:.c=)
FACTORBIN=	factor
FORTUNEBIN=	fortune
FORTUNEDAT=	fortune.datfiles
PRIMESBIN=	primes
RANDOMBIN=	random
STRFILEBIN=	strfile
ALLBIN=		$(BIN) $(FACTORBIN) $(FORTUNEBIN) $(PRIMESBIN) $(RANDOMBIN) $(STRFILEBIN)
SCRIPT=		rot13.sh
#
#BASEDIR=	/usr/local
BASEDIR=	/tmp/test
INSTALL_TO=	$(BASEDIR)/bin
INSTALL_TO_DAT=	$(BASEDIR)/share/games/fortune
INSTALL_TO_MAN6=$(BASEDIR)/man/man6
INSTALL_TO_MAN8=$(BASEDIR)/man/man8
#INSTALL_GROUP=	wheel
#INSTALL_OWNER=	root
INSTALL_GROUP=	justso
INSTALL_OWNER=	rde
#
MAN6=		bcd.6 caesar.6 factor.6 fortune.6 grdc.6 morse.6 number.6 pom.6 random.6
MAN8=		strfile.8
MAN6GZ=		$(MAN6:.6=.6.gz)
MAN8GZ=		$(MAN8:.8=.8.gz)
#
MISC=		Notes.fortune README README.fortune distname
TOOLS=		tools.fortune
#
DISTNAME!=	./distname
ARCH=		$(DISTNAME)-arch.zip
#
# Compiler flags
#
COMFLAGS	= -Wall
LDFLAGS+=	-lcurses -lm
.ifdef DEBUG
CFLAGS+=	-DDEBUG $(COMFLAGS)
LDFLAGS+=-s
.else
CFLAGS+=	-O2 $(COMFLAGS)
.endif
#
#-----------------------------------------------------------------------------
#
all:		bin man6 man8 $(SCRIPT) datfiles
#
bin:		$(ALLBIN)
#
$(FACTORBIN):	$(FACTORSRC)
		$(CC) $(CFLAGS) $(FACTORSRC) -o $(FACTORBIN)
#
$(PRIMESBIN):	$(PRIMESSRC) $(PRIMESHDR)
		$(CC) $(CFLAGS) $(PRIMESSRC) -o $(PRIMESBIN)
#
$(RANDOMBIN):	$(RANDOMSRC) $(RANDOMHDR)
		$(CC) $(CFLAGS) $(RANDOMSRC) -o $(RANDOMBIN)
#
$(STRFILEBIN):	$(STRFILESRC) $(STRFILEHDR)
		$(CC) $(CFLAGS) $(STRFILESRC) -o $(STRFILEBIN)
#
$(FORTUNEBIN):	$(FORTUNESRC) $(FORTUNEHDR) $(STRFILEBIN)
		$(CC) $(CFLAGS) $(FORTUNESRC) -o $(FORTUNEBIN)
#
man6:		$(MAN6GZ)
.for i in $(MAN6)
$(i).gz:	$(i)
		gzip < $(i) > $(i).gz
.endfor
#
man8:		$(MAN8GZ)
.for i in $(MAN8)
$(i).gz:	$(i)
		gzip < $(i) > $(i).gz
.endfor
#
datfiles::	strfile
		@make -C $(FORTUNEDAT)
#
install:	all
		install -s -g $(INSTALL_GROUP) -o $(INSTALL_OWNER) $(ALLBIN) $(INSTALL_TO)
		install -g $(INSTALL_GROUP) -o $(INSTALL_OWNER) rot13.sh $(INSTALL_TO)/rot13
		install -g $(INSTALL_GROUP) -o $(INSTALL_OWNER) $(MAN6GZ) $(INSTALL_TO_MAN6)
		install -g $(INSTALL_GROUP) -o $(INSTALL_OWNER) $(MAN8GZ) $(INSTALL_TO_MAN8)
		mkdir -p $(INSTALL_TO_DAT)
		install -g $(INSTALL_GROUP) -o $(INSTALL_OWNER) $(FORTUNEDAT)/[a-z]* $(INSTALL_TO_DAT)
		ln -f $(INSTALL_TO_MAN6)/caesar.6.gz $(INSTALL_TO_MAN6)/rot13.6.gz
		ln -f $(INSTALL_TO_MAN6)/bcd.6.gz $(INSTALL_TO_MAN6)/ppt.6.gz
		ln -f $(INSTALL_TO_MAN6)/factor.6.gz $(INSTALL_TO_MAN6)/primes.6.gz
		ln -f $(INSTALL_TO_MAN8)/strfile.8.gz $(INSTALL_TO_MAN8)/unstr.8.gz
#
distfile:
		@mkdir -p $(DISTNAME)
		@cp -a $(ALLSRC) $(DISTNAME)
		@cp -a $(SCRIPT) $(DISTNAME)
		@cp -a $(MAN6) $(MAN8) Makefile $(DISTNAME)
		@cp -a $(MISC) $(DISTNAME)
		@cp -a $(TOOLS) $(DISTNAME)
		@cp -a $(FORTUNEDAT) $(DISTNAME)
		@rm -f $(DISTNAME).zip
		zip -9 -r $(DISTNAME).zip $(DISTNAME)
		@rm -rf $(DISTNAME)
#
clean:
		@make -C $(FORTUNEDAT) clean
		@rm -f $(ALLBIN) $(MAN6GZ) $(MAN8GZ)
#
clean-all:
		@rm -f $(ALLBIN) core
#
arch:		$(ALLBIN) $(SCRIPT) $(MISC) $(MAN6) $(MAN8) $(ALLSRC) $(TOOLS) \
			$(FORTUNEDAT) Makefile
		@rm -f $(ARCH)
		zip -9 -r $(ARCH) $?
#
# End of makefile for oldgames
#
