module: Create BCAT backend based upon Settings value on construction
This commit is contained in:
parent
2903f3524e
commit
68658a8385
3 changed files with 36 additions and 1 deletions
|
@ -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
|
add_library(core STATIC
|
||||||
arm/arm_interface.h
|
arm/arm_interface.h
|
||||||
arm/arm_interface.cpp
|
arm/arm_interface.cpp
|
||||||
|
@ -82,6 +88,8 @@ add_library(core STATIC
|
||||||
file_sys/vfs_concat.h
|
file_sys/vfs_concat.h
|
||||||
file_sys/vfs_layered.cpp
|
file_sys/vfs_layered.cpp
|
||||||
file_sys/vfs_layered.h
|
file_sys/vfs_layered.h
|
||||||
|
file_sys/vfs_libzip.cpp
|
||||||
|
file_sys/vfs_libzip.h
|
||||||
file_sys/vfs_offset.cpp
|
file_sys/vfs_offset.cpp
|
||||||
file_sys/vfs_offset.h
|
file_sys/vfs_offset.h
|
||||||
file_sys/vfs_real.cpp
|
file_sys/vfs_real.cpp
|
||||||
|
@ -241,6 +249,9 @@ add_library(core STATIC
|
||||||
hle/service/audio/errors.h
|
hle/service/audio/errors.h
|
||||||
hle/service/audio/hwopus.cpp
|
hle/service/audio/hwopus.cpp
|
||||||
hle/service/audio/hwopus.h
|
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.cpp
|
||||||
hle/service/bcat/bcat.h
|
hle/service/bcat/bcat.h
|
||||||
hle/service/bcat/module.cpp
|
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 common PRIVATE audio_core video_core)
|
||||||
target_link_libraries(core PUBLIC Boost::boost PRIVATE fmt json-headers mbedtls opus unicorn open_source_archives)
|
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)
|
if (ENABLE_WEB_SERVICE)
|
||||||
target_compile_definitions(core PRIVATE -DENABLE_WEB_SERVICE)
|
target_compile_definitions(core PRIVATE -DENABLE_WEB_SERVICE)
|
||||||
target_link_libraries(core PRIVATE web_service)
|
target_link_libraries(core PRIVATE web_service)
|
||||||
|
|
|
@ -38,10 +38,22 @@ void Module::Interface::CreateBcatService(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
rb.PushIpcInterface<IBcatService>();
|
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)
|
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;
|
Module::Interface::~Interface() = default;
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
|
|
||||||
namespace Service::BCAT {
|
namespace Service::BCAT {
|
||||||
|
|
||||||
|
class Backend;
|
||||||
|
|
||||||
class Module final {
|
class Module final {
|
||||||
public:
|
public:
|
||||||
class Interface : public ServiceFramework<Interface> {
|
class Interface : public ServiceFramework<Interface> {
|
||||||
|
@ -19,6 +21,7 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::shared_ptr<Module> module;
|
std::shared_ptr<Module> module;
|
||||||
|
std::unique_ptr<Backend> backend;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue