Make some Bonanza commands available as CECP option
[bonanza.git] / Makefile
1 OBJS =data.o main.o io.o proce.o utility.o ini.o attack.o book.o makemove.o \
2       unmake.o time.o csa.o valid.o bitop.o iterate.o searchr.o search.o \
3       quiesrch.o evaluate.o swap.o  hash.o root.o next.o movgenex.o \
4       genevasn.o gencap.o gennocap.o gendrop.o mate1ply.o rand.o learn1.o \
5       learn2.o evaldiff.o problem.o ponder.o thread.o sckt.o debug.o mate3.o \
6       genchk.o phash.o dfpn.o dfpnhash.o
7
8 # Compile Options
9 #
10 # -DNDEBUG (DEBUG)   builds release (debug) version of Bonanza.
11 # -DMINIMUM          disables some auxiliary functions that are not necessary
12 #                    to play a game, e.g., book composition and optimization
13 #                    of evaluation function.
14 # -DHAVE_SSE2 -msse2 use SSE2 instructions for speed
15 # -DHAVE_SSE4 -msse4.1 use SSE2 and SSE4.1 instructions for speed
16 # -DTLP              enables thread-level parallel search.
17 # -DMPV              enables multi-PV search.
18 # -DCSA_LAN          enables bonanza to talk CSA Shogi TCP/IP protcol.
19 # -DMNJ_LAN          enables a client-mode of cluster searches.
20 # -DNO_LOGGING       suppresses dumping log files.
21 # -DUSI              enables USI mode (not implemented).
22 # -DXBOARD           enables WinBoard/XBoard mode (implemented!).
23 # -DINANIWA_SHIFT    enables an Inaniwa strategy detection.
24 # -DDFPN             build the DFPN worker of mate-problems server.
25 # -DDFPN_CLIENT      enables the client-mode of mate-problem server.
26
27 OPT =-DNDEBUG -DMINIMUM -DTLP -DINANIWA_SHIFT -DXBOARD -DMPV -DNO_LOGGING
28
29 help:
30         @echo "try targets as:"
31         @echo
32         @echo "  gcc"
33         @echo "  gcc-pg"
34         @echo "  gcc-pgo"
35         @echo "  icc"
36         @echo "  icc-pgo"
37         @echo "  icc-ampl"
38         @echo "  cygwin"
39
40 cygwin:
41         $(MAKE) CC=gcc CFLAGS='-std=gnu99 -O2 -Wall $(OPT) -mno-cygwin' LDFLAG1='-lm -lpthread -lwsock32 -mno-cygwin' ICONRES='bres.o' bonanza
42
43 gcc:
44         $(MAKE) CC=gcc CFLAGS='-std=gnu99 -O2 -Wall $(OPT)' LDFLAG1='-lm -lpthread' bonanza
45
46 gcc-pgo:
47         $(MAKE) clean
48         gcc -std=gnu99 -O2 -Wall $(OPT) -fprofile-generate -o bonanza -lm -lpthread $(OBJS:.o=.c)
49         $(MAKE) run-prof
50         gcc -std=gnu99 -O2 -Wall $(OPT) -fprofile-use -o bonanza -lm -lpthread $(OBJS:.o=.c)
51
52 icc-ampl:
53         $(MAKE) CC=icc CFLAGS='-w2 $(OPT) -std=gnu99 -g -O2 -fno-inline-functions' LDFLAG1='-pthread -g' bonanza
54
55 icc:
56         $(MAKE) CC=icc CFLAGS='-w2 $(OPT) -std=gnu99 -O2 -ipo' LDFLAG1='-static -ipo -pthread' bonanza
57
58 icc-pgo:
59         $(MAKE) clean
60         mkdir profdir
61         $(MAKE) CC=icc CFLAGS='-w2 $(OPT) -std=gnu99 -O2 -prof_gen -prof_dir ./profdir' LDFLAG1='-static -pthread' bonanza
62         $(MAKE) run-prof
63         touch *.[ch]
64         $(MAKE) CC=icc CFLAGS='-w2 $(OPT) -std=gnu99 -O2 -ipo -prof_use -prof_dir ./profdir' LDFLAG1='-static -ipo -pthread' bonanza
65
66 bonanza : $(OBJS)
67         $(CC) $(LDFLAG1) -o bonanza $(OBJS) $(ICONRES) $(LDFLAG2)
68
69 $(OBJS) : shogi.h param.h bitop.h
70 dfpn.o dfpnhash.o: dfpn.h
71
72 .c.o :
73         $(CC) -c $(CFLAGS) $*.c
74
75 clean :
76         rm -f *.o *.il *.da *.gcda *.gcno *.bb *.bbg *.dyn
77         rm -f  bonanza gmon.out runprof
78         rm -fr profdir
79
80 run-prof:
81         @if [ ! -d log ]; then mkdir log; fi
82         @echo "peek off"               > runprof
83 #       @echo "dfpn hash 22"          >> runprof
84 #       @echo "problem mate"          >> runprof
85 #       @echo "learn no-ini 32 32 1 2 2"   >> runprof
86         @echo "limit time extendable" >> runprof
87         @echo "limit time 0 1"        >> runprof
88         @echo "tlp num 2"             >> runprof
89         @echo "move 77"               >> runprof
90         @echo "new"                   >> runprof
91         @echo "move 77"               >> runprof
92         @echo "new"                   >> runprof
93         @echo "move 77"               >> runprof
94         @echo "new"                   >> runprof
95         @echo "move 77"               >> runprof
96         @echo "new"                   >> runprof
97         @echo "move 77"               >> runprof
98         @echo "new"                   >> runprof
99         @echo "move 77"               >> runprof
100         @echo "new"                   >> runprof
101         @echo "move 77"               >> runprof
102         @echo "quit"                  >> runprof
103         @./bonanza < runprof