#
# Copyright (c) 1993, 1994 Matthias Mutz
# Copyright (c) 1998, 1999 Michael Vanier and the Free Software Foundation
+# Copyright (c) 2008, 2013, 2014 Yann Dirson and the Free Software Foundation
#
# GNU Shogi is based on GNU Chess
# Copyright (c) 1992 Free Software Foundation
#
# gnushogi is GNU shogi, for raw text, curses, or x output.
+# gnuminishogi is GNU minishogi, for raw text, curses, or x output.
# pat2inc converts pattern textfile to "pattern.inc" include file.
# sizetest shows the memory usage of the main data structures.
#
SHELL = /bin/sh
-VERS = 1.3
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
VPATH=$(SRCDIR)
+PROGNAME=@PROGNAME@
+
# Installation directory.
prefix = @prefix@
# Where the language description, the book, and the
# persistent hashtable live.
-LIBDIR = $(prefix)/lib/gnushogi
+LIBDIR = $(prefix)/lib/$(PROGNAME)
# Where the man page goes.
MANDIR = $(prefix)/man/man6
CC = @CC@
CWARNINGS = @WARNINGS@
CEXTRAFLAGS = @CEXTRAFLAGS@
-CFLAGS = @CFLAGS@ $(CEXTRAFLAGS) $(CWARNINGS) -I$(ROOT) -I@top_builddir@
+CFLAGS = @CFLAGS@ $(HASH) $(CEXTRAFLAGS) $(CWARNINGS) -I. -I@top_builddir@ -I$(ROOT)
LDFLAGS = @LDFLAGS@
# The hashfile is a record of positions seen. It is used by
# GNU Shogi to avoid making the same mistakes, a form of learning.
-HASH = -DHASHFILE=\"$(LIBDIR)/gnushogi.hsh\"
+HASH = -DHASHFILE=\"$(LIBDIR)/$(PROGNAME).hsh\"
# The "book" is a record of the first few moves, for playing good
# moves easily and quickly, saving time, and irritating the human
# opponent.
-TEXTBOOK = -DBOOK=\"$(LIBDIR)/gnushogi.tbk\"
-BINBOOK = -DBINBOOK=\"$(LIBDIR)/gnushogi.bbk\"
+TEXTBOOK = -DBOOK=\"$(LIBDIR)/$(PROGNAME).tbk\"
+BINBOOK = -DBINBOOK=\"$(LIBDIR)/$(PROGNAME).bbk\"
# The pattern file contains various opening patterns. The program tries to
# obtain such a pattern in the opening stage. Sequences of opening
# patterns may be described in order to support the correct order of moves.
-PATTERN = -DPATTERNFILE=\"../misc/gnushogi.pat\"
+PATTERNFILE=$(ROOT)/misc/$(PROGNAME).pat
+PATTERN = -DPATTERNFILE=\"$(PATTERNFILE)\"
all:
#
COMMONFILES = \
+ globals.o \
+ init-common.o \
+ pattern-common.o
+
+NOTCOMMONFILES = \
attacks.o \
book.o \
commondsp.o \
dspwrappers.o \
eval.o \
genmove.o \
- globals.o \
init.o \
pattern.o \
rawdsp.o \
tcontrl.o \
util.o
-GNUSHOGI_FILES = $(COMMONFILES) main.o
+GNUSHOGI_FILES = $(COMMONFILES) $(NOTCOMMONFILES) main.o
PAT2INCFILES = $(COMMONFILES) makepattern.o pat2inc.o
# Primary targets.
#
-gnushogi:
- $(CC) $(CFLAGS) -o gnushogi $(GNUSHOGI_FILES) $(LDFLAGS) $(LCURSES) $(LIBS)
+$(PROGNAME):
+ $(CC) $(CFLAGS) -o $(PROGNAME) $(GNUSHOGI_FILES) $(LDFLAGS) $(LCURSES) $(LIBS)
pat2inc:
$(CC) $(CFLAGS) -o pat2inc $(PAT2INCFILES) $(LDFLAGS) $(LCURSES) $(LIBS)
init.o: init.c
$(CC) $(CFLAGS) -c $<
+init-common.o: init-common.c
+ $(CC) $(CFLAGS) $(LANGF) -c $<
+
main.o: main.c
$(CC) $(CFLAGS) $(BINBOOK) -c $<
pattern.o: pattern.c
$(CC) $(CFLAGS) -c $<
+pattern-common.o: pattern-common.c
+ $(CC) $(CFLAGS) -c $<
+
rawdsp.o: rawdsp.c
$(CC) $(CFLAGS) -c $<
# Files specific to particular targets.
pat2inc.o: pat2inc.c
- $(CC) $(CFLAGS) $(BINBOOK) $(PATTERN) -c $<
+ $(CC) $(CFLAGS) -c $<
sizetest.o: sizetest.c
$(CC) $(CFLAGS) -c $<
+pattern.inc: $(PATTERNFILE) pat2inc
+ ./pat2inc
#
# Other targets.
#
-gnushogi.bbk:
- @if [ -f ./gnushogi.bbk ]; then rm ./gnushogi.bbk; fi
+$(PROGNAME).bbk:
+ @if [ -f ./$(PROGNAME).bbk ]; then rm ./$(PROGNAME).bbk; fi
echo quit > test
- cat $(ROOT)/misc/gnushogi.tbk > _tmp_t
- cat test | ./gnushogi -R -b _tmp_t -B ./gnushogi.bbk -S 8000 -P 40 3 0
+ cat $(ROOT)/misc/$(PROGNAME).tbk > _tmp_t
+ cat test | ./$(PROGNAME) -R -b _tmp_t -B ./$(PROGNAME).bbk -S 8000 -P 40 3 0
rm test _tmp_t
@echo
# Installation.
#
-install: gnushogi
- strip gnushogi
+install: $(PROGNAME)
+ strip $(PROGNAME)
$(INSTALL_PROGRAM) -d $(BINDIR)
$(INSTALL_PROGRAM) -d $(LIBDIR)
$(INSTALL_PROGRAM) -d $(MANDIR)
$(INSTALL_PROGRAM) -d $(INFODIR)
- $(INSTALL_PROGRAM) gnushogi $(BINDIR)
+ $(INSTALL_PROGRAM) $(PROGNAME) $(BINDIR)
$(INSTALL_DATA) $(ROOT)/doc/gnushogi.6 $(MANDIR)
$(INSTALL_DATA) $(ROOT)/doc/gnushogi.info* $(INFODIR)
- $(INSTALL_DATA) gnushogi.bbk $(LIBDIR)/gnushogi.bbk
+ $(INSTALL_DATA) $(PROGNAME).bbk $(LIBDIR)/$(PROGNAME).bbk
#
# Cleanup.
#
-CLEANFILES = *.o gnushogi sizetest pat2inc CLp* *.bbk
+CLEANFILES = *.o gnushogi gnuminishogi sizetest pat2inc CLp* *.bbk
clean:
@for file in $(CLEANFILES); do \
# Dependencies.
#
-gnushogi: $(GNUSHOGI_FILES)
+$(PROGNAME): $(GNUSHOGI_FILES)
pat2inc: $(PAT2INCFILES)
sizetest: sizetest.o
attacks.o: attacks.c gnushogi.h
init.o: init.c gnushogi.h $(SRCDIR)/pattern.h
main.o: main.c gnushogi.h
makepattern.o: pattern.c gnushogi.h $(SRCDIR)/pattern.h
-pattern.o: pattern.c gnushogi.h $(SRCDIR)/pattern.h $(SRCDIR)/pattern.inc
+pattern.o: pattern.c gnushogi.h $(SRCDIR)/pattern.h pattern.inc
rawdsp.o: rawdsp.c gnushogi.h
search.o: search.c gnushogi.h
tcontrl.o: tcontrl.c gnushogi.h
util.o: util.c gnushogi.h
pat2inc.o: pat2inc.c $(SRCDIR)/pattern.h $(SRCDIR)/gnushogi.h
sizetest.o: sizetest.c $(SRCDIR)/gnushogi.h $(SRCDIR)/eval.h
-gnushogi.bbk: gnushogi
+$(PROGNAME).bbk: $(PROGNAME)