makefile
.NT_i386
an. Das ist - leicht erraten - Windows. Für Windows ist allerdings kein Abschnitt in der make-Datein enthalten. Für TDM-minGW ist der aber schnell ge-copied-und-pasted:Windows64:
$(MAKE) target=NT_i386 \
CC=gcc.exe CXX=g++.exe \
CFLAGS='-w -pipe -m64 -O2 -march=corei7 -msse4.2 -fno-exceptions' \
CXFLAGS='-w -pipe -m64 -O2 -march=corei7 -msse4.2 -fno-exceptions -fno-rtti' \
LDFLAGS='$(LDFLAGS) -s -lpthread -static-libgcc' \
opt='$(opt) -DINLINE64 -DHAS_64BITS -DCPUS=16 -DPOPCNT' \
crafty-make
CPUS
gibt man an, mit bis zu wie vielen threads Crafty maximal laufen können soll. (Der Parameter mt
in crafty.rc
steuert, wie viele von den mit CPUS 'vorbereiteten' threads Crafty nutzen soll.) Um bis zu 16 threads zu ermöglichen schreibt man CPUS=16
.POPCNT
für Prozessoren mit SSE 4.2 oder besser sowie INLINE64
und HAS_64BITS
für 64-Bit-compiles.makefile.xp
ist für Microsoft C++.chess.h
, glaube ich. - Es gibt aber ein ziemliches Geraffel, wenn man da was falsch macht!inline32.h
wurde die inline-Assembler-Funktion PopCnt(uint64_t word)
nicht beanstandet, wenn die Variablen dummy1 - dummy4 als unsigned int deklariert wurden.unsigned int dummy1, dummy2, dummy3, dummy4;
uint64_t dummy1, dummy2, dummy3, dummy4;
PATH
anpassen. Danach noch über ein paar Eigenheiten des 32-Bit-Compilers wundern und fertig war die 32-Bit-Fassung von Crafty 23.8 # The makefile is set up for Microsoft Visual C++ 6.0 Intel.
#if defined(UNIX)
. Das passt nicht zu Visual C++, denke ich.makefile.xp
benutzen. Für Windows sollte target=NT_i386
gesetzt sein, sodass die Abschnitte nach #if defined(UNIX)
grundsätzlich nicht compiliert werden. Damit erübrigen sich die Fehlermeldungen.makefile.xp
benutzen. Das Projekt so einzurichten, dass eine lauffähige Crafty 23.8.exe
entsteht, ist schnell gemacht. Es sind eigentlich die gleichen Präprozessordefinitionen zu setzen. Man muss nur darauf achten (ist mir erst beim Erstellen der 64-Bit-Version aufgefallen ), dass die Abschnitte mit dem Inline-Assembler (Dateien inline32.h
und inline64.h
) nicht MS-kompatibel sind (die intrinsics _BitScanReverse64
, _BitScanForward64
und __popcnt64
kann man statt dessen einsetzen).-march=native
Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill