Open sebjameswml opened 4 years ago
I think this may be bit-rot, with some tweaks required on a Mac:
This is complaining that in the call to bind() at line 85 of brahms/framework/channel/sockets/sockets.cpp it can't compare a thing called
__bind<int &, const sockaddr *, unsigned long>
with an int.
The line of code is:
if ( bind( serverListenSocket, (OS_SOCKADDR*) &con, sizeof(con) ) == OS_SOCKET_ERROR)
Now, on Linux, the call to bind() returns an int, and that can be compared with OS_SOCKET_ERROR which is a numerical definition and is interpreted as an int.
It seems that on a Mac with clang10, the call to bind is returning some sort of special __bind object, so there seems to be some bit-rot in this bit of brahms. It looks like the bind system call is being implemented in a c++ way. A check on the Apple developer website suggests that you can still use the unix/C style sockets interface and the bind(2) function call, and that it should, as is typical, return an int. There's probably some Mac-specific tweak required, or a slight change to a #include to get this to compile, but I'm afraid I don't know what it is, and I don't have access to a Mac at the moment.
Sorry I can't be more help! I'll open an issue.
@ajc158 have you got a Mac? Does brahms build on it?
This problem has been experienced by @benoit-girard with this cmake call:
"make -j4" returned: