This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Compiler/LAUNCHXL-CC1352P: Using CMake with TI armcl and armar

Part Number: LAUNCHXL-CC1352P

Tool/software: TI C/C++ Compiler

Hi,

I want to include some open-source stacks in my code for the CC1352P1, so I'm trying to use cmake with armcl compiler and armar archiver.

Here is my code:

cmake_minimum_required(VERSION 3.10)

set (CMAKE_CONFIGURATION_TYPES "Debug;Release")

project(lwIP)

# Example lwIP application
set(LWIP_DIR "/Users/sramnath/lwip_blinky/lwip")

set (LWIP_DEFINITIONS LWIP_DEBUG=1)

set(CMAKE_VERBOSE_MAKEFILE ON)


# Generate docs before creating source package
include(${LWIP_DIR}/contrib/ports/CMakeCommon.cmake)

add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
if (TARGET lwipdocs)
  add_dependencies(dist lwipdocs)
endif()

set(TIRTOS_XDC_RT "/Applications/ti_ccs9/xdctools_3_32_00_06_core")
set(TIRTOS_BIOS_RT "/Applications/ti_ccs9/tirtos_cc13xx_cc26xx_2_21_01_08/products/bios_6_46_01_38/packages/ti/sysbios")
set(TIRTOS_BIOS_INC "/Applications/ti_ccs9/tirtos_cc13xx_cc26xx_2_21_01_08/products/bios_6_46_01_38/packages")
set(TIRTOS_TARGET_INC "/Applications/ti_ccs9/tirtos_cc13xx_cc26xx_2_21_01_08/products/bios_6_46_01_38/packages") 
set(TIRTOS_COMPILER "/Applications/ti_ccs9/ccs9/ccs/tools/compiler/ti-cgt-arm_18.12.2.LTS")
set(TIRTOS_SDK "/Applications/ti_ccs9/simplelink_cc13x2_26x2_sdk_3_20_00_68")
set(TIRTOS_CROSS_COMPILER "/Applications/ti_ccs9/simplelink_cc13x2_26x2_sdk_3_20_00_68/kernel/tirtos/packages/gnu/targets/arm/libs/install-native/arm-none-eabi")


set(LWIP_TIRTOS_SRCS
	${TIRTOS_XDC_RT}/packages
	${TIRTOS_BIOS_RT}
	${TIRTOS_BIOS_INC}
	${TIRTOS_BIOS_INC}/gnu/targets
	${TIRTOS_TARGET_INC}
	${TIRTOS_COMPILER}
	${TIRTOS_SDK}/source
	${TIRTOS_SDK}/source/ti/posix/ccs
)

set (LWIP_INCLUDE_DIRS
    "${LWIP_DIR}/src/include"
    "${LWIP_DIR}"
    "${LWIP_DIR}/contrib/"
    "${LWIP_DIR}/contrib/ports/tirtos/include"
    "${LWIP_DIR}/contrib/examples/test"
#    "/Users/sramnath/lwip_out/lwip/contrib/ports/tirtos"
    "${LWIP_DIR}/contrib/ports/tirtos"
    "${LWIP_TIRTOS_SRCS}"		
)


set (LWIP_COMPILE_OPTIONS
        "-Dxdc_target_types__=${TIRTOS_BIOS_INC}/gnu/targets/arm/std.h"
        "-Dxdc_target_name__=M3"
	"-DDeviceFamily_CC13X2"
)

set (LWIP_CCOPTS
	"--endian=little --mv7M4 --abi=eabi -q -ms --opt_for_speed=0 --program_level_compile -o3 -g --optimize_with_debug -Dti_sysbios_knl_Task_minimizeLatency__D=FALSE -Dti_sysbios_family_arm_cc26xx_Boot_driverlibVersion=2 -Dti_sysbios_knl_Clock_stopCheckNext__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_enableException__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_disablePriority__D=32U -Dti_sysbios_family_arm_m3_Hwi_numSparseInterrupts__D=0U"
)

set (LWIP_BIOS_OPTS
	"-Dti_sysbios_BIOS_swiEnabled__D=TRUE"
	"-Dti_sysbios_BIOS_taskEnabled__D=TRUE"
	"-Dti_sysbios_BIOS_clockEnabled__D=TRUE"
	"-Dti_sysbios_BIOS_runtimeCreatesEnabled__D=TRUE"
	"-Dti_sysbios_hal_Hwi_DISABLE_ALL_HOOKS"
	"-Dti_sysbios_knl_Swi_DISABLE_ALL_HOOKS"
	"-Dti_sysbios_BIOS_smpEnabled__D=FALSE"
	"-Dti_sysbios_Build_useHwiMacros"
	"-Dti_sysbios_knl_Swi_numPriorities__D=6"
	"-Dti_sysbios_knl_Task_deleteTerminatedTasks__D=FALSE"
	"-Dti_sysbios_knl_Task_numPriorities__D=16"
	"-Dti_sysbios_knl_Task_checkStackFlag__D=FALSE"
	"-Dti_sysbios_knl_Task_initStackFlag__D=TRUE"
	"-Dti_sysbios_knl_Task_DISABLE_ALL_HOOKS"
	"-Dti_sysbios_knl_Clock_TICK_SOURCE=ti_sysbios_knl_Clock_TickSource_TIMER"
	"-Dti_sysbios_knl_Clock_TICK_MODE=ti_sysbios_knl_Clock_TickMode_DYNAMIC"
	"-Dti_sysbios_hal_Core_delegate_getId=ti_sysbios_hal_CoreNull_getId__E"
	"-Dti_sysbios_hal_Core_delegate_interruptCore=ti_sysbios_hal_CoreNull_interruptCore__E"
	"-Dti_sysbios_hal_Core_delegate_lock=ti_sysbios_hal_CoreNull_lock__E"
	"-Dti_sysbios_hal_Core_delegate_unlock=ti_sysbios_hal_CoreNull_unlock__E"
	"-Dti_sysbios_hal_Core_numCores__D=1"
	"-Dti_sysbios_hal_CoreNull_numCores__D=1"
	"-Dti_sysbios_utils_Load_taskEnabled__D=TRUE"
	"-Dti_sysbios_utils_Load_swiEnabled__D=FALSE"
	"-Dti_sysbios_utils_Load_hwiEnabled__D=FALSE"
	"-Dti_sysbios_family_arm_m3_Hwi_dispatcherSwiSupport__D=TRUE"
	"-Dti_sysbios_family_arm_m3_Hwi_dispatcherTaskSupport__D=TRUE"
	"-Dti_sysbios_family_arm_m3_Hwi_dispatcherAutoNestingSupport__D=TRUE"
	"-Dti_sysbios_knl_Semaphore_supportsEvents__D=FALSE"
	"-Dti_sysbios_knl_Semaphore_supportsPriority__D=FALSE"
	"-Dxdc_runtime_Assert_DISABLE_ALL"
	"-Dxdc_runtime_Log_DISABLE_ALL"
)


# Compiler options

set(TI_CGT_PATH "${TIRTOS_COMPILER}")
set(CMAKE_C_COMPILER "${TIRTOS_COMPILER}/bin/armcl")
set(CMAKE_C_FLAGS "-c ${LWIP_CCOPTS} -I ${TIRTOS_COMPILER}/include -I ${TIRTOS_SDK}/kernel/tirtos/packages" CACHE STRING "" FORCE)

# skip compiler tests
set(CMAKE_C_COMPILER_WORKS 1)

# add default include and lib directories
include_directories(${TIRTOS_COMPILER}/include)
link_directories(${TIRTOS_COMPILER}/lib)

# set target environment
set(CMAKE_FIND_ROOT_PATH ${TIRTOS_COMPILER} )

set(PLATFORM_CONFIG_C_FLAGS "-mv7M4 --code_state=16 --float_support=FPv4SPD16 --abi=eabi -me -O2 -g --include_path=${TIRTOS_COMPILER}/include  -gcc --define=ccs=ccs  --diag_warning=225 --display_error_number --diag_wrap=off --gen_func_subsections=on --ual" CACHE STRING "platform config c flags")

# combine flags to C and C++ flags
SET(CMAKE_C_FLAGS "${PLATFORM_CONFIG_C_FLAGS} ${CMAKE_C_FLAGS}" CACHE STRING "platform config c flags")
SET(CMAKE_CXX_FLAGS "${PLATFORM_CONFIG_CXX_FLAGS} ${CMAKE_CXX_FLAGS}" CACHESTRING "platform config c flags")


SET(CMAKE_EXE_LINKER_FLAGS "-mv7M4 --code_state=16 --float_support=FPv4SPD16 --abi=eabi -me -O2 -g --define=ccs=\"ccs\" --diag_warning=225 --display_error_number --diag_wrap=off --gen_func_subsections=on --ual -z --stack_size=256 -mblinky_ccs.map --heap_size=0 -i${TIRTOS_COMPILER}/lib -i${TIRTOS_COMPILER}/include --reread_libs --warn_sections --display_error_number --diag_wrap=off --xml_link_info=blinky_linkInfo.xml --rom_model" CACHE STRING "")

# change to armar
SET(CMAKE_AR "${TIRTOS_COMPILER}/bin/armar")
SET(CMAKE_AR_FLAGS "-av")
SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> ${CMAKE_AR_FLAGS} <TARGET> <LINK_FLAGS> <OBJECTS>")

include(${LWIP_DIR}/src/Filelists.cmake)
include(${LWIP_DIR}/contrib/Filelists.cmake)
include(${LWIP_DIR}/contrib/ports/tirtos/Filelists.cmake)

set (cc1352p1_board_SRCS
        ${LWIP_DIR}/CC1352P1_LAUNCHXL_TIRTOS.cmd
        ${LWIP_DIR}/CC1352P1_LAUNCHXL_fxns.c
        ${LWIP_DIR}/CC1352P1_LAUNCHXL.c
        ${LWIP_DIR}/ccfg.c
)

add_library(lwipboard EXCLUDE_FROM_ALL ${cc1352p1_board_SRCS})
target_include_directories(lwipboard PRIVATE ${LWIP_INCLUDE_DIRS})
target_compile_options(lwipboard PRIVATE ${LWIP_COMPILER_FLAGS} ${LWIP_COMPILER_OPTIONS})
target_compile_definitions(lwipboard PRIVATE ${LWIP_DEFINITIONS})


add_executable(test ${LWIP_DIR}/main.c )
target_include_directories(test PRIVATE ${LWIP_INCLUDE_DIRS})
target_compile_options(test PRIVATE ${LWIP_COMPILER_FLAGS} ${LWIP_COMPILER_OPTIONS})
target_link_libraries(test ${LWIP_SANITIZER_LIBS} lwipboard)
add_definitions( ${LWIP_COMPILE_OPTIONS} ${LWIP_CCOPTS} ${LWIP_BIOS_OPTS})

I am able to build but when I get to linking static libraries, I get the following error : 

[ 60%] Linking C static library liblwipboard.a
/usr/local/Cellar/cmake/3.15.5/bin/cmake -P CMakeFiles/lwipboard.dir/cmake_clean_target.cmake
/usr/local/Cellar/cmake/3.15.5/bin/cmake -E cmake_link_script CMakeFiles/lwipboard.dir/link.txt --verbose=1
/Applications/ti_ccs9/ccs9/ccs/tools/compiler/ti-cgt-arm_18.12.2.LTS/bin/armar -av liblwipboard.a  CMakeFiles/lwipboard.dir/CC1352P1_LAUNCHXL_fxns.c.o CMakeFiles/lwipboard.dir/CC1352P1_LAUNCHXL.c.o CMakeFiles/lwipboard.dir/ccfg.c.o
  ==>  new archive 'liblwipboard.a'
  ==>  building archive 'liblwipboard.a'
  -->  error: 'CMakeFiles/lwipboard.dir/CC1352P1_LAUNCHXL_fxns.c.o' not found
  -->  error: 'CMakeFiles/lwipboard.dir/CC1352P1_LAUNCHXL.c.o' not found
  -->  error: 'CMakeFiles/lwipboard.dir/ccfg.c.o' not found
make[2]: *** [liblwipboard.a] Error 1
make[2]: *** Deleting file `liblwipboard.a'
make[1]: *** [CMakeFiles/lwipboard.dir/all] Error 2
make: *** [all] Error 2

all builds show successful so I assume that the .o objects they are referring to were generated.

Any idea as to what could be going wrong?

Warm regards,

Samyukta

  • Unfortunately, TI has no examples on how to use cmake with TI compiler tools.

    I can tell you the default file extension for object files is .obj and not .o .  That may have something to do with the problem.  You can change this default with the option --obj_extension=o .  Please read more about this option in the TI ARM compiler manual.

    Thanks and regards,

    -George