PabloMK7 / citra

A Nintendo 3DS Emulator
GNU General Public License v2.0
3.74k stars 636 forks source link

Citra does not build with fmt 11.0.1 #187

Closed brad0 closed 4 months ago

brad0 commented 4 months ago

Is there an existing issue for this?

Affected Build(s)

citra-unified-source-20240303-0ff3440

Description of Issue

Citra does not build against fmt 11.0.1.

I don't see any fmt related commits in the git repo past this nightly snapshot.

FAILED: src/common/CMakeFiles/citra_common.dir/file_util.cpp.o
/home/ports/pobj/citra-0.0.0.2104/bin/c++ -DBOOST_ASIO_DISABLE_CONCEPTS -DBOOST_DATE_TIME_NO_LIB -DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_REGEX_NO_LIB -DBOOST_SYSTEM_NO_LIB -DENABLE_OPENGL -DENABLE_SOFTWARE_RENDERER -DFMT_SHARED -DNDEBUG -I/home/ports/pobj/citra-0.0.0.2104/citra-unified-source-20240303-0ff3440/src/. -I/home/ports/pobj/citra-0.0.0.2104/citra-unified-source-20240303-0ff3440/externals/gamemode/include -I/home/ports/pobj/citra-0.0.0.2104/citra-unified-source-20240303-0ff3440/externals/zstd/lib -I/home/ports/pobj/citra-0.0.0.2104/citra-unified-source-20240303-0ff3440/externals/xbyak -isystem /home/ports/pobj/citra-0.0.0.2104/citra-unified-source-20240303-0ff3440/externals/./microprofile -O2 -pipe  -I/usr/local/include -I/usr/local/lib/qt5/cmake/Qt5/ -DNDEBUG -std=gnu++20 -flto=thin -fvisibility=default -Wall -Wno-unused-command-line-argument -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fstack-clash-protection -Wp,-D_FORTIFY_SOURCE=2 -fsized-deallocation -MD -MT src/common/CMakeFiles/citra_common.dir/file_util.cpp.o -MF src/common/CMakeFiles/citra_common.dir/file_util.cpp.o.d -o src/common/CMakeFiles/citra_common.dir/file_util.cpp.o -c /home/ports/pobj/citra-0.0.0.2104/citra-unified-source-20240303-0ff3440/src/common/file_util.cpp
In file included from /home/ports/pobj/citra-0.0.0.2104/citra-unified-source-20240303-0ff3440/src/common/file_util.cpp:13:
In file included from /usr/local/include/fmt/format.h:41:
/usr/local/include/fmt/base.h:1392:23: error: no matching member function for call to 'format'
    ctx.advance_to(cf.format(*static_cast<qualified_type*>(arg), ctx));
                   ~~~^~~~~~
/usr/local/include/fmt/base.h:1373:21: note: in instantiation of function template specialization 'fmt::detail::value<fmt::context>::format_custom_arg<FileUtil::UserPath, fmt::formatter<FileUtil::UserPath>>' requested here
    custom.format = format_custom_arg<
                    ^
/home/ports/pobj/citra-0.0.0.2104/citra-unified-source-20240303-0ff3440/src/common/file_util.cpp:878:9: note: in instantiation of function template specialization 'Common::Log::FmtLogMessage<FileUtil::UserPath, std::string>' requested here
        LOG_ERROR(Common_Filesystem, "Path is not a directory. UserPath: {}  filename: {}", path,
        ^
/home/ports/pobj/citra-0.0.0.2104/citra-unified-source-20240303-0ff3440/src/./common/logging/log.h:66:18: note: expanded from macro 'LOG_ERROR'
    Common::Log::FmtLogMessage(Common::Log::Class::log_class, Common::Log::Level::Error,           \
                 ^
/home/ports/pobj/citra-0.0.0.2104/citra-unified-source-20240303-0ff3440/src/./common/logging/formatter.h:17:10: note: candidate function template not viable: 'this' argument has type 'const fmt::formatter<FileUtil::UserPath>', but method is not marked const
    auto format(const T& value, FormatContext& ctx) -> decltype(ctx.out()) {
         ^
1 error generated.

Expected Behavior

It builds.

Reproduction Steps

Build with fmt 11.0.1.

Log File

n/a

System Configuration

CPU: GPU/Driver: RAM: OS: OpenBSD

PabloMK7 commented 4 months ago

Hello, this is not an issue of Citra per se, as you are trying to modify the code yourself. The reason of the compilation issue may be related to breaking changes in 11.0.1