diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 88cc52588..b6909ce15 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -21,6 +21,7 @@ endif() # libfmt add_subdirectory(fmt) +add_library(fmt::fmt ALIAS fmt) # getopt if (MSVC) diff --git a/externals/fmt b/externals/fmt index ac5484c4e..4d35f9413 160000 --- a/externals/fmt +++ b/externals/fmt @@ -1 +1 @@ -Subproject commit ac5484c4e7365b59d8c7e14db6778de26635e428 +Subproject commit 4d35f94133ed14794e53c9f8627d047b408e0dc7 diff --git a/src/common/swap.h b/src/common/swap.h index d94cbe6b2..4a4012d1a 100644 --- a/src/common/swap.h +++ b/src/common/swap.h @@ -103,7 +103,19 @@ inline __attribute__((always_inline)) u64 swap64(u64 _data) { return __builtin_bswap64(_data); } #elif defined(__Bitrig__) || defined(__OpenBSD__) -// swap16, swap32, swap64 are left as is +// redefine swap16, swap32, swap64 as inline functions +#undef swap16 +#undef swap32 +#undef swap64 +inline u16 swap16(u16 _data) { + return __swap16(_data); +} +inline u32 swap32(u32 _data) { + return __swap32(_data); +} +inline u64 swap64(u64 _data) { + return __swap64(_data); +} #elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) inline u16 swap16(u16 _data) { return bswap16(_data); diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index 045968065..bd833dd70 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp @@ -150,15 +150,15 @@ void ServiceFrameworkBase::ReportUnimplementedFunction(u32* cmd_buf, const Funct int num_params = header.normal_params_size + header.translate_params_size; std::string function_name = info == nullptr ? fmt::format("{:#08x}", cmd_buf[0]) : info->name; - fmt::MemoryWriter w; - w.write("function '{}': port='{}' cmd_buf={{[0]={:#x}", function_name, service_name, - cmd_buf[0]); + fmt::memory_buffer buf; + fmt::format_to(buf, "function '{}': port='{}' cmd_buf={{[0]={:#x}", function_name, service_name, + cmd_buf[0]); for (int i = 1; i <= num_params; ++i) { - w.write(", [{}]={:#x}", i, cmd_buf[i]); + fmt::format_to(buf, ", [{}]={:#x}", i, cmd_buf[i]); } - w << '}'; + buf.push_back('}'); - LOG_ERROR(Service, "unknown / unimplemented %s", w.c_str()); + LOG_ERROR(Service, "unknown / unimplemented %s", fmt::to_string(buf).c_str()); // TODO(bunnei): Hack - ignore error cmd_buf[1] = 0; } diff --git a/src/core/hle/service/soc_u.cpp b/src/core/hle/service/soc_u.cpp index 21136772a..0309c51e3 100644 --- a/src/core/hle/service/soc_u.cpp +++ b/src/core/hle/service/soc_u.cpp @@ -94,7 +94,9 @@ static const std::unordered_map error_map = {{ {ERRNO(EMFILE), 33}, {EMLINK, 34}, {ERRNO(EMSGSIZE), 35}, +#ifdef EMULTIHOP {ERRNO(EMULTIHOP), 36}, +#endif {ERRNO(ENAMETOOLONG), 37}, {ERRNO(ENETDOWN), 38}, {ERRNO(ENETRESET), 39}, diff --git a/src/web_service/announce_room_json.cpp b/src/web_service/announce_room_json.cpp index d2b79cbae..87f9327bb 100644 --- a/src/web_service/announce_room_json.cpp +++ b/src/web_service/announce_room_json.cpp @@ -3,9 +3,9 @@ // Refer to the license.txt file included. #include -#include #include "common/logging/log.h" #include "web_service/announce_room_json.h" +#include "web_service/json.h" #include "web_service/web_backend.h" namespace AnnounceMultiplayerRoom { diff --git a/src/web_service/json.h b/src/web_service/json.h new file mode 100644 index 000000000..88b31501e --- /dev/null +++ b/src/web_service/json.h @@ -0,0 +1,18 @@ +// Copyright 2018 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +// This hack is needed to support json.hpp on platforms where the C++17 stdlib +// lacks std::string_view. See https://github.com/nlohmann/json/issues/735. +// clang-format off +#if !__has_include() && __has_include() +# include +# define string_view experimental::string_view +# include +# undef string_view +#else +# include +#endif +// clang-format on diff --git a/src/web_service/telemetry_json.h b/src/web_service/telemetry_json.h index ae4a6f3c7..27f71b6ba 100644 --- a/src/web_service/telemetry_json.h +++ b/src/web_service/telemetry_json.h @@ -7,9 +7,9 @@ #include #include #include -#include #include "common/announce_multiplayer_room.h" #include "common/telemetry.h" +#include "web_service/json.h" namespace WebService { diff --git a/src/web_service/verify_login.cpp b/src/web_service/verify_login.cpp index 1bc3b5afe..05082a309 100644 --- a/src/web_service/verify_login.cpp +++ b/src/web_service/verify_login.cpp @@ -2,7 +2,7 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. -#include +#include "web_service/json.h" #include "web_service/verify_login.h" #include "web_service/web_backend.h"