diff options
author | Chris Wright <chris.wright@mqa.co.uk> | 2022-03-24 11:35:40 (GMT) |
---|---|---|
committer | Chris Wright <chris.wright@mqa.co.uk> | 2022-04-04 16:05:09 (GMT) |
commit | 87142bbd5f94de9591b0a5531e427a5f491f56fd (patch) | |
tree | 51605139a9795d58fadc2b2a2fe693795cebe41a /Modules/Platform/ADSP-Common.cmake | |
parent | e9eabb0dcdb2fd8084135e02a1ad63047f8ae772 (diff) | |
download | CMake-87142bbd5f94de9591b0a5531e427a5f491f56fd.zip CMake-87142bbd5f94de9591b0a5531e427a5f491f56fd.tar.gz CMake-87142bbd5f94de9591b0a5531e427a5f491f56fd.tar.bz2 |
ADSP: Add dedicated platform module
Diffstat (limited to 'Modules/Platform/ADSP-Common.cmake')
-rw-r--r-- | Modules/Platform/ADSP-Common.cmake | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/Modules/Platform/ADSP-Common.cmake b/Modules/Platform/ADSP-Common.cmake new file mode 100644 index 0000000..2ba90b2 --- /dev/null +++ b/Modules/Platform/ADSP-Common.cmake @@ -0,0 +1,36 @@ +include_guard() + +macro(__platform_adsp_init) + if(NOT CMAKE_ADSP_PLATFORM_INITIALIZED) + if(NOT CMAKE_SYSTEM_PROCESSOR) + message(FATAL_ERROR "ADSP: CMAKE_SYSTEM_PROCESSOR is required but not set") + endif() + + set(CMAKE_ADSP_PROCESSOR "ADSP-${CMAKE_SYSTEM_PROCESSOR}") + string(TOUPPER "${CMAKE_ADSP_PROCESSOR}" CMAKE_ADSP_PROCESSOR) + + set(CMAKE_ADSP_COMPILER_NAME cc21k.exe) + if(CMAKE_ADSP_PROCESSOR MATCHES "^ADSP-BF") + set(CMAKE_ADSP_COMPILER_NAME ccblkfn.exe) + endif() + + set(CMAKE_ADSP_PLATFORM_INITIALIZED TRUE) + endif() +endmacro() + +macro(__platform_adsp lang) + __platform_adsp_init() + set(CMAKE_${lang}_COMPILER "${CMAKE_ADSP_ROOT}/${CMAKE_ADSP_COMPILER_NAME}") + + execute_process( + COMMAND "${CMAKE_${lang}_COMPILER}" "-proc=${CMAKE_ADSP_PROCESSOR}" "-version" + OUTPUT_QUIET ERROR_QUIET + RESULT_VARIABLE _adsp_is_valid_proc + ) + if(NOT _adsp_is_valid_proc EQUAL 0) + message(FATAL_ERROR + "ADSP: unsupported processor '${CMAKE_ADSP_PROCESSOR}' for CMAKE_${lang}_COMPILER:\n" + " ${CMAKE_${lang}_COMPILER}" + ) + endif() +endmacro() |