1CC=c99
2CFLAGS=$(RLCFLAGS) -O3 -DNDEBUG -g
3
4# for libedit support on FreeBSD
5RLCFLAGS=-I/usr/include/edit
6RLLDFLAGS=
7RLLDLIBS=-ledit
8
9# for readline support
10#RLCFLAGS=
11#RLLDFLAGS=
12#RLLDLIBS=-lreadline -lhistory
13
14# number of threads used during table base generation
15NPROC=2
16
17# customize this if your system uses a different path structure
18PREFIX=/usr/local
19TBDIR=$(PREFIX)/share/dobutsu
20BINDIR=$(PREFIX)/bin
21#BINDIR=$(PREFIX)/games
22MANDIR=$(PREFIX)/share/man/man6
23LIBEXECDIR=$(PREFIX)/libexec
24#LIBEXECDIR=$(PREFIX)/lib
25
26# prefix applied to installation directory during install step
27#STAGING=
28
29# replace with dobutsu.tb if you want to waste more space for a faster
30# program start
31# TBFILE=dobutsu.tb
32TBFILE=dobutsu.tb.xz
33
34# flags applied when compressing TBFILE.
35# dictionary size must be harmonized with code in tbaccess.c
36XZFLAGS=-4 -e -C crc32
37
38GENTBOBJ=gentb.o tbgenerate.o poscode.o unmoves.o moves.o
39VALIDATETBOBJ=$(XZOBJ) validatetb.o tbvalidate.o tbaccess.o notation.o poscode.o validation.o moves.o
40DOBUTSUOBJ=$(XZOBJ) dobutsu.o position.o ai.o notation.o tbaccess.o validation.o poscode.o moves.o
41XZOBJ=xz/xz_crc32.o xz/xz_dec_lzma2.o xz/xz_dec_stream.o
42
43all: gentb validatetb dobutsu dobutsu-stub
44
45gentb: $(GENTBOBJ)
46	$(CC) $(CFLAGS) $(LDFLAGS) -o gentb $(GENTBOBJ) $(LDLIBS) -lpthread
47
48validatetb: $(VALIDATETBOBJ)
49	$(CC) $(CFLAGS) $(LDFLAGS) -o validatetb $(VALIDATETBOBJ) $(LDLIBS)
50
51dobutsu: $(DOBUTSUOBJ)
52	$(CC) $(CFLAGS) $(LDFLAGS) $(RLLDFLAGS) -o dobutsu $(DOBUTSUOBJ) $(LDLIBS) $(RLLDLIBS) -lm
53
54dobutsu-stub:
55	echo '#!/bin/sh' >dobutsu-stub
56	echo >>dobutsu-stub
57	echo '[ -z "$$DOBUTSU_TABLEBASE" ] && DOBUTSU_TABLEBASE="$(TBDIR)/$(TBFILE)"' >>dobutsu-stub
58	echo 'export DOBUTSU_TABLEBASE' >>dobutsu-stub
59	echo 'exec "$(LIBEXECDIR)/dobutsu" "$$@"' >>dobutsu-stub
60	chmod a+x dobutsu-stub
61
62dobutsu.tb.xz: gentb
63	rm -f dobutsu.tb.xz
64	./gentb -j $(NPROC) dobutsu.tb
65	xz $(XZFLAGS) dobutsu.tb
66
67dobutsu.tb: gentb
68	./gentb -j $(NPROC) dobutsu.tb
69
70clean:
71	rm -f *.o xz/*.o gentb validatetb dobutsu dobutsu-stub
72
73distclean: clean
74	rm -f dobutsu.tb dobutsu.tb.xz dobutsu.6.gz
75
76install: dobutsu dobutsu-stub $(TBFILE)
77	mkdir -p $(STAGING)$(TBDIR)
78	cp dobutsu.tb.xz $(STAGING)$(TBDIR)/$(TBFILE)
79	mkdir -p $(STAGING)$(LIBEXECDIR)
80	cp dobutsu $(STAGING)$(LIBEXECDIR)/dobutsu
81	mkdir -p $(STAGING)$(BINDIR)
82	cp dobutsu-stub $(STAGING)$(BINDIR)/dobutsu
83	mkdir -p $(STAGING)$(MANDIR)
84	cp dobutsu.6 $(STAGING)$(MANDIR)/dobutsu.6
85
86.PHONY: clean all distclean install
87
88.POSIX:
89