# # Makefile for GNU Shogi # # 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 # # This file is part of GNU Shogi. # # 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 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 # 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 GNU Shogi; see the file COPYING. # If not, see . # # # 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 INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ ROOT = @top_srcdir@ SRCDIR = @srcdir@ VPATH=$(SRCDIR) PROGNAME=@PROGNAME@ # Installation directory. prefix = @prefix@ # Where the binaries live. BINDIR = $(prefix)/bin # Where the language description, the book, and the # persistent hashtable live. LIBDIR = $(prefix)/lib/$(PROGNAME) # Where the man page goes. MANDIR = $(prefix)/man/man6 # Where the info file goes. INFODIR = $(prefix)/info # For _pow external LIBS = -lm # Display routines. LCURSES = @LIBCURSES@ # # C compiler and compiler options. # CC = @CC@ CWARNINGS = @WARNINGS@ CEXTRAFLAGS = @CEXTRAFLAGS@ 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)/$(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)/$(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. PATTERNFILE=$(ROOT)/misc/$(PROGNAME).pat PATTERN = -DPATTERNFILE=\"$(PATTERNFILE)\" all: @echo No target specified. # # Source files. # COMMONFILES = \ globals.o \ init-common.o \ pattern-common.o NOTCOMMONFILES = \ attacks.o \ book.o \ commondsp.o \ @CURSESDSP@ \ dspwrappers.o \ eval.o \ genmove.o \ init.o \ pattern.o \ rawdsp.o \ search.o \ tcontrl.o \ util.o GNUSHOGI_FILES = $(COMMONFILES) $(NOTCOMMONFILES) main.o PAT2INCFILES = $(COMMONFILES) makepattern.o pat2inc.o # # Primary targets. # $(PROGNAME): $(CC) $(CFLAGS) -o $(PROGNAME) $(GNUSHOGI_FILES) $(LDFLAGS) $(LCURSES) $(LIBS) pat2inc: $(CC) $(CFLAGS) -o pat2inc $(PAT2INCFILES) $(LDFLAGS) $(LCURSES) $(LIBS) sizetest: $(CC) $(CFLAGS) -o sizetest sizetest.o $(LDFLAGS) $(LIBS) profile: $(MAKE) -f Makefile.profile gnushogi # # Object files. # # Common files. attacks.o: attacks.c $(CC) $(CFLAGS) -c $< book.o: book.c $(CC) $(CFLAGS) $(TEXTBOOK) $(BINBOOK) -c $< commondsp.o: commondsp.c $(CC) $(CFLAGS) -c $< cursesdsp.o: cursesdsp.c $(CC) $(CFLAGS) -c $< dspwrappers.o: dspwrappers.c $(CC) $(CFLAGS) -c $< genmove.o: genmove.c $(CC) $(CFLAGS) -c $< globals.o: globals.c $(CC) $(CFLAGS) -c $< eval.o: eval.c $(CC) $(CFLAGS) -c $< 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 $< # To create "pattern.inc" with "pat2inc", the external # pattern textfile must be used. makepattern.o: makepattern.c $(CC) $(CFLAGS) $(PATTERN) -c $< pattern.o: pattern.c $(CC) $(CFLAGS) -c $< pattern-common.o: pattern-common.c $(CC) $(CFLAGS) -c $< rawdsp.o: rawdsp.c $(CC) $(CFLAGS) -c $< search.o: search.c $(CC) $(CFLAGS) -c $< tcontrl.o: tcontrl.c $(CC) $(CFLAGS) -c $< util.o: util.c $(CC) $(CFLAGS) -c $< # Files specific to particular targets. pat2inc.o: pat2inc.c $(CC) $(CFLAGS) -c $< sizetest.o: sizetest.c $(CC) $(CFLAGS) -c $< pattern.inc: $(PATTERNFILE) pat2inc ./pat2inc # # Other targets. # $(PROGNAME).bbk: @if [ -f ./$(PROGNAME).bbk ]; then rm ./$(PROGNAME).bbk; fi echo quit > test 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: $(PROGNAME) strip $(PROGNAME) $(INSTALL_PROGRAM) -d $(BINDIR) $(INSTALL_PROGRAM) -d $(LIBDIR) $(INSTALL_PROGRAM) -d $(MANDIR) $(INSTALL_PROGRAM) -d $(INFODIR) $(INSTALL_PROGRAM) $(PROGNAME) $(BINDIR) $(INSTALL_DATA) $(ROOT)/doc/gnushogi.6 $(MANDIR) $(INSTALL_DATA) $(ROOT)/doc/gnushogi.info* $(INFODIR) $(INSTALL_DATA) $(PROGNAME).bbk $(LIBDIR)/$(PROGNAME).bbk # # Cleanup. # CLEANFILES = *.o gnushogi gnuminishogi sizetest pat2inc CLp* *.bbk clean: @for file in $(CLEANFILES); do \ if [ -f $$file ]; then rm $$file; fi; \ done # # Dependencies. # $(PROGNAME): $(GNUSHOGI_FILES) pat2inc: $(PAT2INCFILES) sizetest: sizetest.o 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)