Linker error when compiling dune-uggrid Apple clang
When compiling dune-uggrid on master with fresh Dune master version I get a linker error
[ 95%] Linking CXX shared library lib/libduneuggrid.dylib
Undefined symbols for architecture x86_64:
"Dune::dwarn", referenced from:
DDD::LC_Connect(DDD::DDDContext&, DDD::Basic::MSG_TYPE*) in lowcomm.cc.o
DDD::DDD_Notify(DDD::DDDContext&) in notify.cc.o
DDD::DDD_GetChannels(DDD::DDDContext&, int) in topo.cc.o
UG::D2::DDD_ConsCheck(DDD::DDDContext&) in cons.cc.o
UG::D2::DDD_CheckInterfaces(DDD::DDDContext&) in ifcheck.cc.o
UG::D2::DDD_IFExchange(DDD::DDDContext&, unsigned int, unsigned long, int (*)(DDD::DDDContext&, char*, void*), int (*)(DDD::DDDContext&, char*, void*)) in ifcmds.cc.o
UG::D2::DDD_IFOneway(DDD::DDDContext&, unsigned int, UG::D2::DDD_IF_DIR, unsigned long, int (*)(DDD::DDDContext&, char*, void*), int (*)(DDD::DDDContext&, char*, void*)) in ifcmds.cc.o
...
"Dune::dgrave", referenced from:
UG::D2::DDD_ConsCheck(DDD::DDDContext&) in cons.cc.o
UG::D3::DDD_ConsCheck(DDD::DDDContext&) in cons.cc.o
"Dune::Exception::message(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
DDD::LC_PollRecv(DDD::DDDContext const&) in lowcomm.cc.o
DDD::LC_PollSend(DDD::DDDContext const&) in lowcomm.cc.o
DDD::LC_NewMsgChunk(char const*, DDD::Basic::MSG_TYPE*) in lowcomm.cc.o
DDD::LC_NewMsgTable(char const*, DDD::Basic::MSG_TYPE*, unsigned long) in lowcomm.cc.o
DDD::LC_Connect(DDD::DDDContext&, DDD::Basic::MSG_TYPE*) in lowcomm.cc.o
DDD::LC_Abort(DDD::DDDContext&, int) in lowcomm.cc.o
UG::D2::DDD_IdentifyEnd(DDD::DDDContext&) in ident.cc.o
...
"Dune::Exception::Exception()", referenced from:
DDD::LC_PollRecv(DDD::DDDContext const&) in lowcomm.cc.o
DDD::LC_PollSend(DDD::DDDContext const&) in lowcomm.cc.o
DDD::LC_NewMsgChunk(char const*, DDD::Basic::MSG_TYPE*) in lowcomm.cc.o
DDD::LC_NewMsgTable(char const*, DDD::Basic::MSG_TYPE*, unsigned long) in lowcomm.cc.o
DDD::LC_Connect(DDD::DDDContext&, DDD::Basic::MSG_TYPE*) in lowcomm.cc.o
DDD::LC_Abort(DDD::DDDContext&, int) in lowcomm.cc.o
UG::D2::DDD_IdentifyEnd(DDD::DDDContext&) in ident.cc.o
...
"Dune::Exception::Exception()", referenced from:
UG::D2::IdentStepMode(DDD::DDDContext&, DDD::Ident::IdentMode) in ident.cc.o
UG::D2::JoinStepMode(DDD::DDDContext&, DDD::Join::JoinMode) in join.cc.o
UG::D2::XferStepMode(DDD::DDDContext&, DDD::Xfer::XferMode) in xfer.cc.o
UG::D2::BalanceGridRCB(UG::D2::multigrid*, int) in lbrcb.cc.o
UG::D3::IdentStepMode(DDD::DDDContext&, DDD::Ident::IdentMode) in ident.cc.o
UG::D3::JoinStepMode(DDD::DDDContext&, DDD::Join::JoinMode) in join.cc.o
UG::D3::XferStepMode(DDD::DDDContext&, DDD::Xfer::XferMode) in xfer.cc.o
...
"Dune::Exception::what() const", referenced from:
vtable for Dune::InvalidStateException in ident.cc.o
vtable for Dune::InvalidStateException in join.cc.o
vtable for Dune::InvalidStateException in xfer.cc.o
vtable for Dune::NotImplemented in lbrcb.cc.o
vtable for Dune::InvalidStateException in ident.cc.o
vtable for Dune::InvalidStateException in join.cc.o
vtable for Dune::InvalidStateException in xfer.cc.o
...
"typeinfo for Dune::Exception", referenced from:
DDD::LC_PollRecv(DDD::DDDContext const&) in lowcomm.cc.o
DDD::LC_PollSend(DDD::DDDContext const&) in lowcomm.cc.o
DDD::LC_NewMsgChunk(char const*, DDD::Basic::MSG_TYPE*) in lowcomm.cc.o
DDD::LC_NewMsgTable(char const*, DDD::Basic::MSG_TYPE*, unsigned long) in lowcomm.cc.o
DDD::LC_Connect(DDD::DDDContext&, DDD::Basic::MSG_TYPE*) in lowcomm.cc.o
DDD::LC_Abort(DDD::DDDContext&, int) in lowcomm.cc.o
UG::D2::DDD_IdentifyEnd(DDD::DDDContext&) in ident.cc.o
...
"vtable for Dune::Exception", referenced from:
DDD::LC_PollRecv(DDD::DDDContext const&) in lowcomm.cc.o
DDD::LC_PollSend(DDD::DDDContext const&) in lowcomm.cc.o
DDD::LC_NewMsgChunk(char const*, DDD::Basic::MSG_TYPE*) in lowcomm.cc.o
Dune::Exception::~Exception() in lowcomm.cc.o
DDD::LC_NewMsgTable(char const*, DDD::Basic::MSG_TYPE*, unsigned long) in lowcomm.cc.o
DDD::LC_Connect(DDD::DDDContext&, DDD::Basic::MSG_TYPE*) in lowcomm.cc.o
DDD::LC_Abort(DDD::DDDContext&, int) in lowcomm.cc.o
...
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [lib/libduneuggrid.dylib] Error 1
make[1]: *** [CMakeFiles/duneuggrid.dir/all] Error 2
make: *** [all] Error 2
Apple clang version 12.0.0 (clang-1200.0.32.28)
Target: x86_64-apple-darwin20.2.0
The error wasn't the last version I tried (around 15 May 2020). I haven't narrowed down the offending commit yet.