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.

warning #10189-D: archive symbol directory is missing from archive

Other Parts Discussed in Thread: TM4C1294NCPDT, TMS320F28379D, C2000WARE

I cannot figure out how to fix is warning "warning #10189-D: archive symbol directory is missing from archive". Below I included part of the build log of CMake using Ninja to build my project. I'm hoping someone can help me figure out why the archiver is not including the symbols in the archive library in step [178/179] or if the problem is due to some other step. I can confirm that the libsupervisor-system.a that is created includes the supervisor-system.rsp file which includes the 170+ obj files that were compiled. Am I missing a compiler option?

...

[175/179] C:\ti\ccs1031\ccs\tools\compiler\ti-cgt-arm_20.2.4.LTS\bin\armcl.exe --compile_only --cpp_file=C:\src\Source\Supervisor\Supervisor\main.cpp -DMOTOR_SUPPORT_DC -DPART_TM4C1294NCPDT -DTIVAWARE -Dccs --include_path=C:\ti\xdctools_3_32_00_06_core\packages --include_path=C:\ti\tirtos_tivac_2_16_00_08\products\bios_6_45_01_29\packages --include_path=C:\ti\tirtos_tivac_2_16_00_08\products\tidrivers_tivac_2_16_00_08\packages --include_path=C:\src\Source\common\Headers --include_path=C:\src\Source\common\..\include --include_path=C:\ti\tirtos_tivac_2_16_00_08\products\TivaWare_C_Series-2.1.1.71b --include_path=C:\src\build-cmake\Source\Supervisor\Supervisor\syscfg --include_path=C:\src\Source\Supervisor\Supervisor --include_path=C:\src\build-cmake\Source\Supervisor\Supervisor --include_path=C:\src\Source\Supervisor\Supervisor\. --include_path=C:\src\Source\Supervisor\Supervisor\..\..\common\include --include_path=C:\src\Source\Supervisor\Supervisor\Control_Dependent\DC --include_path=C:\ti\ccs1031\ccs\tools\compiler\ti-cgt-arm_20.2.4.LTS\include\libcxx --include_path=C:\ti\ccs1031\ccs\tools\compiler\ti-cgt-arm_20.2.4.LTS\include -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me --diag_wrap=off --display_error_number --gen_func_subsections=on --parallel=16 --abi=eabi --preproc_with_compile --preproc_dependency=Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj.d --output_file=Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
[176/179] C:\ti\ccs1031\ccs\tools\compiler\ti-cgt-arm_20.2.4.LTS\bin\armcl.exe --compile_only --cpp_file=C:\src\build-cmake\Source\Supervisor\Supervisor\Config.cpp --include_path=C:\src\Source\Supervisor\Supervisor --include_path=C:\src\build-cmake\Source\Supervisor\Supervisor --include_path=C:\ti\ccs1031\ccs\tools\compiler\ti-cgt-arm_20.2.4.LTS\include\libcxx --include_path=C:\ti\ccs1031\ccs\tools\compiler\ti-cgt-arm_20.2.4.LTS\include -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me --diag_wrap=off --display_error_number --gen_func_subsections=on --parallel=16 --abi=eabi --preproc_with_compile --preproc_dependency=Source\Parameter_Database\CMakeFiles\supervisor-config.dir\__\Supervisor\Supervisor\Config.cpp.obj.d --output_file=Source\Parameter_Database\CMakeFiles\supervisor-config.dir\__\Supervisor\Supervisor\Config.cpp.obj
[177/179] cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E rm -f Source\Parameter_Database\libsupervisor-config.a && C:\ti\ccs1031\ccs\tools\compiler\ti-cgt-arm_20.2.4.LTS\bin\armar.exe qr Source\Parameter_Database\libsupervisor-config.a Source\Parameter_Database\CMakeFiles\supervisor-config.dir\__\Supervisor\Supervisor\Config.cpp.obj Source\Parameter_Database\CMakeFiles\supervisor-config.dir\__\Supervisor\Supervisor\Storage_TM4C1290_EEPROM.cpp.obj Source\Parameter_Database\CMakeFiles\supervisor-config.dir\__\Supervisor\Supervisor\Storage_Flash_External.cpp.obj && cd ."
[178/179] cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E rm -f Source\Supervisor\Supervisor\libsupervisor-system.a && C:\ti\ccs1031\ccs\tools\compiler\ti-cgt-arm_20.2.4.LTS\bin\armar.exe qr Source\Supervisor\Supervisor\libsupervisor-system.a CMakeFiles\supervisor-system.rsp && cd ."
[179/179] cmd.exe /C "cd . && C:\ti\ccs1031\ccs\tools\compiler\ti-cgt-arm_20.2.4.LTS\bin\armcl.exe -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me --diag_wrap=off --display_error_number --gen_func_subsections=on --parallel=16 --abi=eabi --run_linker --output_file=Source\Supervisor\Supervisor\supervisor-firmware.out --map_file=supervisor-firmware.map --define=ccs=\"ccs\" --define=PART_TM4C1294NCPDT --define=ccs --define=TIVAWARE --issue_remarks --heap_size=0 --stack_size=512 --reread_libs --warn_sections --rom_model ..\Source\Supervisor\Supervisor\tm4c1294ncpdt.cmd Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\Hardware\I2C.c.obj Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\Hardware\SPI.c.obj Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\Hardware\DMA.c.obj Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\Timers\Background_Timer.cpp.obj Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\Q3_TM4C1290.c.obj Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj Source\Supervisor\Supervisor\configPkg\linker.cmd Source\Supervisor\Supervisor\libsupervisor-sysconfig.a Source\Parameter_Database\libsupervisor-config.a Source\Supervisor\Supervisor\libsupervisor-system.a -l"C:/ti/tirtos_tivac_2_16_00_08/products/TivaWare_C_Series-2.1.1.71b/grlib/ccs/Debug/grlib.lib" -l"C:/ti/tirtos_tivac_2_16_00_08/products/TivaWare_C_Series-2.1.1.71b/usblib/ccs/Debug/usblib.lib" -l"C:/ti/tirtos_tivac_2_16_00_08/products/TivaWare_C_Series-2.1.1.71b/driverlib/ccs/Debug/driverlib.lib" C:\ti\ccs1031\ccs\tools\compiler\ti-cgt-arm_20.2.4.LTS\lib\libc.a Source\Parameter_Database\libsupervisor-config.a Source\Supervisor\Supervisor\libsupervisor-version.a Source\Supervisor\Supervisor\libZmodem.a Source\Supervisor\Supervisor\liblittlefs.a && cd ."
FAILED: Source/Supervisor/Supervisor/supervisor-firmware.out
cmd.exe /C "cd . && C:\ti\ccs1031\ccs\tools\compiler\ti-cgt-arm_20.2.4.LTS\bin\armcl.exe -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me --diag_wrap=off --display_error_number --gen_func_subsections=on --parallel=16 --abi=eabi --run_linker --output_file=Source\Supervisor\Supervisor\supervisor-firmware.out --map_file=supervisor-firmware.map --define=ccs=\"ccs\" --define=PART_TM4C1294NCPDT --define=ccs --define=TIVAWARE --issue_remarks --heap_size=0 --stack_size=512 --reread_libs --warn_sections --rom_model ..\Source\Supervisor\Supervisor\tm4c1294ncpdt.cmd Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\Hardware\I2C.c.obj Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\Hardware\SPI.c.obj Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\Hardware\DMA.c.obj Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\Timers\Background_Timer.cpp.obj Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\Q3_TM4C1290.c.obj Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj Source\Supervisor\Supervisor\configPkg\linker.cmd Source\Supervisor\Supervisor\libsupervisor-sysconfig.a Source\Parameter_Database\libsupervisor-config.a Source\Supervisor\Supervisor\libsupervisor-system.a -l"C:/ti/tirtos_tivac_2_16_00_08/products/TivaWare_C_Series-2.1.1.71b/grlib/ccs/Debug/grlib.lib" -l"C:/ti/tirtos_tivac_2_16_00_08/products/TivaWare_C_Series-2.1.1.71b/usblib/ccs/Debug/usblib.lib" -l"C:/ti/tirtos_tivac_2_16_00_08/products/TivaWare_C_Series-2.1.1.71b/driverlib/ccs/Debug/driverlib.lib" C:\ti\ccs1031\ccs\tools\compiler\ti-cgt-arm_20.2.4.LTS\lib\libc.a Source\Parameter_Database\libsupervisor-config.a Source\Supervisor\Supervisor\libsupervisor-version.a Source\Supervisor\Supervisor\libZmodem.a Source\Supervisor\Supervisor\liblittlefs.a && cd ."
<Linking>
warning #10189-D: archive symbol directory is missing from archive "Source\Supervisor\Supervisor\libsupervisor-system.a"

undefined first referenced
symbol in file
--------- ----------------
Idle_Task_Entry C:\src\build-cmake\Source\Supervisor\Supervisor\configPkg\package\cfg\supervisor_pem4f.oem4f
Setup_RTOS_Globals() Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
Operator_Task::Initialize(unsigned int, bool) Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
Watchdog_Task::Initialize(unsigned int) Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
Watchdog_Task::Add_Delegate(Watchdog_Delegate *) Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
Warehouse_Task::Initialize(unsigned int) Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
Peripheral_Task::Initialize() Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
Status_LED_Task::Set_Firmware_Update_State(E_Firmware_Update_State) Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
USB_Device_Task::Initialize() Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
USB_Device_Task::Get_Parameter_Command_Ref() Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
USB_Device_Task::Get_Port() Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
Super_CRC_Module::Initialize() Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
External_Serial_Task::Initialize(unsigned int) Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
Get_Parameter_Command::Set_Batch_Size(int) Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
Motor_DSP_Update_Task::Initialize(unsigned int) Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
Zmodem::TIRTOSPort::Set_Timeout(unsigned int) Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
g_crc_mod Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
g_ext_serial Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
g_heartbeat Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
g_ipc Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
g_motor_update Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
g_op Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
g_peripheral Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
g_status_led Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
g_usb_device_task Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
g_watchdog Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj
g_wh Source\Supervisor\Supervisor\CMakeFiles\supervisor-firmware.dir\main.cpp.obj

error #10234-D: unresolved symbolremark #10205-D: automatic RTS selection: linking in "rtsv7M4_T_le_v4SPD16_eabi.lib" in place of index library "libc.a"
s remain
error #10010: errors encountered during linking; "Source\Supervisor\Supervisor\supervisor-firmware.out" not built

>> Compilation failure
ninja: build stopped: subcommand failed.

  • Hello Erich,

    I'm not deeply familiar with what you are trying to do here. From what I am seeing, there is an issue with the library linking:

    error #10234-D: unresolved symbolremark #10205-D: automatic RTS selection: linking in "rtsv7M4_T_le_v4SPD16_eabi.lib" in place of index library "libc.a"

    Can you explain what you have been trying to do so I have some background? Or maybe even walk me through how to re-create the issue from a standard TI-RTOS project in Resource Explorer so I can see it firsthand?

    Best Regards,

    Ralph Jacobi

  • Hey Ralph,

    Can you explain what you have been trying to do so I have some background?

    I have been trying to duplicate the same commands that CCS uses to build our project with CMake. For the most part I can get really close, but due to the way CMake builds with the TI compiler it uses the --compile_only flag, whereas CCS does not (I'm guessing CCS does some linking on the fly?). The main difference between the project file setup between CCS and how I have CMake configured, is that CCS just includes all source files (via globbing essentially from what I can tell) whereas with CMake I explicitly add files to targets to be compiled. So, I want to be able to compile a majority of my source files into a library and then link that library when I compile a few additional target-specific files.

    In CCS, the way I have the project configured, all files are simply compiled and from what I can tell linked by passing them to the linker command.

    With CMake, the way I have the project configured, most of the source files are compiled and archived (via step [178/179] in the log above) in a library and link against it when I compile the target-specific executable/binary (via step [179/179]). However, I get this linker warning that I'm assuming is what is causing the linker errors.

    Or maybe even walk me through how to re-create the issue from a standard TI-RTOS project in Resource Explorer so I can see it firsthand?

    I've spent about an hour or two trying to reproduce the issue myself with a much smaller file set in a separate project, but ended up putting that on hold since it was taking longer than I was expecting trying to reproduce when this seemed like such a straight forward linker error. If it you have no ideas with the information provided I will spend more time attempting to reproduce this.

    error #10234-D: unresolved symbolremark #10205-D: automatic RTS selection: linking in "rtsv7M4_T_le_v4SPD16_eabi.lib" in place of index library "libc.a"

    I believe this is actually a debug output parallelism miscommunication... two separate debug messages:

    1. error #10234-D: unresolved symbols remain
    2. remark #10205-D: automatic RTS selection: linking in "rtsv7M4_T_le_v4SPD16_eabi.lib" in place of index library "libc.a"

    I have the --issue_remarks option passed to the linker in CMake.

  • Hi Erich,

    Let me loop in our CCS team to see if they have any ideas to offer then since this is much more compiler / linker related than something specific with our libraries...

    Best Regards,

    Ralph Jacobi

  • What is the file ...

    CMakeFiles\supervisor-system.rsp

    I suspect it is not an object file, but a library (also called an archive) of object files.  If that is the case, then this is not supported.  A library can only contain object files.  A library cannot contain, in some hierarchical way, another library.  If supervisor-system.rsp is a library, then do not add it to another library.  Supply it directly to the linker like the other libraries.

    The message ...

    remark #10205-D: automatic RTS selection: linking in "rtsv7M4_T_le_v4SPD16_eabi.lib" in place of index library "libc.a"

    ... is not of immediate concern.  It means one of the inputs to the linker is an index library named libc.a.  In your case, this index library is automatically replaced by the named compiler RTS library.  If that choice is correct, then there is nothing further to do.

    Please let me know if one of these suggestions resolves the problem.

    Thanks and regards,

    -George

  • A library cannot contain, in some hierarchical way, another library.

    The supervisor-system.rsp file is a text file generated by Ninja that contains all the paths to the .obj files.
    I've seen this being a necessary file particularly when the resulting command line gets too long for the shell, such that the solution is to put the huge list of files (typically with lengthy paths to those files) into the .rsp file and pass that .rsp file to the underlying build program. Maybe only supported by MSVC compiler, which begs the question why CMake would generate a .rsp file when using a cross-compiled toolchain. But also, if .rsp files aren't supported by TI build tools, what are their solution to command lines too long for the shell to execute?

    If that choice is correct, then there is nothing further to do.

    Yes, that is the correct choice.

    EDIT: I found this Gitlab issue that describes this exact issue I'm having. So, I guess this is simply a CMake issue, not a TI issue.

  • Later edit ... The information in this post is wrong.  Please ignore it.  It is left here only because deleting it would cause the later posts to not make sense.

    If it is practical, change CMake so that it invokes armar according to this model ...

    armar qr library_name.a @file_name.rsp

    For details on how to invoke armar, please search the TI ARM assembly tools manual for the sub-chapter titled Invoking the Archiver.

    Please let me know if this suggestion resolves the problem.

    Thanks and regards,

    -George

  • If it is practical, change CMake so that it invokes armar according to this model

    That results in:

    -->  error: '@CMakeFiles/supervisor-system.rsp' not found

    and I can confirm that, that file does in fact exist relative to where I execute the command. Just in case there was an issue with a relative path, I tried with an absolute path and get the same error. Something about the @ isn't working as expected maybe?

    The only way I can get it to work via the .rsp file is by putting the qr and library_name.a on separate lines within @file_name.rsp, followed by concatenating the contents of my CMakeFiles/supervisor-system.rsp to the end of that file. After manually creating that file by hand and running the command as armar @file_name.rsp do I get a library I suspect can be linked properly.

  • I apologize.  I was wrong to tell you armar worked like that.  You are correct when you say ...

    The only way I can get it to work via the .rsp file is by putting the qr and library_name.a on separate lines within @file_name.rsp, followed by concatenating the contents of my CMakeFiles/supervisor-system.rsp to the end of that file

    If you use the @file_name.rsp feature, then that .rsp file must contain all of the command line arguments and file names required by armar.  Unfortunately, It does not support putting only part of the command line in the .rsp file.  

    You already found the only alternative I can think of, which is described this gitlab page you posted earlier.

    Thanks and regards,

    -George

  • Do you want me to file a request that armar be changed to accept a part of the command line in a text file like supervisor-system.rsp?

    Thanks and regards,

    -George

  • Do you want me to file a request that armar be changed to accept a part of the command line in a text file like supervisor-system.rsp?

    Yes, please! That would be awesome.

  • So, for those (including my future self) coming to this post looking for my end solution (or a rough approximation) below is the armar_wrapper.bat I create in my CMake toolchain file.


    @echo off
    rem Wrapper script around `armar` to check for .rsp file and create equivalent .cmd file.
    rem see gitlab.kitware.com/.../22463
    rem see e2e.ti.com/.../warning-10189-d-archive-symbol-directory-is-missing-from-archive

    set CMDFILE="armar.cmd"

    :: Touch our wrapper command file, creating it if not exist.
    type nul >%CMDFILE% & copy %CMDFILE% +,,

    for %%X in (%*) do (
    if /i "%%~xX" == ".rsp" (
    :: Concat contents of .rsp file into our armar wrapper command file.
    type %%X >> %CMDFILE%
    ) else (
    echo %%X >> %CMDFILE%
    )
    )

    C:/ti/ccs1031/ccs/tools/compiler/ti-cgt-arm_20.2.4.LTS/bin/armar.exe @%CMDFILE%

    For completion, this is my CMake toolchain file.

    # Set the operating system and processor architecture.
    set(CMAKE_SYSTEM_NAME Generic)
    set(CMAKE_SYSTEM_PROCESSOR arm)
    set(CMAKE_SYSTEM_VERSION 1)

    # Setup CMake's rules for using the CMAKE_FIND_ROOT_PATH for cross-compilation.
    set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

    if(DEFINED ENV{CCS_VERSION})
    set(CCS_VERSION $ENV{CCS_VERSION})
    endif()
    if(NOT DEFINED CCS_VERSION)
    set(CCS_VERSION "1031") # Default to what this project was started developing with.
    message(STATUS "CCS_VERSION undefined, defaulting to ${CCS_VERSION}")
    endif()

    file(GLOB _CCS_SEARCH_DIRS
    C:/ti/ccs*/ccs/tools/compiler/ti-cgt-arm*
    /opt/ti/ccs*/ccs/tools/compiler/ti-cgt-arm*
    /Application/ti/ccs*/ccs/tools/compiler/ti-cgt-arm*)
    # Filter out potentially multiple versions of CCS installed on the system.
    list(FILTER _CCS_SEARCH_DIRS INCLUDE REGEX ".*ccs${CCS_VERSION}.*")

    if(NOT DEFINED TI_CGT_DIR)
    set(TI_CGT_DIR "${_CCS_SEARCH_DIRS}" CACHE PATH "The root directory of the TI ARM C/C++ Code Generation Tools.")
    endif()

    # Set target environment
    set(CMAKE_FIND_ROOT_PATH ${TI_CGT_DIR})

    # toolchain paths
    find_program(TI_GCC NAMES armcl PATHS ${TI_CGT_DIR}/bin NO_DEFAULT_PATH)
    find_program(TI_CXX NAMES armcl PATHS ${TI_CGT_DIR}/bin NO_DEFAULT_PATH)
    find_program(TI_AS NAMES armasm PATHS ${TI_CGT_DIR}/bin NO_DEFAULT_PATH)
    find_program(TI_AR NAMES armar PATHS ${TI_CGT_DIR}/bin NO_DEFAULT_PATH)
    find_program(TI_OBJCOPY NAMES armobjcopy PATHS ${TI_CGT_DIR}/bin NO_DEFAULT_PATH)
    find_program(TI_OBJDUMP NAMES armobjdump PATHS ${TI_CGT_DIR}/bin NO_DEFAULT_PATH)
    find_program(TI_SIZE NAMES armsize PATHS ${TI_CGT_DIR}/bin NO_DEFAULT_PATH)
    find_program(TI_LD NAMES armlnk PATHS ${TI_CGT_DIR}/bin NO_DEFAULT_PATH)


    if(WIN32)
    set(ARMAR_WRAPPER_SCRIPT ${CMAKE_BINARY_DIR}/armar_wrapper.bat)
    file(WRITE ${ARMAR_WRAPPER_SCRIPT}
    "@echo off
    rem Wrapper script around `armar` to check for .rsp file and create equivalent .cmd file.
    rem see gitlab.kitware.com/.../22463
    rem see e2e.ti.com/.../warning-10189-d-archive-symbol-directory-is-missing-from-archive

    set CMDFILE=\"armar.cmd\"

    :: Touch our wrapper command file, creating it if not exist.
    type nul >%CMDFILE% & copy %CMDFILE% +,,

    for %%X in (%*) do (
    if /i \"%%~xX\" == \".rsp\" (
    :: Concat contents of .rsp file into our armar wrapper command file.
    type %%X >> %CMDFILE%
    ) else (
    echo %%X >> %CMDFILE%
    )
    )

    ${TI_AR} @%CMDFILE%
    ")
    else()
    message(FATAL_ERROR "Unimplemented: TODO convert armar_wrapper.bat to bash script")
    endif()


    # set executables settings
    set(CMAKE_C_COMPILER ${TI_GCC})
    set(CMAKE_CXX_COMPILER ${TI_CXX})
    set(CMAKE_AS ${TI_AS})
    # set(CMAKE_AR ${TI_AR})
    set(CMAKE_AR ${ARMAR_WRAPPER_SCRIPT})
    set(CMAKE_OBJCOPY ${TI_OBJCOPY})
    set(CMAKE_OBJDUMP ${TI_OBJDUMP})
    set(CMAKE_SIZE ${TI_SIZE})
    set(CMAKE_LD ${TI_LD})


    find_path(CMAKE_C_STANDARD_INCLUDE_DIRECTORIES
    NAMES stdio.h
    PATHS ${TI_CGT_DIR}
    PATH_SUFFIXES "include"
    DOC "Standard include directories for C programs.")

    find_path(_CXX_STANDARD_INCLUDE_DIRECTORIES
    NAMES cstdio sstream
    PATHS ${TI_CGT_DIR}
    PATH_SUFFIXES "include/libcxx"
    NO_CACHE)
    list(APPEND _CXX_STANDARD_INCLUDE_DIRECTORIES ${CMAKE_C_STANDARD_INCLUDE_DIRECTORIES})
    set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES ${_CXX_STANDARD_INCLUDE_DIRECTORIES} CACHE PATH "Standard include directories for C++ programs.")

    # Let CMake to detect how many cores we can compile with.
    include(ProcessorCount)
    ProcessorCount(N)


    list(APPEND _FLAGS
    -mv7M4
    --code_state=16
    --float_support=FPv4SPD16
    -me
    --diag_wrap=off
    --display_error_number
    --gen_func_subsections=on
    --parallel=${N}
    --abi=eabi)
    string(REPLACE ";" " " _FLAGS_STR "${_FLAGS}")

    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_FLAGS_STR}" CACHE STRING "Flags used by the C compiler during all build types.")
    set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -g" CACHE STRING "Flags used by the C compiler during DEBUG build types.")
    set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS}" CACHE STRING "Flags used by the C compiler during RELEASE build types.")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_FLAGS_STR}" CACHE STRING "Flags used by the CXX compiler during all build types.")
    set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -g" CACHE STRING "Flags used by the CXX compiler during DEBUG build types.")
    set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS}" CACHE STRING "Flags used by the CXX compiler during RELEASE build types.")


    # Unfortunately, we need to force CMake to think the compiler works due to the TI compiler
    # having issues trying to compile its test programs.
    set(CMAKE_C_COMPILER_WORKS 1)
    set(CMAKE_CXX_COMPILER_WORKS 1)

    message(STATUS "Using toolchain file: ${CMAKE_TOOLCHAIN_FILE}")

    I don't know what is wrong with e2e's ability to insert code sections, but I get:

    Access Denied

    You don't have permission to access "">e2e.ti.com/.../configure on this server.

    Reference #18.542b3417.1644356754.1482e4aa

  • Do you want me to file a request that armar be changed to accept a part of the command line in a text file like supervisor-system.rsp?

    I filed EXT_EP-10743 to request this change.  You are welcome to follow it with that link.

    To be fair, I should tell you it is unlikely this change will be implemented in armar.  That is because it is part of the TI proprietary compiler toolchain.  That toolchain is being replaced by tiarmclang, which is based on the open source projects Clang and LLVM.  I already checked on tiarmar, the archiver in the tiarmclang toolchain.  It supports response files the way you first tried to use them.  Despite all that, I'm glad to file the request.  It may be implemented in the archiver for our other proprietary compilers.

    Thanks and regards,

    -George

  • Much appreciated! Ya, I've been waiting for the toolchain we're using to get updated to the new tiarmclang stuff. Not sure if our hardware/toolchain will ever be added, but I have my hopes. Just in case you might ask about which hardware: TMS320F28379D DSP with C2000Ware 3_03_00_00 and TM4C1294NCPDT with ti-cgt-arm_20.2.4 and XDCTools 3_32_00_06.