SpectrumIM / spectrum2

Spectrum 2 IM transports
https://spectrum.im
408 stars 91 forks source link

Switch from CXX11 to CXX14 #498

Closed ConiKost closed 1 month ago

ConiKost commented 1 month ago

Switch from CXX11 to CXX14, so compilation will not fail with GCC-14.

See https://bugs.gentoo.org/921575 for full build log.

vitalyster commented 1 month ago

Most likely you can override CMAKE_CXX_STANDARD from command line

dekeonus commented 1 month ago

EDIT: fixed line wrapping

no you can't override from the command line: The top level CMakeLists.txt will either override a -DCMAKE_CXX_STANDARD="14" passed during configure or will append -std=c++11 to the C++ flags (and the last one wins)

_-DCMAKE_CXXSTANDARD="14" overriden:

... cmake -C /var/tmp/portage/net-im/spectrum2-2.2.1/work/spectrum2-2.2.1_build/gentoo_common_config.cmake -G Ninja -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_INSTALL_SYSCONFDIR=/etc -DENABLE_DOCS=yes -DENABLE_FROTZ=no -DENABLE_IRC=yes -DENABLE_MYSQL=yes -DENABLE_PQXX=no -DENABLE_PURPLE=yes -DENABLE_QT4=OFF -DENABLE_SMSTOOLS3=no -DENABLE_SQLITE3=yes -DENABLE_TESTS=no -DENABLE_TWITTER=no -DENABLE_XMPP=yes -DCMAKE_CXX_STANDARD=14 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_TOOLCHAIN_FILE=/var/tmp/portage/net-im/spectrum2-2.2.1/work/spectrum2-2.2.1_build/gentoo_toolchain.cmake /var/tmp/portage/net-im/spectrum2-2.2.1/work/spectrum2-2.2.1 ... [3/138] /usr/lib/distcc/bin/x86_64-pc-linux-gnu-g++ -DBOOST_BIND_GLOBAL_PLACEHOLDERS -DBOOST_FILESYSTEM_VERSION=3 -DIRC_SHARED -DPURPLE_RUNTIME=0 -DSPECTRUM_VERSION=\"2.2.1\" -DSUPPORT_LEGACY_CAPS -DWITH_LIBEVENT -DWITH_LOG4CXX -DWITH_MYSQL -DWITH_PROTOBUF -DWITH_SQLITE -Dtransport_EXPORTS -I/usr/include/mysql -I/usr/include/libpurple -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/qt5/Communi/IrcCore -I/usr/include/qt5/Communi/IrcUtil -I/usr/include/qt5/Communi/IrcModel -I/var/tmp/portage/net-im/spectrum2-2.2.1/work/spectrum2-2.2.1/include -I/var/tmp/portage/net-im/spectrum2-2.2.1/work/spectrum2-2.2.1/libtransport/../spectrum/src/frontends/xmpp -I/usr/include/jsoncpp -march=amdfam10 -O2 -pipe -std=c++11 -fPIC -fPIC -MD -MT libtransport/CMakeFiles/transport.dir/AdminInterfaceCommand.cpp.o -MF libtransport/CMakeFiles/transport.dir/AdminInterfaceCommand.cpp.o.d -o libtransport/CMakeFiles/transport.dir/AdminInterfaceCommand.cpp.o -c /var/tmp/portage/net-im/spectrum2-2.2.1/work/spectrum2-2.2.1/libtransport/AdminInterfaceCommand.cpp

c++ flags overridden:

... Compiler flags: C -march=core2 -O2 -pipe C++ -march=core2 -O2 -pipe -std=c++14 ... [3/138] /usr/lib/distcc/bin/x86_64-pc-linux-gnu-g++ -DBOOST_BIND_GLOBAL_PLACEHOLDERS -DBOOST_FILESYSTEM_VERSION=3 -DIRC_SHARED -DPURPLE_RUNTIME=0 -DSPECTRUM_VERSION=\"2.2.1\" -DSUPPORT_LEGACY_CAPS -DWITH_LIBEVENT -DWITH_LOG4CXX -DWITH_MYSQL -DWITH_PROTOBUF -DWITH_SQLITE -Dtransport_EXPORTS -I/usr/include/mysql -I/usr/include/libpurple -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/qt5/Communi/IrcCore -I/usr/include/qt5/Communi/IrcUtil -I/usr/include/qt5/Communi/IrcModel -I/var/tmp/portage/net-im/spectrum2-2.2.1/work/spectrum2-2.2.1/include -I/var/tmp/portage/net-im/spectrum2-2.2.1/work/spectrum2-2.2.1/libtransport/../spectrum/src/frontends/xmpp -I/usr/include/jsoncpp -march=core2 -O2 -pipe -std=c++14 -std=c++11 -fPIC -fPIC -MD -MT libtransport/CMakeFiles/transport.dir/PQXXBackend.cpp.o -MF libtransport/CMakeFiles/transport.dir/PQXXBackend.cpp.o.d -o libtransport/CMakeFiles/transport.dir/PQXXBackend.cpp.o -c /var/tmp/portage/net-im/spectrum2-2.2.1/work/spectrum2-2.2.1/libtransport/PQXXBackend.cpp

vitalyster commented 1 month ago

So we need to fix CMakeLists to allow override that