mirror of
https://github.com/reactos/CMake.git
synced 2024-12-05 10:16:50 +00:00
9db3116226
Ancient versions of CMake required else(), endif(), and similar block termination commands to have arguments matching the command starting the block. This is no longer the preferred style. Run the following shell code: for c in else endif endforeach endfunction endmacro endwhile; do echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/' done >convert.sed && git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' | egrep -z -v '^(Utilities/cm|Source/kwsys/)' | egrep -z -v 'Tests/CMakeTests/While-Endwhile-' | xargs -0 sed -i -f convert.sed && rm convert.sed
121 lines
4.0 KiB
CMake
121 lines
4.0 KiB
CMake
# support for the Analog Devices toolchain for their DSPs
|
|
# Raphael Cotty" <raphael.cotty (AT) googlemail.com>
|
|
#
|
|
# it supports three architectures:
|
|
# Blackfin
|
|
# TS (TigerShark)
|
|
# 21k (Sharc 21xxx)
|
|
|
|
if(NOT ADSP)
|
|
|
|
set(ADSP TRUE)
|
|
|
|
set(CMAKE_STATIC_LIBRARY_SUFFIX ".dlb")
|
|
set(CMAKE_SHARED_LIBRARY_SUFFIX "")
|
|
set(CMAKE_EXECUTABLE_SUFFIX ".dxe")
|
|
|
|
# if ADSP_PROCESSOR has not been set, but CMAKE_SYSTEM_PROCESSOR has,
|
|
# assume that this is the processor name to use for the compiler
|
|
if(CMAKE_SYSTEM_PROCESSOR AND NOT ADSP_PROCESSOR)
|
|
set(ADSP_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR})
|
|
endif()
|
|
|
|
# if ADSP_PROCESSOR_SILICIUM_REVISION has not been set, use "none"
|
|
if(NOT ADSP_PROCESSOR_SILICIUM_REVISION)
|
|
set(ADSP_PROCESSOR_SILICIUM_REVISION "none")
|
|
endif()
|
|
|
|
# this file is included from the C and CXX files, so handle both here
|
|
|
|
get_filename_component(_ADSP_DIR "${CMAKE_C_COMPILER}" PATH)
|
|
if(NOT _ADSP_DIR)
|
|
get_filename_component(_ADSP_DIR "${CMAKE_CXX_COMPILER}" PATH)
|
|
endif()
|
|
if(NOT _ADSP_DIR)
|
|
get_filename_component(_ADSP_DIR "${CMAKE_ASM_COMPILER}" PATH)
|
|
endif()
|
|
|
|
# detect architecture
|
|
|
|
if(CMAKE_C_COMPILER MATCHES ccblkfn OR CMAKE_CXX_COMPILER MATCHES ccblkfn OR CMAKE_ASM_COMPILER MATCHES easmBLKFN)
|
|
if(NOT ADSP_PROCESSOR)
|
|
set(ADSP_PROCESSOR "ADSP-BF561")
|
|
endif()
|
|
set(ADSP_BLACKFIN TRUE)
|
|
set(_ADSP_FAMILY_DIR "${_ADSP_DIR}/Blackfin")
|
|
endif()
|
|
|
|
if(CMAKE_C_COMPILER MATCHES ccts OR CMAKE_CXX_COMPILER MATCHES ccts OR CMAKE_ASM_COMPILER MATCHES easmTS)
|
|
if(NOT ADSP_PROCESSOR)
|
|
set(ADSP_PROCESSOR "ADSP-TS101")
|
|
endif()
|
|
set(ADSP_TS TRUE)
|
|
set(_ADSP_FAMILY_DIR "${_ADSP_DIR}/TS")
|
|
endif()
|
|
|
|
if(CMAKE_C_COMPILER MATCHES cc21k OR CMAKE_CXX_COMPILER MATCHES cc21k OR CMAKE_ASM_COMPILER MATCHES easm21k)
|
|
if(NOT ADSP_PROCESSOR)
|
|
set(ADSP_PROCESSOR "ADSP-21060")
|
|
endif()
|
|
set(ADSP_21K TRUE)
|
|
|
|
set(_ADSP_FAMILY_DIR "${_ADSP_DIR}/21k") # default if nothing matches
|
|
if (ADSP_PROCESSOR MATCHES "210..$")
|
|
set(_ADSP_FAMILY_DIR "${_ADSP_DIR}/21k")
|
|
endif()
|
|
|
|
if (ADSP_PROCESSOR MATCHES "211..$")
|
|
set(_ADSP_FAMILY_DIR "${_ADSP_DIR}/211k")
|
|
endif()
|
|
|
|
if (ADSP_PROCESSOR MATCHES "212..$")
|
|
set(_ADSP_FAMILY_DIR "${_ADSP_DIR}/212k")
|
|
endif()
|
|
|
|
if (ADSP_PROCESSOR MATCHES "213..$")
|
|
set(_ADSP_FAMILY_DIR "${_ADSP_DIR}/213k")
|
|
endif()
|
|
|
|
set(_ADSP_FAMILY_DIR "${_ADSP_DIR}/21k")
|
|
endif()
|
|
|
|
|
|
link_directories("${_ADSP_FAMILY_DIR}/lib")
|
|
|
|
# vdk support
|
|
find_program( ADSP_VDKGEN_EXECUTABLE vdkgen "${_ADSP_FAMILY_DIR}/vdk" )
|
|
|
|
macro(ADSP_GENERATE_VDK VDK_GENERATED_HEADER VDK_GENERATED_SOURCE VDK_KERNEL_SUPPORT_FILE)
|
|
add_custom_command(
|
|
OUTPUT ${VDK_GENERATED_HEADER} ${VDK_GENERATED_SOURCE}
|
|
COMMAND ${ADSP_VDKGEN_EXECUTABLE} ${VDK_KERNEL_SUPPORT_FILE} -proc ${ADSP_PROCESSOR} -si-revision ${ADSP_PROCESSOR_SILICIUM_REVISION} -MM
|
|
DEPENDS ${VDK_KERNEL_SUPPORT_FILE}
|
|
)
|
|
endmacro()
|
|
|
|
# loader support
|
|
find_program( ADSP_ELFLOADER_EXECUTABLE elfloader "${_ADSP_FAMILY_DIR}" )
|
|
|
|
# BOOT_MODE: prom, flash, spi, spislave, UART, TWI, FIFO
|
|
# FORMAT: hex, ASCII, binary, include
|
|
# WIDTH: 8, 16
|
|
macro(ADSP_CREATE_LOADER_FILE TARGET_NAME BOOT_MODE FORMAT WIDTH)
|
|
add_custom_command(
|
|
TARGET ${TARGET_NAME}
|
|
POST_BUILD
|
|
COMMAND ${ADSP_ELFLOADER_EXECUTABLE} ${EXECUTABLE_OUTPUT_PATH}/${TARGET_NAME}.dxe -proc ${ADSP_PROCESSOR} -si-revision ${ADSP_PROCESSOR_SILICIUM_REVISION} -b ${BOOT_MODE} -f ${FORMAT} -width ${WIDTH} -o ${EXECUTABLE_OUTPUT_PATH}/${TARGET_NAME}.ldr
|
|
COMMENT "Building the loader file"
|
|
)
|
|
endmacro()
|
|
|
|
macro(ADSP_CREATE_LOADER_FILE_INIT TARGET_NAME BOOT_MODE FORMAT WIDTH INITIALIZATION_FILE)
|
|
add_custom_command(
|
|
TARGET ${TARGET_NAME}
|
|
POST_BUILD
|
|
COMMAND ${ADSP_ELFLOADER_EXECUTABLE} ${EXECUTABLE_OUTPUT_PATH}/${TARGET_NAME}.dxe -proc ${ADSP_PROCESSOR} -si-revision ${ADSP_PROCESSOR_SILICIUM_REVISION} -b ${BOOT_MODE} -f ${FORMAT} -width ${WIDTH} -o ${EXECUTABLE_OUTPUT_PATH}/${TARGET_NAME}.ldr -init ${INITIALIZATION_FILE}
|
|
COMMENT "Building the loader file"
|
|
)
|
|
endmacro()
|
|
|
|
endif()
|