icecc / icemon

Icecream GUI Monitor
http://kfunk.org/tag/icemon/
GNU General Public License v2.0
88 stars 34 forks source link

Can't compile with clang #24

Closed aleixpol closed 8 years ago

aleixpol commented 8 years ago

I recently switched to building my software with clang, now icemon isn't compiling.

Here's the error message:

[2/2] Linking CXX executable src/icemon
FAILED: : && /bin/c++   -std=c++11 -Wno-deprecated -Wextra -Woverloaded-virtual -Winit-self -Wmissing-include-dirs -Wunused -Wno-div-by-zero -Wundef -Wpointer-arith -Wcast-qual -Wcast-align -Wmissing-noreturn -Werror=return-type -Wunused-but-set-variable -Wlogical-op -g   src/CMakeFiles/icemon.dir/fakemonitor.cc.o src/CMakeFiles/icemon.dir/hostinfo.cc.o src/CMakeFiles/icemon.dir/icecreammonitor.cc.o src/CMakeFiles/icemon.dir/job.cc.o src/CMakeFiles/icemon.dir/main.cc.o src/CMakeFiles/icemon.dir/mainwindow.cc.o src/CMakeFiles/icemon.dir/monitor.cc.o src/CMakeFiles/icemon.dir/statusview.cc.o src/CMakeFiles/icemon.dir/statusviewfactory.cc.o src/CMakeFiles/icemon.dir/utils.cc.o src/CMakeFiles/icemon.dir/models/hostlistmodel.cc.o src/CMakeFiles/icemon.dir/models/joblistmodel.cc.o src/CMakeFiles/icemon.dir/views/detailedhostview.cc.o src/CMakeFiles/icemon.dir/views/flowtableview.cc.o src/CMakeFiles/icemon.dir/views/ganttstatusview.cc.o src/CMakeFiles/icemon.dir/views/hostlistview.cc.o src/CMakeFiles/icemon.dir/views/joblistview.cc.o src/CMakeFiles/icemon.dir/views/listview.cc.o src/CMakeFiles/icemon.dir/views/starview.cc.o src/CMakeFiles/icemon.dir/views/summaryview.cc.o src/CMakeFiles/icemon.dir/qrc_icemon.cpp.o src/CMakeFiles/icemon.dir/icemon_automoc.cpp.o  -o src/icemon  -rdynamic /usr/lib64/icecream/lib/libicecc.so -lcap-ng -llzo2 /home/kde-devel/kde5/lib/libQt5Widgets.so.5.6.0 -ldl /home/kde-devel/kde5/lib/libQt5Gui.so.5.6.0 /home/kde-devel/kde5/lib/libQt5Core.so.5.6.0 -Wl,-rpath,/usr/lib64/icecream/lib:/home/kde-devel/kde5/lib: && :
src/CMakeFiles/icemon.dir/icecreammonitor.cc.o: In function `IcecreamMonitor::slotCheckScheduler()':
/home/kde-devel/frameworks/icemon/src/icecreammonitor.cc:120: undefined reference to `DiscoverSched::DiscoverSched(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
krf commented 8 years ago

This is not only a problem for Clang.

This is related to the ABI switch in GCC 5 (see https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html)

Both Clang + GCC seem to assume C++11 ABI for the (static) icecc library; which has been compiled using the old ABI, though.

Trying to work out a patch for this...

krf commented 8 years ago

@aleixpol: Please test

aleixpol commented 8 years ago

I confirm it fixes it. Thanks for looking into it!