summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZach Hilman <zachhilman@gmail.com>2019-04-29 00:49:46 +0200
committerZach Hilman <zachhilman@gmail.com>2019-09-30 23:23:26 +0200
commit68658a8385b74454c8523efe95ceb81b34bb8812 (patch)
treec66190e40aa52d7de174653bccbdff78104865b1
parentbcat: Add BCAT backend for Boxcat service (diff)
downloadyuzu-68658a8385b74454c8523efe95ceb81b34bb8812.tar
yuzu-68658a8385b74454c8523efe95ceb81b34bb8812.tar.gz
yuzu-68658a8385b74454c8523efe95ceb81b34bb8812.tar.bz2
yuzu-68658a8385b74454c8523efe95ceb81b34bb8812.tar.lz
yuzu-68658a8385b74454c8523efe95ceb81b34bb8812.tar.xz
yuzu-68658a8385b74454c8523efe95ceb81b34bb8812.tar.zst
yuzu-68658a8385b74454c8523efe95ceb81b34bb8812.zip
-rw-r--r--src/core/CMakeLists.txt20
-rw-r--r--src/core/hle/service/bcat/module.cpp14
-rw-r--r--src/core/hle/service/bcat/module.h3
3 files changed, 36 insertions, 1 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index a6b56c9c6..3416854db 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -1,3 +1,9 @@
+if (YUZU_ENABLE_BOXCAT)
+ set(BCAT_BOXCAT_ADDITIONAL_SOURCES hle/service/bcat/backend/boxcat.cpp hle/service/bcat/backend/boxcat.h)
+else()
+ set(BCAT_BOXCAT_ADDITIONAL_SOURCES)
+endif()
+
add_library(core STATIC
arm/arm_interface.h
arm/arm_interface.cpp
@@ -82,6 +88,8 @@ add_library(core STATIC
file_sys/vfs_concat.h
file_sys/vfs_layered.cpp
file_sys/vfs_layered.h
+ file_sys/vfs_libzip.cpp
+ file_sys/vfs_libzip.h
file_sys/vfs_offset.cpp
file_sys/vfs_offset.h
file_sys/vfs_real.cpp
@@ -241,6 +249,9 @@ add_library(core STATIC
hle/service/audio/errors.h
hle/service/audio/hwopus.cpp
hle/service/audio/hwopus.h
+ hle/service/bcat/backend/backend.cpp
+ hle/service/bcat/backend/backend.h
+ ${BCAT_BOXCAT_ADDITIONAL_SOURCES}
hle/service/bcat/bcat.cpp
hle/service/bcat/bcat.h
hle/service/bcat/module.cpp
@@ -499,6 +510,15 @@ create_target_directory_groups(core)
target_link_libraries(core PUBLIC common PRIVATE audio_core video_core)
target_link_libraries(core PUBLIC Boost::boost PRIVATE fmt json-headers mbedtls opus unicorn open_source_archives)
+
+if (YUZU_ENABLE_BOXCAT)
+ get_directory_property(OPENSSL_LIBS
+ DIRECTORY ${PROJECT_SOURCE_DIR}/externals/libressl
+ DEFINITION OPENSSL_LIBS)
+ target_compile_definitions(core PRIVATE -DCPPHTTPLIB_OPENSSL_SUPPORT -DYUZU_ENABLE_BOXCAT)
+ target_link_libraries(core PRIVATE httplib json-headers ${OPENSSL_LIBS} zip)
+endif()
+
if (ENABLE_WEB_SERVICE)
target_compile_definitions(core PRIVATE -DENABLE_WEB_SERVICE)
target_link_libraries(core PRIVATE web_service)
diff --git a/src/core/hle/service/bcat/module.cpp b/src/core/hle/service/bcat/module.cpp
index b7bd738fc..32d3d5cfc 100644
--- a/src/core/hle/service/bcat/module.cpp
+++ b/src/core/hle/service/bcat/module.cpp
@@ -38,10 +38,22 @@ void Module::Interface::CreateBcatService(Kernel::HLERequestContext& ctx) {
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
rb.Push(RESULT_SUCCESS);
rb.PushIpcInterface<IBcatService>();
+namespace {
+std::unique_ptr<Backend> CreateBackendFromSettings(DirectoryGetter getter) {
+ const auto backend = Settings::values.bcat_backend;
+
+#ifdef YUZU_ENABLE_BOXCAT
+ if (backend == "boxcat")
+ return std::make_unique<Boxcat>(std::move(getter));
+#endif
+
+ return std::make_unique<NullBackend>(std::move(getter));
}
+} // Anonymous namespace
Module::Interface::Interface(std::shared_ptr<Module> module, const char* name)
- : ServiceFramework(name), module(std::move(module)) {}
+ : ServiceFramework(name), module(std::move(module)),
+ backend(CreateBackendFromSettings(&Service::FileSystem::GetBCATDirectory)) {}
Module::Interface::~Interface() = default;
diff --git a/src/core/hle/service/bcat/module.h b/src/core/hle/service/bcat/module.h
index f0d63cab0..4af363bfd 100644
--- a/src/core/hle/service/bcat/module.h
+++ b/src/core/hle/service/bcat/module.h
@@ -8,6 +8,8 @@
namespace Service::BCAT {
+class Backend;
+
class Module final {
public:
class Interface : public ServiceFramework<Interface> {
@@ -19,6 +21,7 @@ public:
protected:
std::shared_ptr<Module> module;
+ std::unique_ptr<Backend> backend;
};
};