For example type
make profile-build ARCH=x86-64-modern COMP=gcc cpus=16
to make a build that is able to run with 16 cpus.
Unfortunately I run into some troubles.
On both, Linux and Windows the bench command returns 169405499 for gcc which is as expected.
Clang gives me 230583383.
I added a numa switch to the Makefile to quickly enable -DNUMA it.
Code: Select all
main.c:4309:5: error: too many arguments to function ‘numa_node_to_cpus’
numa_node_to_cpus(0, cpus, 64);
When I try to enable more than 1 cpu on Windows (mingw-5.2) it fails with the following errors:
Code: Select all
make build ARCH=x86-64-modern cpus=4 COMP=mingw
make ARCH=x86-64-modern COMP=mingw config-sanity
make[1]: Entering directory `/c/Users/quantum/Desktop/crafty-25.0-1'
Config:
debug: 'no'
optimize: 'yes'
arch: 'x86_64'
prefetch: 'yes'
popcnt: 'yes'
sse: 'yes'
asm: 'yes'
cpus: '4'
numa: 'no'
Flags:
CC: gcc
CFLAGS: -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4
LDFLAGS: -static
Testing config sanity. If this fails, try 'make help' ...
make[1]: Leaving directory `/c/Users/quantum/Desktop/crafty-25.0-1'
make ARCH=x86-64-modern COMP=mingw all
make[1]: Entering directory `/c/Users/quantum/Desktop/crafty-25.0-1'
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o main.o main.c
In file included from chess.h:77:0,
from main.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o iterate.o iterate.c
In file included from chess.h:77:0,
from iterate.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
iterate.c: In function 'Iterate':
iterate.c:248:39: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
NumaStartThread(ThreadInit, (void *) proc);
^
In file included from iterate.c:1:0:
iterate.c:677:28: warning: implicit declaration of function 'PopCnt' [-Wimplicit-function-declaration]
max = Max(max, PopCnt(thread[i].max_blocks));
^
chess.h:538:30: note: in definition of macro 'Max'
# define Max(a,b) (((a) > (b)) ? (a) : (b))
^
iterate.c:55:13: warning: unused variable 'pt' [-Wunused-variable]
pthread_t pt;
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o time.o time.c
In file included from chess.h:77:0,
from time.c:2:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o search.o search.c
In file included from chess.h:77:0,
from search.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o quiesce.o quiesce.c
In file included from chess.h:77:0,
from quiesce.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o evaluate.o evaluate.c
In file included from chess.h:77:0,
from evaluate.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
evaluate.c: In function 'EvaluateBishops':
evaluate.c:346:14: warning: implicit declaration of function 'LSB' [-Wimplicit-function-declaration]
square = LSB(temp);
^
evaluate.c:385:18: warning: implicit declaration of function 'PopCnt' [-Wimplicit-function-declaration]
tpawns = PopCnt(dark_squares & Pawns(side));
^
In file included from evaluate.c:1:0:
evaluate.c: In function 'EvaluateKingsFile':
chess.h:574:49: warning: implicit declaration of function 'MSB' [-Wimplicit-function-declaration]
# define MostAdvanced(side, squares) ((side) ? MSB(squares) : LSB(squares))
^
chess.h:571:28: note: in definition of macro 'Rank'
# define Rank(x) ((x)>>3)
^
evaluate.c:716:37: note: in expansion of macro 'MostAdvanced'
pawn_defects[side][Rank(MostAdvanced(enemy,
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o thread.o thread.c
In file included from chess.h:77:0,
from thread.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
thread.c: In function 'ThreadSplit':
thread.c:479:14: warning: implicit declaration of function 'LSB' [-Wimplicit-function-declaration]
temp = LSB(tblocks);
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o repeat.o repeat.c
In file included from chess.h:77:0,
from repeat.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o hash.o hash.c
In file included from chess.h:77:0,
from hash.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o next.o next.c
In file included from chess.h:77:0,
from next.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o history.o history.c
In file included from chess.h:77:0,
from history.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o movgen.o movgen.c
In file included from chess.h:77:0,
from movgen.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
In file included from movgen.c:1:0:
movgen.c: In function 'GenerateCaptures':
chess.h:574:49: warning: implicit declaration of function 'MSB' [-Wimplicit-function-declaration]
# define MostAdvanced(side, squares) ((side) ? MSB(squares) : LSB(squares))
^
movgen.c:32:12: note: in expansion of macro 'MostAdvanced'
from = MostAdvanced(side, piecebd);
^
chess.h:574:64: warning: implicit declaration of function 'LSB' [-Wimplicit-function-declaration]
# define MostAdvanced(side, squares) ((side) ? MSB(squares) : LSB(squares))
^
movgen.c:32:12: note: in expansion of macro 'MostAdvanced'
from = MostAdvanced(side, piecebd);
^
movgen.c: In function 'GenerateCheckEvasions':
movgen.c:497:14: warning: implicit declaration of function 'PopCnt' [-Wimplicit-function-declaration]
checkers = PopCnt(checksqs);
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o make.o make.c
In file included from chess.h:77:0,
from make.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o unmake.o unmake.c
In file included from chess.h:77:0,
from unmake.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o attacks.o attacks.c
In file included from chess.h:77:0,
from attacks.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
attacks.c: In function 'Attacked':
attacks.c:108:14: warning: implicit declaration of function 'LSB' [-Wimplicit-function-declaration]
square = LSB(set);
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o swap.o swap.c
In file included from chess.h:77:0,
from swap.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o boolean.o boolean.c
In file included from chess.h:77:0,
from boolean.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o utility.o utility.c
In file included from chess.h:77:0,
from utility.c:4:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
utility.c: In function 'ReadClock':
utility.c:1425:12: warning: unused variable 'tUser64' [-Wunused-variable]
uint64_t tUser64;
^
utility.c:1424:40: warning: unused variable 'ftUser' [-Wunused-variable]
FILETIME ftCreate, ftExit, ftKernel, ftUser;
^
utility.c:1424:30: warning: unused variable 'ftKernel' [-Wunused-variable]
FILETIME ftCreate, ftExit, ftKernel, ftUser;
^
utility.c:1424:22: warning: unused variable 'ftExit' [-Wunused-variable]
FILETIME ftCreate, ftExit, ftKernel, ftUser;
^
utility.c:1424:12: warning: unused variable 'ftCreate' [-Wunused-variable]
FILETIME ftCreate, ftExit, ftKernel, ftUser;
^
utility.c:1423:10: warning: unused variable 'hThread' [-Wunused-variable]
HANDLE hThread;
^
utility.c: In function 'InvalidPosition':
utility.c:1465:8: warning: implicit declaration of function 'PopCnt' [-Wimplicit-function-declaration]
wp = PopCnt(Pawns(white));
^
utility.c: In function 'WinNumaInit':
utility.c:2702:16: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long unsigned int' [-Wformat=]
printf("System is NUMA. %d nodes reported by Windows\n",
^
utility.c:2707:18: warning: format '%d' expects argument of type 'int', but argument 2 has type 'DWORD {aka long unsigned int}' [-Wformat=]
printf("Node %d CPUs: ", ulNode);
^
utility.c:2715:24: warning: format '%d' expects argument of type 'int', but argument 2 has type 'DWORD {aka long unsigned int}' [-Wformat=]
printf("%d ", ulCPU);
^
utility.c:2727:16: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'DWORD {aka long unsigned int}' [-Wformat=]
printf("Current ideal CPU is %u\n", dwCPU);
^
utility.c:2733:22: warning: format '%d' expects argument of type 'int', but argument 2 has type 'DWORD {aka long unsigned int}' [-Wformat=]
printf("Exchanging nodes 0 and %d\n", ulNode);
^
utility.c:2679:13: warning: unused variable 'dwMask' [-Wunused-variable]
DWORD_PTR dwMask;
^
utility.c: In function 'NumaStartThread':
utility.c:2760:12: warning: format '%d' expects argument of type 'int', but argument 2 has type 'DWORD {aka long unsigned int}' [-Wformat=]
printf("Starting thread on node %d CPU mask %I64d\n", ulNumaNode,
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o probe.o probe.c
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o book.o book.c
In file included from chess.h:77:0,
from book.c:2:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o drawn.o drawn.c
In file included from chess.h:77:0,
from drawn.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o epd.o epd.c
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o epdglue.o epdglue.c
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o init.o init.c
In file included from chess.h:77:0,
from init.c:3:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
init.c: In function 'Initialize':
init.c:67:22: warning: overflow in implicit constant conversion [-Woverflow]
fseek(book_file, -sizeof(int), SEEK_END);
^
init.c:22:7: warning: unused variable 'i' [-Wunused-variable]
int i, j, v, major, id;
^
init.c: In function 'InitializeAttackBoards':
init.c:310:11: warning: implicit declaration of function 'LSB' [-Wimplicit-function-declaration]
j = LSB(sqs);
^
init.c: In function 'InitializeMagic':
init.c:432:14: warning: implicit declaration of function 'PopCnt' [-Wimplicit-function-declaration]
m += PopCnt(moves & mobility_mask_b[j]) * mobility_score_b[j];
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o input.o input.c
In file included from chess.h:77:0,
from input.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o autotune.o autotune.c
In file included from chess.h:77:0,
from autotune.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o interrupt.o interrupt.c
In file included from chess.h:77:0,
from interrupt.c:2:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o option.o option.c
In file included from chess.h:77:0,
from option.c:3:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
option.c: In function 'Option':
option.c:929:36: warning: implicit declaration of function 'MSB' [-Wimplicit-function-declaration]
hash_table_size = ((1ull) << MSB(new_hash_size)) / 16;
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o output.o output.c
In file included from chess.h:77:0,
from output.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o ponder.o ponder.c
In file included from chess.h:77:0,
from ponder.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o resign.o resign.c
In file included from chess.h:77:0,
from resign.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o root.o root.c
In file included from chess.h:77:0,
from root.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
root.c: In function 'RootMoveList':
root.c:18:7: warning: unused variable 'temp' [-Wunused-variable]
int temp, value;
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o learn.o learn.c
In file included from chess.h:77:0,
from learn.c:3:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o setboard.o setboard.c
In file included from chess.h:77:0,
from setboard.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o test.o test.c
In file included from chess.h:77:0,
from test.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o validate.o validate.c
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o annotate.o annotate.c
In file included from chess.h:77:0,
from annotate.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o analyze.o analyze.c
In file included from chess.h:77:0,
from analyze.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o evtest.o evtest.c
In file included from chess.h:77:0,
from evtest.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o bench.o bench.c
In file included from chess.h:77:0,
from bench.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o edit.o edit.c
In file included from chess.h:77:0,
from edit.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
gcc -Wall -Wno-array-bounds -pipe -DNOEGTB -O3 -msse -msse3 -mpopcnt -DPOPCNT -DCPUS=4 -c -o data.o data.c
In file included from chess.h:77:0,
from data.c:1:
lock.h:18:0: warning: ignoring #pragma intrinsic [-Wunknown-pragmas]
# pragma intrinsic (_InterlockedExchange)
^
g++ -o crafty main.o iterate.o time.o search.o quiesce.o evaluate.o thread.o repeat.o hash.o next.o history.o movgen.o make.o unmake.o attacks.o swap.o boolean.o utility.o probe.o book.o drawn.o epd.o epdglue.o init.o input.o autotune.o interrupt.o option.o output.o ponder.o resign.o root.o learn.o setboard.o test.o validate.o annotate.o analyze.o evtest.o bench.o edit.o data.o -static
iterate.o:iterate.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
time.o:time.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
search.o:search.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
quiesce.o:quiesce.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
evaluate.o:evaluate.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
thread.o:thread.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
repeat.o:repeat.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
hash.o:hash.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
next.o:next.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
history.o:history.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
movgen.o:movgen.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
make.o:make.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
unmake.o:unmake.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
attacks.o:attacks.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
swap.o:swap.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
boolean.o:boolean.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
utility.o:utility.c:(.text+0x450): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
book.o:book.c:(.text+0x20): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
drawn.o:drawn.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
init.o:init.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
input.o:input.c:(.text+0x490): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
autotune.o:autotune.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
interrupt.o:interrupt.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
option.o:option.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
output.o:output.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
ponder.o:ponder.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
resign.o:resign.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
root.o:root.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
learn.o:learn.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
setboard.o:setboard.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
test.o:test.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
annotate.o:annotate.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
analyze.o:analyze.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
evtest.o:evtest.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
bench.o:bench.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
edit.o:edit.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
data.o:data.c:(.text+0x0): multiple definition of `Pause'
main.o:main.c:(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
make[1]: *** [crafty] Error 1
make[1]: Leaving directory `/c/Users/quantum/Desktop/crafty-25.0-1'
make: *** [build] Error 2