Author: Mike Byrne
Date: 09:53:05 02/20/06
Go up one level in this thread
On February 20, 2006 at 10:47:22, Juan I. Barbosa wrote: >On February 20, 2006 at 10:06:26, Mike Byrne wrote: > >>On February 20, 2006 at 07:38:31, Juan I. Barbosa wrote: >> >>I have found the easiest way to compile Crafty is to invoke Nmake from the >>commnad line ( I use bat files coded with these instrutions): >> >>Nmake /A -f makefile.nt >> >>Makefile.nt ( Profile guided optimizations for Win64) >>========================================================= >># Makefile version 3 for Crafty 16.15 >># Crafty v16.x makefile for Windows NT Intel >># Written by Jason Deines (jdeines@mindspring.com) April 1998 >># Version modified by Gregor Overney (gregor_overney@hp.com) Nov 1998 >># Version modified by Peter Karrer (pkarrer@active.ch) Dec 1998 >># Version modified by Gregor Overney (gregor_overney@hp.com) Sep 1999 >># >># This makefile is designed to be used from the command line with >># Microsoft's nmake. Either rename this # file to "Makefile" or name it >># explicitly when invoking nmake: >># nmake -f Makefile.nt >># >># The makefile is set up for Microsoft Visual C++ 6.0 Intel. >># >># The default target produces a file called "wcrafty.exe". This compiles >># all the .c files separately, producing individual .obj files, which are >># then linked to create the executable. You can also specify a target >># called "wcraftyx". This creates a file called "wcraftyx.exe" by combining >># all of the .c files into two large .c files before the compile step. >># The large files generally provides more optimization possibilities for >># the compiler, and usually results in slightly faster code. To try it, >># type "nmake wcraftyx" instead of just "nmake". The .c files x1.c and x2.c >># will be created if needed and built automatically. >> >> >># Build target is defined here. >>TARGET = NT_i386 >> >># Command-line compiler and linker invocation commands: >>CC = cl >>LD = link >> >># Base compiler flags needed for build: >>BFLAGS = /D_CONSOLE /DWIN64 >>#BFLAGS = /D_CONSOLE /DWIN32 >> >># Compiler flags: >># /O2 optimize for speed >># /Oa assume no aliasing (no good for VC 6 without SP3) >># /Gr fastcall calling convention >># /G5 target Pentium (but will run on all x86 architectures) >># /G6 target Pentium Pro (but will run on all x86 architectures) >># /Ob2 inline function calls if suitable >># >># For debugging use these flags instead: >># CFLAGS = /Od /Zi >># LDFLAGS = /DEBUG /DEBUGTYPE:CV >># >> >>CFLAGS = /GL /O2 /Ox /Ot /Gr /Ob2 /w >> >># Linker flags, normally not needed except for debug builds: >>#LDFLAGS = >>LDFLAGS =/ltcg:pgi /pgd:wcrafty.pgd >> >>#LDFLAGS = /DEBUG /DEBUGTYPE:CV >> >># See the default crafty makefile for a description of the options below. >># With VC++, defines like COMPACT_ATTACKS, etc, makes the code slower, so >># those # options are disabled by default. FAST is normally not defined >># so that hash statistics are reported -- for the fastest possible >># executable, define FAST below. for 6 piece EGTB support, add /DEGTB6. >> >># For an SMP build use/add the following build options. >># NT_INTEREX is defined if you want to use the built-in InterlockedExchange() >># function for thread resource locking, instead of the inline asm routine. >># (This shouldn't be needed, at least on Intel.) >># /MT is a compiler flag needed for multithreaded builds. >> >>#COPTS = /MT /DSMP /DCPUS=4 /DNT_INTEREX /DNUMA /DFUTILITY /D_M_AMD64 >>COPTS = /MT /DSMP /DCPUS=2 /DFAST /D_M_AMD64 /DFUTILITY >> >> >># If you are using any external assembler routines, put the name of the >># object code file(s) here. Any such files will need to be generated >># separately -- there is no assembler step defined in the makefile. >> >>asmobjs = >> >># To enable assembly optimizations in vcinline.h, use >>/DVC_INLINE_ASM.DINLINE_AMD >> >>#AOPTS = /DVC_INLINE_ASM /DUSE_ASSEMBLY >> >> >>ALLOPTS = $(COPTS) $(AOPTS) /D$(TARGET) >> >>cobjs = analyze.obj annotate.obj attacks.obj bench.obj book.obj boolean.obj \ >> data.obj drawn.obj edit.obj epd.obj epdglue.obj evaluate.obj \ >> evtest.obj hash.obj history.obj init.obj input.obj interupt.obj \ >> iterate.obj learn.obj make.obj main.obj movgen.obj next.obj \ >> nexte.obj nextr.obj option.obj output.obj ponder.obj \ >> preeval.obj quiesce.obj repeat.obj resign.obj root.obj search.obj \ >> searchmp.obj searchr.obj setboard.obj swap.obj test.obj thread.obj \ >> time.obj unmake.obj utility.obj valid.obj validate.obj probe.obj >> >>xcobjs = x1.obj x2.obj >> >>allobjs = $(cobjs) $(asmobjs) egtb.obj >> >>xallobjs = $(xcobjs) $(asmobjs) egtb.obj >> >>includes = chess.h data.h epd.h epddefs.h epdglue.h vcinline.h >> >>wcrafty : $(allobjs) >> $(LD) $(LDFLAGS) $(allobjs) /out:wcrafty.exe >> >>wcraftyx : $(xallobjs) >> $(LD) $(LDFLAGS) $(xallobjs) /out:wcraftyx.exe >> >>$(cobjs) : $(includes) >> >>.c.obj : >> $(CC) $(BFLAGS) $(CFLAGS) $(ALLOPTS) /c $*.c >> >>.cpp.obj : >> $(CC) $(BFLAGS) $(CFLAGS) $(ALLOPTS) /Zm500 /c $*.cpp >> >>$(xcobjs): $(includes) >> >>x1.c: searchr.c search.c repeat.c next.c nextr.c history.c nexte.c \ >> quiesce.c evaluate.c movgen.c make.c unmake.c attacks.c swap.c \ >> boolean.c utility.c valid.c searchmp.c thread.c >> copy /b boolean.c+swap.c+attacks.c+evaluate.c+make.c+\ >> unmake.c+movgen.c+quiesce.c+search.c+next.c+searchr.c+repeat.c+\ >> nextr.c+history.c+nexte.c+utility.c+valid.c+searchmp.c+\ >> thread.c x1.c >>x2.c: book.c data.c drawn.c edit.c epd.c epdglue.c init.c \ >> input.c interupt.c iterate.c main.c option.c output.c \ >> ponder.c preeval.c resign.c root.c learn.c setboard.c test.c time.c \ >> validate.c annotate.c analyze.c evtest.c bench.c hash.c probe.c >> copy /b book.c+data.c+drawn.c+edit.c+epd.c+epdglue.c+\ >> init.c+input.c+interupt.c+iterate.c+main.c+option.c+output.c+\ >> phase.c+ponder.c+preeval.c+resign.c+root.c+learn.c+setboard.c+\ >> test.c+time.c+validate.c+annotate.c+analyze.c+evtest.c+bench.c+\ >> hash.c+probe.c x2.c >> >>clean: >> del /q $(cobjs) >> del /q egtb.obj >> del /q $(xcobjs) >> del /q log.* >> del /q game.** >> del /q *.bak >> del /q x1.c >> del /q x2.c >>=============================================================== >>(end Makefule.nt) >> >>run Crafty throught some test positions (called with Profile.cmd) >> >>wcrafty easy mt=2 hash=48M hashp=12M cache=12M egtb tbpath=e:\tb >>bookpath=e:\book st=10 <profile.txt >> >>profile.txt contains the epd positions that you want to use for the profile >>guided optimizations >> >>and then run the linker command from the command prompt: >>link /ltcg:pgo /pgd:wcrafty.pgd >> >>takes about 2 minutes for start to finish if you run everything from batch and >>command files > >Thank you for answering Mike. >I have used nmake /f Makefile.nt wcrafty to compile. >Anyway i just tried "nmake /A /f makefile.nt" with same results. Makefile.nt >from source distribution only changing DCPUS=4 to DCPUS=8. >Will try your makefile and see what happens. > >Greetings >Juan Ignacio Barbosa If it doesn;t work, let me know and I will send you a 20.1 exe for 8 CPUS. Is it for 32 or 64 bit windows.
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.