From adf4d199ee400700cad47c633975cb5a97082e44 Mon Sep 17 00:00:00 2001 From: Guennadi Liakhovetski Date: Fri, 28 Mar 2025 14:49:27 +0100 Subject: [PATCH] library-manager: make disabling INTEL_MODULES possible IADK is rarely needed, but when enabled it adds C++ objects to the build, while otherwise builds are pure C. Disabling INTEL_MODULES however is currently broken. Fix it to make modular builds without IADK support possible. Signed-off-by: Guennadi Liakhovetski --- src/audio/module_adapter/CMakeLists.txt | 7 +++++-- .../module_adapter/library/native_system_service.h | 1 - src/library_manager/lib_manager.c | 14 ++++---------- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/audio/module_adapter/CMakeLists.txt b/src/audio/module_adapter/CMakeLists.txt index 4b0801404bc4..505431e16613 100644 --- a/src/audio/module_adapter/CMakeLists.txt +++ b/src/audio/module_adapter/CMakeLists.txt @@ -25,17 +25,20 @@ if(zephyr) ### Zephyr ### zephyr_library_import(xa_mp3_enc ${CONFIG_CADENCE_CODEC_MP3_ENC_LIB}) endif() - zephyr_include_directories_ifdef(CONFIG_INTEL_MODULES + zephyr_include_directories_ifdef(CONFIG_LIBRARY_MANAGER ${SOF_SRC_PATH}/include/sof/audio/module_adapter/iadk/ ${SOF_SRC_PATH}/include/sof/audio/module_adapter/library/ ) + zephyr_library_sources_ifdef(CONFIG_LIBRARY_MANAGER + library/native_system_agent.c + ) + zephyr_library_sources_ifdef(CONFIG_INTEL_MODULES module/modules.c iadk/module_initial_settings_concrete.cpp iadk/iadk_module_adapter.cpp iadk/system_agent.cpp - library/native_system_agent.c library/native_system_service.c ) diff --git a/src/include/sof/audio/module_adapter/library/native_system_service.h b/src/include/sof/audio/module_adapter/library/native_system_service.h index db054cfd821c..ab8188a2eca4 100644 --- a/src/include/sof/audio/module_adapter/library/native_system_service.h +++ b/src/include/sof/audio/module_adapter/library/native_system_service.h @@ -7,7 +7,6 @@ #define NATIVE_SYSTEM_SERVICE_H #include -#include #ifdef __cplusplus extern "C" { diff --git a/src/library_manager/lib_manager.c b/src/library_manager/lib_manager.c index dbb162de3b52..c5fd1afda6fc 100644 --- a/src/library_manager/lib_manager.c +++ b/src/library_manager/lib_manager.c @@ -485,7 +485,6 @@ const struct sof_man_module *lib_manager_get_module_manifest(const uint32_t modu SOF_MAN_MODULE_OFFSET(entry_index)); } -#if CONFIG_INTEL_MODULES /* * \brief Load module code, allocate its instance and create a module adapter component. * \param[in] drv - component driver pointer. @@ -584,7 +583,9 @@ static void lib_manager_prepare_module_adapter(struct comp_driver *drv, const st drv->ops.dai_ts_start = module_adapter_ts_start_op; drv->ops.dai_ts_stop = module_adapter_ts_stop_op; drv->ops.dai_ts_get = module_adapter_ts_get_op; +#if CONFIG_INTEL_MODULES drv->adapter_ops = &processing_module_adapter_interface; +#endif } int lib_manager_register_module(const uint32_t component_id) @@ -649,7 +650,8 @@ int lib_manager_register_module(const uint32_t component_id) build_info->format); /* Check if module is IADK */ - if (build_info->format == IADK_MODULE_API_BUILD_INFO_FORMAT && + if (IS_ENABLED(CONFIG_INTEL_MODULES) && + build_info->format == IADK_MODULE_API_BUILD_INFO_FORMAT && build_info->api_version_number.full == IADK_MODULE_API_CURRENT_VERSION) { /* Use module_adapter functions */ drv->ops.create = module_adapter_new; @@ -679,14 +681,6 @@ int lib_manager_register_module(const uint32_t component_id) return ret; } -#else /* CONFIG_INTEL_MODULES */ -int lib_manager_register_module(const uint32_t component_id) -{ - tr_err(&lib_manager_tr, "Dynamic module loading is not supported"); - return -ENOTSUP; -} -#endif /* CONFIG_INTEL_MODULES */ - static int lib_manager_dma_buffer_alloc(struct lib_manager_dma_ext *dma_ext, uint32_t size) {