diff --git a/scripts/cmake/misc.cmake b/scripts/cmake/misc.cmake index ac68b7627447..ee794780cd09 100644 --- a/scripts/cmake/misc.cmake +++ b/scripts/cmake/misc.cmake @@ -40,6 +40,15 @@ function(get_optimization_flag OUT_VAR) endif() endfunction() +# Zephyr duplicate in sof/zephyr/CMakeLists.txt; keep in sync +macro(is_zephyr ret) + if(CONFIG_ZEPHYR_SOF_MODULE) + set(${ret} TRUE) + else() + set(${ret} FALSE) + endif() +endmacro() + # Adds sources to target like target_sources, but assumes that # paths are relative to subdirectory. # Works like: diff --git a/src/init/CMakeLists.txt b/src/init/CMakeLists.txt index 91c8bb5d9a61..efa155793621 100644 --- a/src/init/CMakeLists.txt +++ b/src/init/CMakeLists.txt @@ -1,5 +1,18 @@ # SPDX-License-Identifier: BSD-3-Clause +is_zephyr(it_is) +if(it_is) ### Zephyr ### + + +zephyr_library_sources( + init.c + ext_manifest.c +) + + +else() ### Not Zephyr ### + + add_local_sources(sof init.c) add_library(ext_manifest STATIC "") @@ -21,3 +34,6 @@ sof_append_relative_path_definitions(ext_manifest) target_link_libraries(ext_manifest sof_options) target_link_libraries(sof_static_libraries INTERFACE ext_manifest) + + +endif() # Zephyr diff --git a/src/ipc/CMakeLists.txt b/src/ipc/CMakeLists.txt index 1b2a7efc804a..1859baa7a3ee 100644 --- a/src/ipc/CMakeLists.txt +++ b/src/ipc/CMakeLists.txt @@ -6,11 +6,33 @@ elseif (CONFIG_IPC_MAJOR_4) add_subdirectory(ipc4) endif() -add_local_sources(sof +set(base_files ipc-common.c ipc-helper.c ) +is_zephyr(it_is) +if(it_is) ### Zephyr ### + +zephyr_library_sources( + ${base_files} + dma-copy.c +) + +if (CONFIG_SOC_SERIES_INTEL_CAVS_V25 OR CONFIG_SOC_SERIES_INTEL_ACE) + zephyr_library_sources( + ipc-zephyr.c + ) +endif() + + +else() ### Not Zephyr ### + + +add_local_sources(sof + ${base_files} +) + if (CONFIG_TRACE) add_local_sources(sof dma-copy.c) @@ -19,3 +41,6 @@ endif() if (CONFIG_LIBRARY) return() endif() + + +endif() # Zephyr diff --git a/src/ipc/ipc3/CMakeLists.txt b/src/ipc/ipc3/CMakeLists.txt index 52d3280a14b4..eb791d1836a6 100644 --- a/src/ipc/ipc3/CMakeLists.txt +++ b/src/ipc/ipc3/CMakeLists.txt @@ -1,12 +1,28 @@ # SPDX-License-Identifier: BSD-3-Clause -add_local_sources(sof +set(common_files handler.c helper.c dai.c ) +is_zephyr(it_is) +if(it_is) ### Zephyr ### + +zephyr_library_sources( + ${common_files} + host-page-table.c +) + +else() ### Not Zephyr ### + +add_local_sources(sof + ${common_files} +) + if (CONFIG_HOST_PTABLE) add_local_sources(sof host-page-table.c) -endif() \ No newline at end of file +endif() + +endif() # Zephyr diff --git a/src/ipc/ipc4/CMakeLists.txt b/src/ipc/ipc4/CMakeLists.txt index 2e162e702672..c977d498619a 100644 --- a/src/ipc/ipc4/CMakeLists.txt +++ b/src/ipc/ipc4/CMakeLists.txt @@ -1,12 +1,36 @@ # SPDX-License-Identifier: BSD-3-Clause -add_local_sources(sof +set(common_files dai.c handler.c helper.c logging.c notification.c +) + + +is_zephyr(it_is) +if(it_is) ### Zephyr ### + + +zephyr_library_sources( + ${common_files} +) + +zephyr_library_sources_ifdef(CONFIG_AMS + ams_helpers.c +) + + +else() ### Not Zephyr #### + + +add_local_sources(sof + ${common_files} ams_helpers.c ) target_include_directories(sof_options INTERFACE ${RIMAGE_TOP}/src/include) + + +endif() # Zephyr diff --git a/zephyr/CMakeLists.txt b/zephyr/CMakeLists.txt index 37a51de920d9..99ec91034fc2 100644 --- a/zephyr/CMakeLists.txt +++ b/zephyr/CMakeLists.txt @@ -1,7 +1,7 @@ -# This is still WIP - Not fully validated on any platform. - # When west is installed, Zephyr's CMake invokes west to list and try to -# compile every Zephyr module that can be found. +# compile every Zephyr module that can be found. See +# sof/zephyr/module.yml and +# https://docs.zephyrproject.org/latest/develop/modules.html if(CONFIG_SOF) if(CONFIG_LIBRARY) @@ -114,14 +114,30 @@ zephyr_include_directories( # SOC level sources # Files that are commented may not be needed. + +# New, "de-centralized Zephyr" way. Requires "is_zephyr()" conditionals in +# the decentralized CMakeLists.txt files shared with XTOS. + +# XTOS duplicate in sof/scripts/misc.cmake; keep in sync +macro(is_zephyr ret) + if(CONFIG_ZEPHYR_SOF_MODULE) + set(${ret} TRUE) + else() + set(${ret} FALSE) + endif() +endmacro() + +add_subdirectory(../src/init/ init_unused_install/) +add_subdirectory(../src/ipc/ ipc_unused_install/) + + + +# Old way below: all .c files added by this giant CMake file. + # Intel TGL and CAVS 2.5 platforms if (CONFIG_SOC_SERIES_INTEL_CAVS_V25) # Driver sources - zephyr_library_sources( - ${SOF_IPC_PATH}/ipc-zephyr.c - ) - zephyr_library_sources_ifdef(CONFIG_INTEL_HDA ${SOF_DRIVERS_PATH}/intel/hda/hda-dma.c ) @@ -147,11 +163,6 @@ endif() # Intel ACE 1.5 and newer platforms if (CONFIG_SOC_SERIES_INTEL_ACE) - # Driver sources - zephyr_library_sources( - ${SOF_IPC_PATH}/ipc-zephyr.c - ) - # Platform sources zephyr_library_sources( ${SOF_PLATFORM_PATH}/intel/ace/platform.c @@ -309,9 +320,6 @@ zephyr_include_directories(${SOF_PLATFORM_PATH}/${PLATFORM}/include) # Mandatory Files used on all platforms. # Commented files will be added/removed as integration dictates. zephyr_library_sources( - ${SOF_IPC_PATH}/dma-copy.c - ${SOF_IPC_PATH}/ipc-common.c - ${SOF_IPC_PATH}/ipc-helper.c # SOF math utilities ${SOF_MATH_PATH}/decibels.c @@ -344,8 +352,6 @@ zephyr_library_sources( ${SOF_AUDIO_PATH}/pipeline/pipeline-xrun.c # SOF core infrastructure - runs on top of Zephyr - ${SOF_SRC_PATH}/init/init.c - ${SOF_SRC_PATH}/init/ext_manifest.c ${SOF_SRC_PATH}/arch/xtensa/drivers/cache_attr.c ${SOF_SRC_PATH}/schedule/zephyr_domain.c ${SOF_SRC_PATH}/schedule/schedule.c @@ -392,20 +398,6 @@ else() ) endif() -zephyr_library_sources_ifdef(CONFIG_IPC_MAJOR_3 - ${SOF_IPC_PATH}/ipc3/handler.c - ${SOF_IPC_PATH}/ipc3/helper.c - ${SOF_IPC_PATH}/ipc3/dai.c - ${SOF_IPC_PATH}/ipc3/host-page-table.c -) - -zephyr_library_sources_ifdef(CONFIG_IPC_MAJOR_4 - ${SOF_IPC_PATH}/ipc4/handler.c - ${SOF_IPC_PATH}/ipc4/helper.c - ${SOF_IPC_PATH}/ipc4/dai.c - ${SOF_IPC_PATH}/ipc4/logging.c - ${SOF_IPC_PATH}/ipc4/notification.c -) zephyr_library_sources_ifdef(CONFIG_TRACE ${SOF_SRC_PATH}/trace/dma-trace.c @@ -760,7 +752,6 @@ zephyr_library_sources_ifdef(CONFIG_HAVE_AGENT zephyr_library_sources_ifdef(CONFIG_AMS ${SOF_LIB_PATH}/ams.c - ${SOF_IPC_PATH}/ipc4/ams_helpers.c ) zephyr_library_sources_ifdef(CONFIG_GDB_DEBUG