###
### AmyBoard Makefile
###
### ------------------------------------------------------------------------
### This program is free software; you can redistribute it and/or modify
### it under the terms of the GNU General Public License as published by
### the Free Software Foundation; either version 2 of the License, or
### (at your option) any later version.
###
### This program is distributed in the hope that it will be useful,
### but WITHOUT ANY WARRANTY; without even the implied warranty of
### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
### GNU General Public License for more details.
###
### You should have received a copy of the GNU General Public License
### along with this program; if not, write to the Free Software
### Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
### ------------------------------------------------------------------------
###


############################################################################
#
#   Use this to compile with gcc and gmake
#
############################################################################
#CC         = gcc -noixemul
#CFLAGS     = -I.. -IMUI:Developer/C/include -pedantic -Wall -g
#DEFINES    = -D_amigados
#LD         = gcc -noixemul
#LDFLAGS    = -LMUI:Developer/C/GNU/Lib -g
#LIBS       = -lm -lmui -lamiga
#PARENT     = ..
#INCFILE    = amyboard.h


############################################################################
#
#   Use this to compile with Dice and DMake
#
############################################################################
CC          = dcc
CDEBUG      =
CFLAGS      = -mi -mC -mD -IMUI:Developer/C/include -I/ -proto $(CDEBUG) \
	      -Hamyboard.m=amyboard.h
LIBCFLAGS   = -Damigados -proto -IMUI:Developer/C/include
DEFINES     = -D_amigados -DATTENTION
LD          = dcc
LDEBUG      =
LDFLAGS     = $(LDEBUG) -LTools:Developer/lib -LMUI:Developer/C/DLib \
	      -mC -mD
LIBS        = -lmempools -lm -lmui
PARENT      =
INCFILE     = amyboard.m


############################################################################
#
#   Paths; modify as you like
#
############################################################################
prefix = Fun:$PRODUCT-$VERSION.$PATCHLEVEL
exec_prefix = ${prefix}
bindir = $(exec_prefix)/bin
mandir = $(prefix)/man/man6
manext = .6


############################################################################
#
#   Other binaries
#
############################################################################
LEX = flex
LEXFLAGS =
CP = C:Copy


############################################################################
############################################################################
###
###  You should not need to change anything below.
###
############################################################################
############################################################################
DISTDIR = AmyBoard-3.3.pl0

DISTDOC = $(PARENT)/ChangeLog.2 $(PARENT)/ChangeLog $(PARENT)/COPYING \
    $(PARENT)/COPYRIGHT $(PARENT)/FAQ $(PARENT)/READ_ME $(PARENT)/ToDo \
    doc/ReadMe.mui doc/ReadMe.mui.info AmyBoard.guide AmyBoard.guide.info
DISTBIN = AmyBoard AmyBoard.info Install Install.info \

SRCDOC = doc/ReadMe.mui doc/ReadMe.mui.info

SRCAMIGA = AmyBoard.info Install Install.info args.c bitmaps.c childio.c \
	   gettimeofday.c muiclass.c parser.c time.c amyboard.c amyboard.h \
	   config.h DMakefile AmyBoard.texinfo \
	   AmyBoard.guide.info args.h amyedittags.c amygamelist.c

SRCCOMMON = $(PARENT)/ChangeLog.2 $(PARENT)/ChangeLog $(PARENT)/COPYING \
    $(PARENT)/COPYRIGHT $(PARENT)/FAQ $(PARENT)/READ_ME $(PARENT)/ToDo \
    $(PARENT)/INSTALL $(PARENT)/Makefile.in \
    $(PARENT)/backend.c $(PARENT)/backend.h $(PARENT)/bitmaps.h \
    $(PARENT)/childio.c $(PARENT)/childio.h $(PARENT)/cmail.in \
    $(PARENT)/cmail.man $(PARENT)/comment.in $(PARENT)/common.h \
    $(PARENT)/config.guess $(PARENT)/config.sub $(PARENT)/configure \
    $(PARENT)/configure.in $(PARENT)/frontend.h $(PARENT)/ics-addresses \
    $(PARENT)/ics-info $(PARENT)/install-sh $(PARENT)/kk13.pgn \
    $(PARENT)/moves.c $(PARENT)/moves.h $(PARENT)/parser.c \
    $(PARENT)/parser.h $(PARENT)/parser.l $(PARENT)/xboard.c \
    $(PARENT)/xboard.h $(PARENT)/lists.h $(PARENT)/lists.c \
    $(PARENT)/gamelist.c $(PARENT)/pgntags.c $(PARENT)/xboard.man \
    $(PARENT)/Amiga.info $(PARENT)/xedittags.c $(PARENT)/xedittags.h \
    $(PARENT)/xgamelist.c $(PARENT)/xgamelist.h $(PARENT)xboard.texi \
    $(PARENT)/xboard.texinfo.in $(PARENT)/gpl.texinfo $(PARENT)/pxboard \
    $(PARENT)/acconfig.h $(PARENT)/config.h.in


### Targets required by GNU standards #######################################

all: AmyBoard AmyBoard.guide

install:
	$(CP) AmyBoard $(bindir)/AmyBoard

uninstall:
	C:Delete $(bindir)/AmyBoard QUIET

clean:
	C:Delete AmyBoard #?.o #?.m #?.doc lex.yy.c QUIET

distclean: clean

mostlyclean: clean

realclean: distclean
	C:Delete parser.c QUIET

TAGS:
	etags #?.c #?.h

info:   AmyBoard.info

dvi:    AmyBoard.dvi

dist: distbin distsrc

distbin: all
	C:Delete t:$(DISTDIR)#? ALL QUIET
	C:MakeDir t:$(DISTDIR)
	C:MakeDir t:$(DISTDIR)/doc
	$(CP) $(DISTBIN) t:$(DISTDIR)
	$(CP) $(DISTDOC) t:$(DISTDIR)/doc
	$(CP) $(PARENT)/Amiga.info t:$(DISTDIR).info
	lha a -r t:$(DISTDIR)bin.lha t:$(DISTDIR) t:$(DISTDIR).info
	C:Delete t:$(DISTDIR) t:$(DISTDIR).info ALL QUIET

distsrc:
	C:MakeDir t:$(DISTDIR)
	C:MakeDir t:$(DISTDIR)/Amiga
	C:MakeDir t:$(DISTDIR)/Amiga/doc
	$(CP) $(SRCCOMMON) t:$(DISTDIR)
	$(CP) $(PARENT)/bitmaps t:$(DISTDIR)/bitmaps ALL
	$(CP) $(PARENT)/bitmaps.xchess t:$(DISTDIR)/bitmaps.xchess ALL
	$(CP) $(SRCAMIGA) t:$(DISTDIR)/Amiga
	$(CP) bitmaps t:$(DISTDIR)/Amiga/bitmaps ALL
	$(CP) $(SRCDOC) t:$(DISTDIR)/Amiga/doc
	lha a -r t:$(DISTDIR)src.lha t:$(DISTDIR)/#?
	C:Protect t:$(DISTDIR) +wd ALL QUIET
	C:Delete t:$(DISTDIR) ALL QUIET

check: all

### End targets required by GNU standards ###################################

AmyBoard: parser.o amyboard.o backend.o moves.o childio.o muiclass.o time.o \
	args.o lists.o gamelist.o pgntags.o bitmaps.o gettimeofday.o \
	amyedittags.o amygamelist.o
	$(LD) -o AmyBoard $(LDFLAGS) \
		parser.o amyboard.o backend.o moves.o childio.o muiclass.o \
		time.o args.o lists.o gamelist.o pgntags.o bitmaps.o \
		gettimeofday.o amyedittags.o amygamelist.o $(LIBS)

parser.c: $(PARENT)/parser.l
	$(LEX) -t ../parser.l >parser.c

amyboard.o: amyboard.c $(INCFILE) $(PARENT)/common.h $(PARENT)/frontend.h \
	  $(PARENT)/backend.h $(PARENT)/bitmaps.h
	$(CC) $(DEFINES) $(CFLAGS) -c amyboard.c

parser.o: parser.c $(PARENT)/common.h $(PARENT)/backend.h \
	  $(PARENT)/parser.h $(PARENT)/moves.h
	$(CC) $(DEFINES) $(CFLAGS) -c parser.c

backend.o: $(PARENT)/backend.c $(PARENT)/common.h $(PARENT)/frontend.h \
	   $(PARENT)/backend.h $(PARENT)/parser.h $(PARENT)/moves.h
	$(CC) $(DEFINES) $(CFLAGS) -c $(PARENT)/backend.c -o backend.o

moves.o: $(PARENT)/moves.c $(PARENT)/common.h $(PARENT)/backend.h \
	 $(PARENT)/moves.h $(PARENT)/parser.h
	$(CC) $(DEFINES) $(CFLAGS) -c $(PARENT)/moves.c -o moves.o

childio.o: childio.c $(INCFILE) $(PARENT)/common.h
	$(CC) $(DEFINES) $(CFLAGS) -c childio.c

muiclass.o: muiclass.c $(INCFILE) $(PARENT)/common.h
	$(CC) $(DEFINES) $(CFLAGS) -c muiclass.c

time.o: time.c $(INCFILE) $(PARENT)/common.h
	$(CC) $(DEFINES) $(CFLAGS) -c time.c

args.o: args.c $(INCFILE)
	$(CC) $(DEFINES) $(CFLAGS) -c args.c

lists.o: $(PARENT)/lists.c $(INCFILE) $(PARENT)/lists.h
	$(CC) $(DEFINES) $(CFLAGS) -c $(PARENT)/lists.c -o lists.o

gamelist.o: $(PARENT)/gamelist.c $(INCFILE) $(PARENT)/lists.h
	$(CC) $(DEFINES) $(CFLAGS) -c $(PARENT)/gamelist.c -o gamelist.o

pgntags.o: $(PARENT)/pgntags.c $(INCFILE)
	$(CC) $(DEFINES) $(CFLAGS) -c $(PARENT)/pgntags.c -o pgntags.o

bitmaps.o: bitmaps.c
	$(CC) $(DEFINES) $(CFLAGS) -c bitmaps.c

gettimeofday.o: gettimeofday.c
	$(CC) $(DEFINES) $(CFLAGS) -c gettimeofday.c

amyedittags.o: amyedittags.c
	$(CC) $(DEFINES) $(CFLAGS) -c amyedittags.c

amygamelist.o: amygamelist.c
	$(CC) $(DEFINES) $(CFLAGS) -c amygamelist.c

amyboard.m: amyboard.h $(PARENT)/common.h $(PARENT)/frontend.h \
	  $(PARENT)/backend.h $(PARENT)/lists.h config.h
	C:Delete amyboard.m quiet

AmyBoard.guide: AmyBoard.texinfo /xboard.texi /gpl.texinfo
	makeinfo -I / --amiga-39 --output AmyBoard.guide AmyBoard.texinfo

AmyBoard.info: AmyBoard.texinfo /xboard.texi /gpl.texinfo
	makeinfo -I / --output AmyBoard.info AmyBoard.texinfo

AmyBoard.dvi: AmyBoard.texinfo /xboard.texi /gpl.texinfo
	tex AmyBoard.texinfo
	texindex AmyBoard.cp
	tex AmyBoard.texinfo
