mcostalba / scoutfish

Chess Query Engine
GNU General Public License v3.0
154 stars 23 forks source link

Code does not compile on Mac OS X #31

Closed sshivaji closed 7 years ago

sshivaji commented 7 years ago
parser.cpp:550:5: error: no matching function for call to 'mem_map'
    mem_map(dbName.c_str(), &baseAddress, &mapping, &size);
    ^~~~~~~
./misc.h:111:6: note: candidate function not viable: no known conversion from 'uint64_t *' (aka 'unsigned long long *') to 'size_t *' (aka 'unsigned long *') for 4th argument
void mem_map(const char* fname, void** baseAddress, uint64_t* mapping, size_t* size);
     ^
46 warnings and 1 error generated.
make[1]: *** [parser.o] Error 1
make: *** [build] Error 2

The root cause is that size_t compiles to unsigned long in Mac OS X's clang compiler as opposed to unsigned long long in gcc. Should we cast to unsigned long long explicitly and solve the issue?

sshivaji commented 7 years ago

Forgot to mention that the following patch works for me with Mac OS X clang:


diff --git a/parser/parser.cpp b/parser/parser.cpp
index d0fe174..929930d 100644
--- a/parser/parser.cpp
+++ b/parser/parser.cpp
@@ -82,7 +82,7 @@ Token ToToken[256];
 Step ToStep[STATE_NB][TOKEN_NB];
 Position RootPos;

-void map(const char* fname, void** baseAddress, uint64_t* mapping, size_t* size) {
+void map(const char* fname, void** baseAddress, uint64_t* mapping, unsigned long long* size) {

 #ifndef _WIN32
     struct stat statbuf; 
sshivaji commented 7 years ago

Sorry, I gave patch for chess_db, for scoutfish its:

I am happy to submit a pull request. However, I feel this is not the best fix as we lose out on the size_t abstraction due to clang's interpretation of size_t.


diff --git a/src/misc.cpp b/src/misc.cpp
index bd23252..8472915 100644
--- a/src/misc.cpp
+++ b/src/misc.cpp
@@ -329,7 +329,7 @@ void bindThisThread(size_t idx) {

 } // namespace WinProcGroup

-void mem_map(const char* fname, void** baseAddress, uint64_t* mapping, size_t* size) {
+void mem_map(const char* fname, void** baseAddress, uint64_t* mapping, uint64_t* size) {

 #ifndef _WIN32
     struct stat statbuf;
diff --git a/src/misc.h b/src/misc.h
index 1cc215c..56a09e1 100644
--- a/src/misc.h
+++ b/src/misc.h
@@ -108,7 +108,7 @@ namespace WinProcGroup {
   void bindThisThread(size_t idx);
 }

-void mem_map(const char* fname, void** baseAddress, uint64_t* mapping, size_t* size);
+void mem_map(const char* fname, void** baseAddress, uint64_t* mapping, uint64_t* size);
 void mem_unmap(void* baseAddress, uint64_t mapping);
mcostalba commented 7 years ago

@sshivaji I see

46 warnings and 1 error generated.

Can you please post those warnings, indeed can you pelase post a full compile output? Thanks.

sshivaji commented 7 years ago

Full compiler output:


make build ARCH=x86-64
/Applications/Xcode.app/Contents/Developer/usr/bin/make ARCH=x86-64 COMP=gcc config-sanity

Config:
debug: 'no'
optimize: 'yes'
arch: 'x86_64'
bits: '64'
prefetch: 'yes'
popcnt: 'no'
sse: 'yes'
pext: 'no'

Flags:
CXX: g++
CXXFLAGS: -Wall -Wcast-qual -fno-exceptions -fno-rtti -std=c++11  -pedantic -Wextra -Wshadow -m64 -arch x86_64 -mmacosx-version-min=10.9 -DNDEBUG -O3 -mdynamic-no-pic -DIS_64BIT -msse -flto
LDFLAGS:  -arch x86_64 -mmacosx-version-min=10.9 -lpthread -Wall -Wcast-qual -fno-exceptions -fno-rtti -std=c++11  -pedantic -Wextra -Wshadow -m64 -arch x86_64 -mmacosx-version-min=10.9 -DNDEBUG -O3 -mdynamic-no-pic -DIS_64BIT -msse -flto

Testing config sanity. If this fails, try 'make help' ...

/Applications/Xcode.app/Contents/Developer/usr/bin/make ARCH=x86-64 COMP=gcc all
g++ -Wall -Wcast-qual -fno-exceptions -fno-rtti -std=c++11  -pedantic -Wextra -Wshadow -m64 -arch x86_64 -mmacosx-version-min=10.9 -DNDEBUG -O3 -mdynamic-no-pic -DIS_64BIT -msse -flto   -c -o parser.o parser.cpp
parser.cpp:525:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['\n'] = ToToken['\r'] = ToToken[' '] = ToToken['\t'] = T_SPACES;
           ^~~~~
parser.cpp:525:28: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['\n'] = ToToken['\r'] = ToToken[' '] = ToToken['\t'] = T_SPACES;
                           ^~~~~
parser.cpp:525:44: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['\n'] = ToToken['\r'] = ToToken[' '] = ToToken['\t'] = T_SPACES;
                                           ^~~~
parser.cpp:525:59: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['\n'] = ToToken['\r'] = ToToken[' '] = ToToken['\t'] = T_SPACES;
                                                          ^~~~~
parser.cpp:526:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['/'] = ToToken['*'] = T_RESULT;
           ^~~~
parser.cpp:526:27: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['/'] = ToToken['*'] = T_RESULT;
                          ^~~~
parser.cpp:527:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['-'] = T_MINUS;
           ^~~~
parser.cpp:528:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['.'] = T_DOT;
           ^~~~
parser.cpp:529:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['"'] = T_QUOTES;
           ^~~~
parser.cpp:530:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['$'] = T_DOLLAR;
           ^~~~
parser.cpp:531:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['['] = T_LEFT_BRACKET;
           ^~~~
parser.cpp:532:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken[']'] = T_RIGHT_BRACKET;
           ^~~~
parser.cpp:533:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['{'] = T_LEFT_BRACE;
           ^~~~
parser.cpp:534:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['}'] = T_RIGHT_BRACE;
           ^~~~
parser.cpp:535:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['('] = T_LEFT_PARENTHESIS;
           ^~~~
parser.cpp:536:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken[')'] = T_RIGHT_PARENTHESIS;
           ^~~~
parser.cpp:537:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['E'] = T_EVENT;
           ^~~~
parser.cpp:538:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['0'] = T_ZERO;
           ^~~~
parser.cpp:539:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['1'] = ToToken['2'] = ToToken['3'] =
           ^~~~
parser.cpp:539:27: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['1'] = ToToken['2'] = ToToken['3'] =
                          ^~~~
parser.cpp:539:42: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['1'] = ToToken['2'] = ToToken['3'] =
                                         ^~~~
parser.cpp:540:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['4'] = ToToken['5'] = ToToken['6'] = ToToken['7'] =
           ^~~~
parser.cpp:540:27: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['4'] = ToToken['5'] = ToToken['6'] = ToToken['7'] =
                          ^~~~
parser.cpp:540:42: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['4'] = ToToken['5'] = ToToken['6'] = ToToken['7'] =
                                         ^~~~
parser.cpp:540:57: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['4'] = ToToken['5'] = ToToken['6'] = ToToken['7'] =
                                                        ^~~~
parser.cpp:541:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['8'] = ToToken['9'] = T_DIGIT;
           ^~~~
parser.cpp:541:27: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['8'] = ToToken['9'] = T_DIGIT;
                          ^~~~
parser.cpp:542:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['a'] = ToToken['b'] = ToToken['c'] = ToToken['d'] =
           ^~~~
parser.cpp:542:27: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['a'] = ToToken['b'] = ToToken['c'] = ToToken['d'] =
                          ^~~~
parser.cpp:542:42: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['a'] = ToToken['b'] = ToToken['c'] = ToToken['d'] =
                                         ^~~~
parser.cpp:542:57: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['a'] = ToToken['b'] = ToToken['c'] = ToToken['d'] =
                                                        ^~~~
parser.cpp:543:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['e'] = ToToken['f'] = ToToken['g'] = ToToken['h'] =
           ^~~~
parser.cpp:543:27: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['e'] = ToToken['f'] = ToToken['g'] = ToToken['h'] =
                          ^~~~
parser.cpp:543:42: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['e'] = ToToken['f'] = ToToken['g'] = ToToken['h'] =
                                         ^~~~
parser.cpp:543:57: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['e'] = ToToken['f'] = ToToken['g'] = ToToken['h'] =
                                                        ^~~~
parser.cpp:544:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['N'] = ToToken['B'] = ToToken['R'] = ToToken['Q'] =
           ^~~~
parser.cpp:544:27: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['N'] = ToToken['B'] = ToToken['R'] = ToToken['Q'] =
                          ^~~~
parser.cpp:544:42: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['N'] = ToToken['B'] = ToToken['R'] = ToToken['Q'] =
                                         ^~~~
parser.cpp:544:57: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['N'] = ToToken['B'] = ToToken['R'] = ToToken['Q'] =
                                                        ^~~~
parser.cpp:545:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['K'] = ToToken['O'] = ToToken['o'] = T_MOVE_HEAD;
           ^~~~
parser.cpp:545:27: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['K'] = ToToken['O'] = ToToken['o'] = T_MOVE_HEAD;
                          ^~~~
parser.cpp:545:42: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['K'] = ToToken['O'] = ToToken['o'] = T_MOVE_HEAD;
                                         ^~~~
parser.cpp:550:12: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['!'] = ToToken['?'] = ToToken['+'] = ToToken['#'] = T_SPACES;
           ^~~~
parser.cpp:550:27: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['!'] = ToToken['?'] = ToToken['+'] = ToToken['#'] = T_SPACES;
                          ^~~~
parser.cpp:550:42: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['!'] = ToToken['?'] = ToToken['+'] = ToToken['#'] = T_SPACES;
                                         ^~~~
parser.cpp:550:57: warning: array subscript is of type 'char' [-Wchar-subscripts]
    ToToken['!'] = ToToken['?'] = ToToken['+'] = ToToken['#'] = T_SPACES;
                                                        ^~~~
46 warnings generated.
g++ -Wall -Wcast-qual -fno-exceptions -fno-rtti -std=c++11  -pedantic -Wextra -Wshadow -m64 -arch x86_64 -mmacosx-version-min=10.9 -DNDEBUG -O3 -mdynamic-no-pic -DIS_64BIT -msse -flto   -c -o position.o position.cpp
g++ -o parser bitboard.o book.o main.o misc.o parser.o position.o uci.o  -arch x86_64 -mmacosx-version-min=10.9 -lpthread -Wall -Wcast-qual -fno-exceptions -fno-rtti -std=c++11  -pedantic -Wextra -Wshadow -m64 -arch x86_64 -mmacosx-version-min=10.9 -DNDEBUG -O3 -mdynamic-no-pic -DIS_64BIT -msse -flto
mcostalba commented 7 years ago

Ok thanks, this is harmless.