2 # Makefile for GNU Shogi
4 # Copyright (c) 2012 Free Software Foundation
6 # GNU Shogi is based on GNU Chess
8 # This file is part of GNU Shogi.
10 # GNU Shogi is free software; you can redistribute it and/or modify
11 # it under the terms of the GNU General Public License as published by
12 # the Free Software Foundation; either ../version 3 of the License, or (at your option)
13 # any later ../version.
15 # GNU Shogi is distributed in the hope that it will be useful,
16 # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 # GNU General Public License for more details.
20 # You should have received a copy of the GNU General Public License
21 # along with GNU Shogi; see the file COPYING.
22 # If not, see <http://www.gnu.org/licenses/>.
26 # gnushogi is GNU shogi, for raw text, curses, or x output.
27 # pat2inc converts pattern textfile to "pattern.inc" include file.
28 # sizetest shows the memory usage of the main data structures.
34 INSTALL_DATA = @INSTALL_DATA@
35 INSTALL_PROGRAM = @INSTALL_PROGRAM@
41 # Installation directory.
44 # Where the binaries live.
45 BINDIR = $(prefix)/bin
47 # Where the language description, the book, and the
48 # persistent hashtable live.
49 LIBDIR = $(prefix)/lib/gnushogi
51 # Where the man page goes.
52 MANDIR = $(prefix)/man/man6
54 # Where the info file goes.
55 INFODIR = $(prefix)/info
61 LCURSES = -lcurses -ltermcap
65 # C compiler and compiler options.
69 CWARNINGS = @WARNINGS@
70 CEXTRAFLAGS = @CEXTRAFLAGS@
71 CFLAGS = @CFLAGS@ $(CEXTRAFLAGS) $(CWARNINGS) -I$(ROOT) -I@top_builddir@
74 # The hashfile is a record of positions seen. It is used by
75 # GNU Shogi to avoid making the same mistakes, a form of learning.
77 HASH = -DHASHFILE=\"$(LIBDIR)/gnushogi.hsh\"
80 # The "book" is a record of the first few moves, for playing good
81 # moves easily and quickly, saving time, and irritating the human
84 TEXTBOOK = -DBOOK=\"$(LIBDIR)/gnushogi.tbk\"
85 BINBOOK = -DBINBOOK=\"$(LIBDIR)/gnushogi.bbk\"
88 # The language file describes capabilities of the program. It may
89 # be useful for customizing gnushogi for non-English-speaking players.
91 LANGF = -DLANGFILE=\"../misc/gnushogi.lng\"
94 # The pattern file contains various opening patterns. The program tries to
95 # obtain such a pattern in the opening stage. Sequences of opening
96 # patterns may be described in order to support the correct order of moves.
98 PATTERN = -DPATTERNFILE=\"../misc/gnushogi.pat\"
102 @echo No target specified.
126 GNUSHOGI_FILES = $(COMMONFILES) main.o
129 PAT2INCFILES = $(COMMONFILES) makepattern.o pat2inc.o
137 $(CC) $(CFLAGS) -o gnushogi $(GNUSHOGI_FILES) $(LCURSES) $(LIBS)
140 $(CC) $(CFLAGS) -o pat2inc $(PAT2INCFILES) $(LCURSES) $(LIBS)
143 $(CC) $(CFLAGS) -o sizetest sizetest.o $(LIBS)
146 $(MAKE) -f Makefile.profile gnushogi
155 $(CC) $(CFLAGS) -c $<
158 $(CC) $(CFLAGS) $(TEXTBOOK) $(BINBOOK) -c $<
160 commondsp.o: commondsp.c
161 $(CC) $(CFLAGS) -c $<
163 cursesdsp.o: cursesdsp.c
164 $(CC) $(CFLAGS) -c $<
166 dspwrappers.o: dspwrappers.c
167 $(CC) $(CFLAGS) -c $<
170 $(CC) $(CFLAGS) -c $<
173 $(CC) $(CFLAGS) -c $<
176 $(CC) $(CFLAGS) -c $<
179 $(CC) $(CFLAGS) $(LANGF) -c $<
182 $(CC) $(CFLAGS) $(BINBOOK) -c $<
184 # To create "pattern.inc" with "pat2inc", the external
185 # pattern textfile must be used.
187 makepattern.o: makepattern.c
188 $(CC) $(CFLAGS) $(PATTERN) -c $<
191 $(CC) $(CFLAGS) -c $<
194 $(CC) $(CFLAGS) -c $<
197 $(CC) $(CFLAGS) -c $<
200 $(CC) $(CFLAGS) -c $<
203 $(CC) $(CFLAGS) -c $<
206 $(CC) $(CFLAGS) -c $<
209 # Files specific to particular targets.
212 $(CC) $(CFLAGS) $(LANGF) $(BINBOOK) $(PATTERN) -c $<
214 sizetest.o: sizetest.c
215 $(CC) $(CFLAGS) -c $<
223 @if [ -f ./gnushogi.bbk ]; then rm ./gnushogi.bbk; fi
225 cat $(ROOT)/misc/gnushogi.tbk > _tmp_t
226 cat test | ./gnushogi -R -b _tmp_t -B ./gnushogi.bbk -S 8000 -P 40 3 0
237 $(INSTALL_PROGRAM) -d $(BINDIR)
238 $(INSTALL_PROGRAM) -d $(LIBDIR)
239 $(INSTALL_PROGRAM) -d $(MANDIR)
240 $(INSTALL_PROGRAM) -d $(INFODIR)
241 $(INSTALL_PROGRAM) gnushogi $(BINDIR)
242 $(INSTALL_DATA) $(ROOT)/doc/gnushogi.6 $(MANDIR)
243 $(INSTALL_DATA) $(ROOT)/doc/gnushogi.info* $(INFODIR)
244 $(INSTALL_DATA) gnushogi.bbk $(LIBDIR)/gnushogi.bbk
251 CLEANFILES = *.o gnushogi sizetest pat2inc CLp* *.bbk
254 @for file in $(CLEANFILES); do \
255 if [ -f $$file ]; then rm $$file; fi; \
263 gnushogi: $(GNUSHOGI_FILES)
264 pat2inc: $(PAT2INCFILES)
266 attacks.o: attacks.c gnushogi.h $(ROOT)/version.h
267 book.o: book.c gnushogi.h $(ROOT)/version.h
268 commondsp.o: commondsp.c gnushogi.h $(ROOT)/version.h
269 cursesdsp.o: cursesdsp.c gnushogi.h $(ROOT)/version.h
270 dspwrappers.o: dspwrappers.c gnushogi.h $(ROOT)/version.h
271 genmove.o: genmove.c gnushogi.h $(ROOT)/version.h
272 globals.o: globals.c gnushogi.h $(ROOT)/version.h
273 eval.o: eval.c eval.h gnushogi.h $(ROOT)/version.h $(SRCDIR)/pattern.h
274 init.o: init.c gnushogi.h $(ROOT)/version.h $(SRCDIR)/pattern.h
275 main.o: main.c gnushogi.h $(ROOT)/version.h
276 makepattern.o: pattern.c gnushogi.h $(SRCDIR)/pattern.h
277 pattern.o: pattern.c gnushogi.h $(SRCDIR)/pattern.h $(SRCDIR)/pattern.inc
278 rawdsp.o: rawdsp.c gnushogi.h $(ROOT)/version.h
279 search.o: search.c gnushogi.h $(ROOT)/version.h
280 sysdeps.o: sysdeps.c gnushogi.h $(ROOT)/version.h
281 tcontrl.o: tcontrl.c gnushogi.h $(ROOT)/version.h
282 util.o: util.c gnushogi.h $(ROOT)/version.h
283 pat2inc.o: pat2inc.c $(SRCDIR)/pattern.h $(SRCDIR)/gnushogi.h
284 sizetest.o: sizetest.c $(SRCDIR)/gnushogi.h $(SRCDIR)/eval.h
285 gnushogi.bbk: gnushogi