module: Create BCAT backend based upon Settings value on construction
This commit is contained in:
		
							parent
							
								
									2903f3524e
								
							
						
					
					
						commit
						68658a8385
					
				@ -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)
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user