Upgrade to Bonanza 6.0
[bonanza.git] / Makefile.vs
index 6a966ba..f533d94 100644 (file)
@@ -1,24 +1,30 @@
 help:
        @echo try targets as:
        @echo   cl
+       @echo   cl-pgo
        @echo   icl
+       @echo   icl-pgo
 
 # Compile Options
 #
-# /DNDEBUG (DEBUG)  builds release (debug) version of Bonanza.
+# /DDEBUG (DEBUG)   builds release (debug) version of Bonanza.
 # /DMINIMUM         disables some auxiliary functions that are not necessary to
 #                   play a game, e.g., book composition and optimization of
 #                   evaluation function.
+# /DHAVE_SSE2       use SSE2 instructions for speed (N/A MS C/C++)
+# /DHAVE_SSE4       use SSE2 and SSE4.1 instructions for speed (N/A MS C/C++)
 # /DTLP             enables thread-level parallel search.
 # /DMPV             enables multi-PV search.
 # /DCSA_LAN         enables bonanza to talk CSA Shogi TCP/IP protcol.
-# /DMNJ_LAN         enables a client-mode of distributed computing.
-# /DDEKUNOBOU       enables dekunobou interface (avairable only for Windows).
-# /DCSASHOGI        builds an engine for CSA Shogi (avairable only for
-#                   Windows).
+# /DMNJ_LAN         enables client-mode of distributed computing.
+# /DUSI             enables USI mode (not implemented).
+# /DCSASHOGI        builds an engine for CSA Shogi (only Windows).
 # /DNO_LOGGING      suppresses dumping log files.
+# /DINANIWA_SHIFT   enables an Inaniwa strategy detection.
+# /DDFPN            build the DFPN worker of mate-problems server.
+# /DDFPN_CLIENT     enables the client-mode of mate-problem server.
 
-FLAG = /DNDEBUG /DMINIMUM /DTLP /DMPV /DCSASHOGI /DNO_LOGGING
+FLAG = /DNDEBUG /DMINIMUM /DTLP /DHAVE_SSE2 /DINANIWA_SHIFT /DCSASHOGI /DNO_LOGGING
 
 OBJS = data.obj main.obj io.obj proce.obj ini.obj utility.obj attack.obj\
        gencap.obj gennocap.obj gendrop.obj genevasn.obj mate3.obj genchk.obj\
@@ -26,22 +32,66 @@ OBJS = data.obj main.obj io.obj proce.obj ini.obj utility.obj attack.obj\
        next.obj search.obj searchr.obj book.obj iterate.obj quiesrch.obj\
        swap.obj evaluate.obj root.obj hash.obj mate1ply.obj bitop.obj\
        rand.obj learn1.obj learn2.obj evaldiff.obj problem.obj ponder.obj\
-       thread.obj dek.obj sckt.obj debug.obj phash.obj
+       thread.obj sckt.obj debug.obj phash.obj dfpn.obj dfpnhash.obj
 
 cl:
        $(MAKE) -f Makefile.vs bonanza.exe CC="cl" LD="link"\
-               CFLAGS="$(FLAG) /MT /W4 /nologo /O2 /Ob2 /Gr /GS- /GL"\
+               CFLAGS="$(FLAG) /MT /W4 /nologo /O2 /Ob2 /GS- /GL"\
                LDFLAGS="/NOLOGO /out:bonanza.exe /LTCG"
 
+cl-pgo:
+       $(MAKE) -f Makefile.vs clean
+       $(MAKE) -f Makefile.vs bonanza.exe CC="cl" LD="link"\
+               CFLAGS="$(FLAG) /MT /W4 /nologo /O2 /Ob2 /GS- /GL"\
+               LDFLAGS="/NOLOGO /out:bonanza.exe /LTCG:PGI"
+       $(MAKE) -f Makefile.vs pgo-run
+       del bonanza.exe
+       $(MAKE) -f Makefile.vs bonanza.exe LD="link"\
+               LDFLAGS="/NOLOGO /out:bonanza.exe /LTCG:PGO"
+
 icl:
        $(MAKE) -f Makefile.vs bonanza.exe CC="icl" LD="icl"\
-               CFLAGS="/nologo $(FLAG) /Wall /O2 /Qipo /Gr"\
+               CFLAGS="/nologo $(FLAG) /Wall /O2 /Qipo"\
                LDFLAGS="/nologo /Febonanza.exe"
 
+icl-pgo:
+       $(MAKE) -f Makefile.vs clean
+       $(MAKE) -f Makefile.vs bonanza.exe CC="icl" LD="icl"\
+               CFLAGS="/nologo $(FLAG) /Wall /O2 /Qprof-gen"\
+               LDFLAGS="/nologo /Febonanza.exe /Qprof-gen"
+       $(MAKE) -f Makefile.vs pgo-run
+       del *.obj bonanza.exe
+       $(MAKE) -f Makefile.vs  bonanza.exe CC="icl" LD="icl"\
+               CFLAGS="/nologo $(FLAG) /Wall /O2 /Qipo /Qprof-use"\
+               LDFLAGS="/nologo /Febonanza.exe /Qprof-use"
+
+pgo-run:
+#      echo learn no-ini 32 32 1 2 2  >> runprof
+       echo limit time extendable     >> runprof
+       echo limit time 0 1            >> runprof
+       echo tlp num 2                 >> runprof
+       echo peek off                  >> runprof
+       echo move 77                   >> runprof
+       echo new                       >> runprof
+       echo move 77                   >> runprof
+       echo new                       >> runprof
+       echo move 77                   >> runprof
+       echo new                       >> runprof
+       echo move 77                   >> runprof
+       echo new                       >> runprof
+       echo move 77                   >> runprof
+       echo new                       >> runprof
+       echo move 77                   >> runprof
+       echo new                       >> runprof
+       echo move 77                   >> runprof
+       echo quit                      >> runprof
+       bonanza.exe csa_shogi           < runprof
+
 bonanza.exe : $(OBJS) bonanza.res
        $(LD) $(LDFLAGS) $(OBJS) bonanza.res User32.lib Ws2_32.lib
 
-$(OBJS)  : shogi.h param.h
+$(OBJS)  : shogi.h param.h bitop.h
+dfpn.obj dfpnhash.obj: dfpn.h
 
 bonanza.res : bonanza.rc bonanza.ico
        rc /fobonanza.res bonanza.rc
@@ -50,6 +100,12 @@ bonanza.res : bonanza.rc bonanza.ico
        $(CC) $(CFLAGS) /c $*.c
 
 clean :
+       del /q runprof
+        del /q *.pdb
+        del /q *.ilk
+        del /q *.pgd
+        del /q *.pgc
+        del /q *.dyn
        del /q *.obj
        del /q *.res
        del /q bonanza.exe