Computer Chess Club Archives




Subject: Re: need help in compiling Crafty

Author: Joshua Haglund

Date: 02:34:12 02/19/05

Go up one level in this thread

On February 18, 2005 at 03:26:29, Peter Skinner wrote:

>On February 18, 2005 at 03:18:36, Joshua Haglund wrote:
>>For VS Command Prompt:
>>nmake -f Makefile.nt
>>Should compile right out of the box (.zip or .tar files).
>>Joshua Haglund
>That used to work, but no longer does. I am editting the makefile.nt now to
>update it, then Bob can included the updated one in the next release.

I use "nmake -f Makefile.nt"

Works fine for me.

# Makefile version 3 for Crafty 16.15
# Crafty v16.x makefile for Windows NT Intel
# Written by Jason Deines ( April 1998
# Version modified by Gregor Overney ( Nov 1998
# Version modified by Peter Karrer ( Dec 1998
# Version modified by Gregor Overney ( 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:

# 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

#CFLAGS   = /O2 /G6 /Gr /Ob2
#CFLAGS   = /Od /Zi
CFLAGS   = /O2 /Gr /Ob2 /GL

# Linker flags, normally not needed except for debug builds:

# 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.


# 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.



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+\
           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 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
           copy /b book.c+data.c+drawn.c+edit.c+epd.c+epdglue.c+\
           hash.c+probe.c x2.c

	   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

Just a couple different flags that's all.

Joshua Haglund

This page took 0.03 seconds to execute

Last modified: Thu, 07 Jul 11 08:48:38 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.