Merge pull request #3456 from hubslave/master

Fix build on OpenBSD
This commit is contained in:
Ben 2018-03-02 21:58:43 +01:00 committed by GitHub
commit 7c1a22358a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 44 additions and 11 deletions

View File

@ -21,6 +21,7 @@ endif()
# libfmt
add_subdirectory(fmt)
add_library(fmt::fmt ALIAS fmt)
# getopt
if (MSVC)

2
externals/fmt vendored

@ -1 +1 @@
Subproject commit ac5484c4e7365b59d8c7e14db6778de26635e428
Subproject commit 4d35f94133ed14794e53c9f8627d047b408e0dc7

View File

@ -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);

View File

@ -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;
}

View File

@ -94,7 +94,9 @@ static const std::unordered_map<int, int> 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},

View File

@ -3,9 +3,9 @@
// Refer to the license.txt file included.
#include <future>
#include <json.hpp>
#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 {

18
src/web_service/json.h Normal file
View File

@ -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(<string_view>) && __has_include(<experimental/string_view>)
# include <experimental/string_view>
# define string_view experimental::string_view
# include <json.hpp>
# undef string_view
#else
# include <json.hpp>
#endif
// clang-format on

View File

@ -7,9 +7,9 @@
#include <array>
#include <future>
#include <string>
#include <json.hpp>
#include "common/announce_multiplayer_room.h"
#include "common/telemetry.h"
#include "web_service/json.h"
namespace WebService {

View File

@ -2,7 +2,7 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include <json.hpp>
#include "web_service/json.h"
#include "web_service/verify_login.h"
#include "web_service/web_backend.h"