contour-terminal / contour

Modern C++ Terminal Emulator
http://contour-terminal.org/
Apache License 2.0
2.42k stars 105 forks source link

Missing `#include <cmath>` in Audio.cpp fails compilation on some systems #1613

Closed data-man closed 3 weeks ago

data-man commented 3 weeks ago

Contour Terminal version

git

Installer source

Github: source code cloned

Operating System

Devuan/Ceres

Architecture

x86-64

Other Software

gcc 14.1 clang 20.0 ninja

Steps to reproduce

cmake -B build-rel-qt5-clang \
      -G Ninja \
      -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_CXX_STANDARD=20 \
      -DCMAKE_C_COMPILER=clang \
      -DCMAKE_CXX_COMPILER=clang++ \
      -DCMAKE_LINKER=lld \
      -DCONTOUR_QT_VERSION=5 \
      -DLIBTERMINAL_LOG_TRACE=OFF \
      -DLIBTERMINAL_TESTING=OFF \
      -DLIBTERMINAL_PASSIVE_RENDER_BUFFER_UPDATE=ON \
      -DCONTOUR_COVERAGE=OFF \
      -DCONTOUR_PERF_STATS=OFF \
      -DCONTOUR_TESTING=OFF \
      -DCRISPY_TESTING=OFF

Expected Behavior

Successful compiling.

Actual Behavior

FAILED: src/contour/CMakeFiles/contour.dir/Audio.cpp.o
/usr/bin/ccache /opt/bin/clang++ -DCONTOUR_APP_ID=\"org.contourterminal.Contour\" -DCONTOUR_FRONTEND_GUI -DCONTOUR_PROJECT_SOURCE_DIR=\"/home/dataman/Projects/C/---Terminals/contour\" -DCONTOUR_STACKTRACE_ADDR2LINE=1 -DCONTOUR_VERSION_MAJOR=0 -DCONTOUR_VERSION_MINOR=5 -DCONTOUR_VERSION_PATCH=2 -DCONTOUR_VERSION_STRING=\"0.5.2-master-eaf5bce8\" -DHAVE_BACKTRACE -DHAVE_BACKTRACE_SYMBOLS -DHAVE_CXXABI_H -DHAVE_DLADDR -DHAVE_DLFCN_H -DHAVE_DLSYM -DHAVE_EXECINFO_H -DHAVE_SYS_SELECT_H -DHAVE_UNWIND_H -DLIBEXECDIR=\"/usr/local/lib\" -DLIBTERMINAL_PASSIVE_RENDER_BUFFER_UPDATE=1 -DQT_CORE_LIB -DQT_DISABLE_DEPRECATED_BEFORE=0x050F00 -DQT_GUI_LIB -DQT_MULTIMEDIA_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_QUICKCONTROLS2_LIB -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_X11EXTRAS_LIB -DVTPTY_LIBSSH2=1 -DYAML_CPP_STATIC_DEFINE -I/home/dataman/Projects/C/---Terminals/contour/build-rel-qt5-clang/src/contour/contour_autogen/include -I/home/dataman/Projects/C/---Terminals/contour/build-rel-qt5-clang/src/contour -I/home/dataman/Projects/C/---Terminals/contour/src -I/home/dataman/Projects/C/---Terminals/contour/_deps/sources/range-v3-0.12.0/include -I/home/dataman/Projects/C/---Terminals/contour/_deps/sources/libunicode-817cb5900acdf6f60e2344a4c8f1f39262878a4b/src -I/home/dataman/Projects/C/---Terminals/contour/_deps/sources/libunicode-817cb5900acdf6f60e2344a4c8f1f39262878a4b/src/libunicode/.. -I/home/dataman/Projects/C/---Terminals/contour/_deps/sources/boxed-cpp-1.4.3/include -I/home/dataman/Projects/C/---Terminals/contour/_deps/sources/libutempter-1.2.1 -I/home/dataman/Projects/C/---Terminals/contour/_deps/sources/yaml-cpp-0.8.0/include -isystem /home/dataman/Projects/C/---Terminals/contour/_deps/sources/GSL-3.1.0/include -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -isystem /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtQml -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtQuick -isystem /usr/include/x86_64-linux-gnu/qt5/QtQmlModels -isystem /usr/include/x86_64-linux-gnu/qt5/QtQuickControls2 -isystem /usr/include/x86_64-linux-gnu/qt5/QtMultimedia -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtX11Extras -O3 -DNDEBUG -std=c++20 -fcolor-diagnostics -fdiagnostics-color=always -maes -fPIC -MD -MT src/contour/CMakeFiles/contour.dir/Audio.cpp.o -MF src/contour/CMakeFiles/contour.dir/Audio.cpp.o.d -o src/contour/CMakeFiles/contour.dir/Audio.cpp.o -c /home/dataman/Projects/C/---Terminals/contour/src/contour/Audio.cpp
/home/dataman/Projects/C/---Terminals/contour/src/contour/Audio.cpp:24:14: error: no member named 'fmod' in namespace 'std'
   24 |     x = std::fmod(x, 2);
      |         ~~~~~^
/home/dataman/Projects/C/---Terminals/contour/src/contour/Audio.cpp:25:17: error: no member named 'isgreater' in namespace 'std'
   25 |     return std::isgreater(x, 1) ? -1 : 1;
      |            ~~~~~^
/home/dataman/Projects/C/---Terminals/contour/src/contour/Audio.cpp:33:45: error: no member named 'ceil' in namespace 'std'
   33 |     buffer.reserve(static_cast<size_t>(std::ceil(duration * SampleRate)));
      |                                        ~~~~~^
/home/dataman/Projects/C/---Terminals/contour/src/contour/Audio.cpp:34:60: error: no member named 'ceil' in namespace 'std'
   34 |     for (const auto i: crispy::times(static_cast<int>(std::ceil(duration * SampleRate))))
      |                                                       ~~~~~^
/home/dataman/Projects/C/---Terminals/contour/src/contour/Audio.cpp:126:59: error: no member named 'pow' in namespace 'std'
  126 |     double const frequency = note == 0 ? 0 : 440.0 * std::pow(2, (note + 2) / 12.0);
      |                                                      ~~~~~^
5 errors generated.
[136/145] Building CXX object src/contour/CMakeFiles/contour.dir/BlurBehind.cpp.o
ninja: build stopped: subcommand failed.
Command exited with non-zero status 1

Additional notes

No response

christianparpart commented 3 weeks ago

Seems like we're missing an include in https://github.com/contour-terminal/contour/blob/master/src/contour/Audio.cpp - there should be a #include <cmath> that should provide these functions.

data-man commented 3 weeks ago

there should be a #include

Yes, the problem is fixed after adding this header. Thanks!

christianparpart commented 3 weeks ago

@EKS2003, if you are willing to do this one, I can assign you here. But it seems, that you first need to have commented on this issue before I can assign you. :)