freedv-gui/codec2-1.2.0/stm32/cmake/arm_header.cmake

65 lines
2.8 KiB
CMake

CMAKE_MINIMUM_REQUIRED(VERSION 2.8.4)
#custom command to use objcopy to create .bin files out of ELF files
function(make_mbed_firmware INPUT)
add_custom_command(TARGET ${INPUT}
COMMAND arm-none-eabi-objcopy -O binary ${INPUT} ${INPUT}_${MBED_TARGET}.bin
COMMENT "objcopying to make mbed compatible firmware")
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${INPUT}_${MBED_TARGET}.bin)
endfunction(make_mbed_firmware)
#assume we're using an LPC1768 model if it's not specified by -DMBED_TARGET=
if( NOT MBED_TARGET MATCHES "LPC1768" AND NOT MBED_TARGET MATCHES "LPC2368" AND NOT MBED_TARGET MATCHES "LPC11U24")
message(STATUS "invalid or no mbed target specified. Options are LPC1768, LPC2368 or LPC11U24. Assuming LPC1768 for now.
Target may be specified using -DMBED_TARGET=")
set(MBED_TARGET "LPC1768")
endif( NOT MBED_TARGET MATCHES "LPC1768" AND NOT MBED_TARGET MATCHES "LPC2368" AND NOT MBED_TARGET MATCHES "LPC11U24")
set(MBED_INCLUDE "${CMAKE_SOURCE_DIR}/mbed/${MBED_TARGET}/GCC_CS/")
#setup target specific object files
if(MBED_TARGET MATCHES "LPC1768")
set(MBED_PREFIX "LPC17")
set(CORE "cm3")
set(CHIP ${MBED_INCLUDE}sys.o
${MBED_INCLUDE}startup_LPC17xx.o)
elseif(MBED_TARGET MATCHES "LPC2368")
set(CHIP ${MBED_INCLUDE}vector_functions.o
${MBED_INCLUDE}vector_realmonitor.o
${MBED_INCLUDE}vector_table.o)
set(MBED_PREFIX "LPC23")
set(CORE "arm7")
elseif(MBED_TARGET MATCHES "LPC11U24")
set(CHIP ${MBED_INCLUDE}sys.o
${MBED_INCLUDE}startup_LPC11xx.o)
set(CORE "cm0")
set(MBED_PREFIX "LPC11U")
endif(MBED_TARGET MATCHES "LPC1768")
#setup precompiled mbed files which will be needed for all projects
set(CHIP ${CHIP}
${MBED_INCLUDE}system_${MBED_PREFIX}xx.o
${MBED_INCLUDE}cmsis_nvic.o
${MBED_INCLUDE}core_${CORE}.o)
#force min size build type
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE MinSizeRel CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
FORCE)
endif(NOT CMAKE_BUILD_TYPE)
#set correct linker script
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} \"-T${CMAKE_SOURCE_DIR}/mbed/${MBED_TARGET}/GCC_CS/${MBED_TARGET}.ld\" -static")
#find CodeSourcery Toolchain for appropriate include dirs
find_path(CSPATH arm-none-eabi-g++ PATHS ENV)
message(STATUS "${CSPATH} is where CodeSourcery is installed")
#setup directories for appropriate C, C++, mbed libraries and includes
include_directories(${MBED_INCLUDE})
include_directories(mbed)
include_directories(${CSPATH}/../arm-none-eabi/include)
include_directories(${CSPATH}/../arm-none-eabi/include/c++/4.6.1)
link_directories(${MBED_INCLUDE})