Do not attempt to outguess system headers by (re)defining errno.
[gnushogi.git] / gnushogi / Makefile.in
1 #
2 # Makefile for GNU Shogi
3 #
4 # Copyright (c) 2012 Free Software Foundation
5 #
6 # GNU Shogi is based on GNU Chess
7 #
8 # This file is part of GNU Shogi.
9 #
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.
14 #
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.
19 #
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/>.
23 #
24
25 #
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.
29 #
30
31 SHELL           = /bin/sh
32 VERS            = 1.3
33 INSTALL         = @INSTALL@
34 INSTALL_DATA    = @INSTALL_DATA@
35 INSTALL_PROGRAM = @INSTALL_PROGRAM@
36 ROOT            = ..
37
38
39 # Installation directory.
40 prefix  =   @prefix@
41
42 # Where the binaries live.
43 BINDIR  =   $(prefix)/bin
44
45 # Where the language description, the book, and the 
46 # persistent hashtable live.
47 LIBDIR  =   $(prefix)/lib/gnushogi
48
49 # Where the man page goes.
50 MANDIR  = $(prefix)/man/man6
51
52 # Where the info file goes.
53 INFODIR = $(prefix)/info
54
55 # For _pow external 
56 LIBS    = -lm
57
58 # Display routines.
59 LCURSES =   -lcurses -ltermcap
60
61
62 #
63 # C compiler and compiler options.
64 #
65
66 CC          = @CC@
67 CWARNINGS   = @WARNINGS@
68 CEXTRAFLAGS = @CEXTRAFLAGS@
69 CFLAGS      = @CFLAGS@ $(CEXTRAFLAGS) $(CWARNINGS) -I..
70
71
72 # The hashfile is a record of positions seen. It is used by
73 # GNU Shogi to avoid making the same mistakes, a form of learning.
74
75 HASH       = -DHASHFILE=\"$(LIBDIR)/gnushogi.hsh\"
76
77
78 # The "book" is a record of the first few moves, for playing good
79 # moves easily and quickly, saving time, and irritating the human
80 # opponent.
81
82 TEXTBOOK   = -DBOOK=\"$(LIBDIR)/gnushogi.tbk\"
83 BINBOOK    = -DBINBOOK=\"$(LIBDIR)/gnushogi.bbk\"
84
85
86 # The language file describes capabilities of the program.  It may
87 # be useful for customizing gnushogi for non-English-speaking players.
88
89 LANGF      = -DLANGFILE=\"../misc/gnushogi.lng\"
90
91
92 # The pattern file contains various opening patterns. The program tries to
93 # obtain such a pattern in the opening stage. Sequences of opening
94 # patterns may be described in order to support the correct order of moves.
95
96 PATTERN    = -DPATTERNFILE=\"../misc/gnushogi.pat\"
97
98
99 all:
100         @echo No target specified.
101
102
103 #
104 # Source files.
105 #
106
107 COMMONFILES = \
108                 attacks.o      \
109                 book.o         \
110                 commondsp.o    \
111                 cursesdsp.o    \
112                 dspwrappers.o  \
113                 eval.o         \
114                 genmove.o      \
115                 globals.o      \
116                 init.o         \
117                 pattern.o      \
118                 rawdsp.o       \
119                 search.o       \
120                 sysdeps.o      \
121                 tcontrl.o      \
122                 util.o
123
124 GNUSHOGI_FILES  = $(COMMONFILES) main.o      
125
126
127 PAT2INCFILES    = $(COMMONFILES) makepattern.o pat2inc.o
128
129
130 #
131 # Primary targets.
132 #
133
134 gnushogi:
135         $(CC) $(CFLAGS) -o gnushogi $(GNUSHOGI_FILES) $(LCURSES) $(LIBS)
136
137 pat2inc:
138         $(CC) $(CFLAGS) -o pat2inc $(PAT2INCFILES) $(LCURSES) $(LIBS)
139
140 sizetest:
141         $(CC) $(CFLAGS) -o sizetest sizetest.o $(LIBS)
142
143 profile:
144         $(MAKE) -f Makefile.profile gnushogi
145
146 #
147 # Object files.
148 #
149
150 # Common files.
151
152 attacks.o:
153         $(CC) $(CFLAGS) -c attacks.c
154
155 book.o:
156         $(CC) $(CFLAGS) $(TEXTBOOK) $(BINBOOK) -c book.c 
157
158 commondsp.o:
159         $(CC) $(CFLAGS) -c commondsp.c 
160
161 cursesdsp.o:
162         $(CC) $(CFLAGS) -c cursesdsp.c
163
164 dspwrappers.o:
165         $(CC) $(CFLAGS) -c dspwrappers.c
166
167 genmove.o:
168         $(CC) $(CFLAGS) -c genmove.c
169
170 globals.o:
171         $(CC) $(CFLAGS) -c globals.c
172
173 eval.o:
174         $(CC) $(CFLAGS) -c eval.c
175
176 init.o:
177         $(CC)  $(CFLAGS) $(LANGF) -c init.c
178
179 main.o:
180         $(CC) $(CFLAGS) $(BINBOOK) -c main.c
181
182 # To create "pattern.inc" with "pat2inc", the external
183 # pattern textfile must be used.
184
185 makepattern.o:
186         $(CC) $(CFLAGS) $(PATTERN) -c makepattern.c
187
188 pattern.o:
189         $(CC)  $(CFLAGS) -c pattern.c
190
191 rawdsp.o:
192         $(CC) $(CFLAGS) -c rawdsp.c 
193
194 search.o:
195         $(CC) $(CFLAGS) -c search.c
196
197 sysdeps.o:
198         $(CC) $(CFLAGS) -c sysdeps.c 
199
200 tcontrl.o:
201         $(CC) $(CFLAGS) -c tcontrl.c
202
203 util.o:
204         $(CC) $(CFLAGS) -c util.c
205
206
207 # Files specific to particular targets.
208
209 pat2inc.o:
210         $(CC) $(CFLAGS) $(LANGF) $(BINBOOK) $(PATTERN) -c pat2inc.c
211
212 sizetest.o:
213         $(CC) $(CFLAGS) -c sizetest.c
214
215
216 #
217 # Other targets.
218 #
219
220 gnushogi.bbk: 
221         @if [ -f ./gnushogi.bbk ]; then rm ./gnushogi.bbk; fi
222         echo quit > test
223         cat ../misc/gnushogi.tbk > _tmp_t
224         cat test | ./gnushogi -R -b _tmp_t -B ./gnushogi.bbk -S 8000 -P 40 3 0
225         rm test _tmp_t
226         @echo
227
228
229 #
230 # Installation.
231 #
232
233 install: gnushogi
234         strip gnushogi
235         $(INSTALL_PROGRAM) -d $(BINDIR)
236         $(INSTALL_PROGRAM) -d $(LIBDIR)
237         $(INSTALL_PROGRAM) -d $(MANDIR)
238         $(INSTALL_PROGRAM) -d $(INFODIR)
239         $(INSTALL_PROGRAM) gnushogi $(BINDIR)
240         $(INSTALL_DATA)    $(ROOT)/doc/gnushogi.6     $(MANDIR)
241         $(INSTALL_DATA)    $(ROOT)/doc/gnushogi.info* $(INFODIR)
242         $(INSTALL_DATA)    gnushogi.bbk $(LIBDIR)/gnushogi.bbk
243
244
245 #
246 # Cleanup.
247 #
248
249 CLEANFILES = *.o gnushogi sizetest pat2inc CLp* *.bbk
250
251 clean: 
252         @for file in $(CLEANFILES); do \
253         if [ -f $$file ]; then rm $$file; fi; \
254         done
255
256
257 #
258 # Dependencies.
259 #
260
261 gnushogi:   $(GNUSHOGI_FILES)
262 pat2inc:       $(PAT2INCFILES)
263 sizetest:      sizetest.o 
264 attacks.o:     attacks.c gnushogi.h ../version.h
265 book.o:        book.c gnushogi.h ../version.h 
266 commondsp.o:   commondsp.c gnushogi.h ../version.h
267 cursesdsp.o:   cursesdsp.c gnushogi.h ../version.h
268 dspwrappers.o: dspwrappers.c gnushogi.h ../version.h
269 genmove.o:     genmove.c gnushogi.h ../version.h
270 globals.o:     globals.c gnushogi.h ../version.h
271 eval.o:        eval.c eval.h gnushogi.h ../version.h pattern.h
272 init.o:        init.c gnushogi.h ../version.h pattern.h
273 main.o:        main.c gnushogi.h ../version.h
274 makepattern.o: pattern.c gnushogi.h pattern.h
275 pattern.o:     pattern.c gnushogi.h pattern.h pattern.inc
276 rawdsp.o:      rawdsp.c gnushogi.h ../version.h
277 search.o:      search.c gnushogi.h ../version.h 
278 sysdeps.o:     sysdeps.c gnushogi.h ../version.h
279 tcontrl.o:     tcontrl.c gnushogi.h ../version.h 
280 util.o:        util.c gnushogi.h ../version.h
281 pat2inc.o:     pat2inc.c pattern.h gnushogi.h 
282 sizetest.o:    sizetest.c gnushogi.h eval.h
283 gnushogi.bbk:  gnushogi
284