#
# 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
#
# GNU Shogi 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 1, or (at your option)
-# any later ../version.
+# the Free Software Foundation; either version 3 of the License, or (at your option)
+# any later version.
#
# GNU Shogi is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with GNU Shogi; see the file COPYING. If not, write to
-# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+# along with GNU Shogi; see the file COPYING.
+# If not, see <http://www.gnu.org/licenses/>.
#
#
# 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@
-ROOT = ..
+ROOT = @top_srcdir@
+SRCDIR = @srcdir@
+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
LIBS = -lm
# Display routines.
-LCURSES = -lcurses -ltermcap
+LCURSES = @LIBCURSES@
#
CC = @CC@
CWARNINGS = @WARNINGS@
CEXTRAFLAGS = @CEXTRAFLAGS@
-CFLAGS = @CFLAGS@ $(CEXTRAFLAGS) $(CWARNINGS) -I..
-
+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\"
-
-
-# The language file describes capabilities of the program. It may
-# be useful for customizing gnushogi for non-English-speaking players.
-
-LANGF = -DLANGFILE=\"../misc/gnushogi.lng\"
+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 \
- cursesdsp.o \
+ @CURSESDSP@ \
dspwrappers.o \
eval.o \
genmove.o \
- globals.o \
init.o \
pattern.o \
rawdsp.o \
search.o \
- sysdeps.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) $(LCURSES) $(LIBS)
+$(PROGNAME):
+ $(CC) $(CFLAGS) -o $(PROGNAME) $(GNUSHOGI_FILES) $(LDFLAGS) $(LCURSES) $(LIBS)
pat2inc:
- $(CC) $(CFLAGS) -o pat2inc $(PAT2INCFILES) $(LCURSES) $(LIBS)
+ $(CC) $(CFLAGS) -o pat2inc $(PAT2INCFILES) $(LDFLAGS) $(LCURSES) $(LIBS)
sizetest:
- $(CC) $(CFLAGS) -o sizetest sizetest.o $(LIBS)
+ $(CC) $(CFLAGS) -o sizetest sizetest.o $(LDFLAGS) $(LIBS)
profile:
$(MAKE) -f Makefile.profile gnushogi
# Common files.
-attacks.o:
- $(CC) $(CFLAGS) -c attacks.c
+attacks.o: attacks.c
+ $(CC) $(CFLAGS) -c $<
+
+book.o: book.c
+ $(CC) $(CFLAGS) $(TEXTBOOK) $(BINBOOK) -c $<
-book.o:
- $(CC) $(CFLAGS) $(TEXTBOOK) $(BINBOOK) -c book.c
+commondsp.o: commondsp.c
+ $(CC) $(CFLAGS) -c $<
-commondsp.o:
- $(CC) $(CFLAGS) -c commondsp.c
+cursesdsp.o: cursesdsp.c
+ $(CC) $(CFLAGS) -c $<
-cursesdsp.o:
- $(CC) $(CFLAGS) -c cursesdsp.c
+dspwrappers.o: dspwrappers.c
+ $(CC) $(CFLAGS) -c $<
-dspwrappers.o:
- $(CC) $(CFLAGS) -c dspwrappers.c
+genmove.o: genmove.c
+ $(CC) $(CFLAGS) -c $<
-genmove.o:
- $(CC) $(CFLAGS) -c genmove.c
+globals.o: globals.c
+ $(CC) $(CFLAGS) -c $<
-globals.o:
- $(CC) $(CFLAGS) -c globals.c
+eval.o: eval.c
+ $(CC) $(CFLAGS) -c $<
-eval.o:
- $(CC) $(CFLAGS) -c eval.c
+init.o: init.c
+ $(CC) $(CFLAGS) -c $<
-init.o:
- $(CC) $(CFLAGS) $(LANGF) -c init.c
+init-common.o: init-common.c
+ $(CC) $(CFLAGS) $(LANGF) -c $<
-main.o:
- $(CC) $(CFLAGS) $(BINBOOK) -c main.c
+main.o: main.c
+ $(CC) $(CFLAGS) $(BINBOOK) -c $<
# To create "pattern.inc" with "pat2inc", the external
# pattern textfile must be used.
-makepattern.o:
- $(CC) $(CFLAGS) $(PATTERN) -c makepattern.c
+makepattern.o: makepattern.c
+ $(CC) $(CFLAGS) $(PATTERN) -c $<
-pattern.o:
- $(CC) $(CFLAGS) -c pattern.c
+pattern.o: pattern.c
+ $(CC) $(CFLAGS) -c $<
-rawdsp.o:
- $(CC) $(CFLAGS) -c rawdsp.c
+pattern-common.o: pattern-common.c
+ $(CC) $(CFLAGS) -c $<
-search.o:
- $(CC) $(CFLAGS) -c search.c
+rawdsp.o: rawdsp.c
+ $(CC) $(CFLAGS) -c $<
-sysdeps.o:
- $(CC) $(CFLAGS) -c sysdeps.c
+search.o: search.c
+ $(CC) $(CFLAGS) -c $<
-tcontrl.o:
- $(CC) $(CFLAGS) -c tcontrl.c
+tcontrl.o: tcontrl.c
+ $(CC) $(CFLAGS) -c $<
-util.o:
- $(CC) $(CFLAGS) -c util.c
+util.o: util.c
+ $(CC) $(CFLAGS) -c $<
# Files specific to particular targets.
-pat2inc.o:
- $(CC) $(CFLAGS) $(LANGF) $(BINBOOK) $(PATTERN) -c pat2inc.c
+pat2inc.o: pat2inc.c
+ $(CC) $(CFLAGS) -c $<
-sizetest.o:
- $(CC) $(CFLAGS) -c sizetest.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 ../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 ../version.h
-book.o: book.c gnushogi.h ../version.h
-commondsp.o: commondsp.c gnushogi.h ../version.h
-cursesdsp.o: cursesdsp.c gnushogi.h ../version.h
-dspwrappers.o: dspwrappers.c gnushogi.h ../version.h
-genmove.o: genmove.c gnushogi.h ../version.h
-globals.o: globals.c gnushogi.h ../version.h
-eval.o: eval.c eval.h gnushogi.h ../version.h pattern.h
-init.o: init.c gnushogi.h ../version.h pattern.h
-main.o: main.c gnushogi.h ../version.h
-makepattern.o: pattern.c gnushogi.h pattern.h
-pattern.o: pattern.c gnushogi.h pattern.h pattern.inc
-rawdsp.o: rawdsp.c gnushogi.h ../version.h
-search.o: search.c gnushogi.h ../version.h
-sysdeps.o: sysdeps.c gnushogi.h ../version.h
-tcontrl.o: tcontrl.c gnushogi.h ../version.h
-util.o: util.c gnushogi.h ../version.h
-pat2inc.o: pat2inc.c pattern.h gnushogi.h
-sizetest.o: sizetest.c gnushogi.h eval.h
-gnushogi.bbk: gnushogi
+attacks.o: attacks.c gnushogi.h
+book.o: book.c gnushogi.h
+commondsp.o: commondsp.c gnushogi.h
+cursesdsp.o: cursesdsp.c gnushogi.h
+dspwrappers.o: dspwrappers.c gnushogi.h
+genmove.o: genmove.c gnushogi.h
+globals.o: globals.c gnushogi.h
+eval.o: eval.c eval.h gnushogi.h $(SRCDIR)/pattern.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 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
+$(PROGNAME).bbk: $(PROGNAME)