[CMake] Toolchain file: Texas Instrument C6000 Code Generation Tools

Florian Reinhard florian.reinhard at googlemail.com
Tue Mar 12 06:43:20 EDT 2013


When using the "linker" through CMAKE_CXX_LINK_EXECUTABLE you do not
need to add the --run-linker when compiling sources, which (i think)
is a bad idea.

If you have a setup and time, i'd appreciate if you could investigate
the crash of cmake upon the ABI tests (if they happen to you) since i
can't.

One more thing you might want to know about the cl6x:
if you happen to implement function "foo" in bar.cpp and the same
function is also implemented in library foobar.lib which you use for
linking, you would need to take care of the order of arguments to cl6x
while linking:
if bar.cpp.obj is before foobar.lib cl6x will use foo from bar.cpp.
you would have to do that manually, it's not possible to achieve this
with cmake from what i know.


2013/3/12 Laszlo Papp <lpapp at kde.org>:
> Oh, there is a "CMAKE_CXX_LINK_EXECUTABLE". That variable I did not know. It
> is nice to see that one does not need to force the compiler. That would be a
> bit nasty. :-)
>
> This feature seems to come along with the 2.8.11 release which is in the
> door. I will try to write a blog post about this once we have the new
> release. :)
>
> Thank you for pointing this merge out.
>
>
> On Tue, Mar 12, 2013 at 9:09 AM, Florian Reinhard
> <florian.reinhard at googlemail.com> wrote:
>>
>> 1. drop the TI_DSP*.cmake you can find linked below in your
>> cmake/Modules/Compiler folder, i assumed this was already released
>> since Alexander Neundorf merged the changes back in november
>>
>>
>> http://cmake.org/gitweb?p=cmake.git;a=tree;f=Modules/Compiler;h=34a0ad1a5694082dc8ffc62c2ebeaa446ea09274;hb=master
>>
>>
>> 2. set your compiler in the following way, just replace/set CGT_DIR.
>> as you can see from the comment, the commands are sensible to the
>> order:
>> SET (CMAKE_C_COMPILER "${CGT_DIR}/bin/cl6x.exe")
>> SET (CMAKE_CXX_COMPILER ${CMAKE_C_COMPILER})
>> SET (CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER})
>> SET (CMAKE_CXX_LINK_EXECUTABLE ${CMAKE_C_COMPILER})
>> SET (CMAKE_STRIP "${CGT_DIR}/bin/strip6x.exe")
>>
>> # We do want to compile assembler files as well
>> ENABLE_LANGUAGE(ASM)
>>
>> # must be done after enabling ASM since it overwrites CMAKE_AR
>> SET (CMAKE_AR "${CGT_DIR}/bin/ar6x.exe")
>>
>>
>> 3. if you encounter problems while cmake does compiler tests add the
>> following
>> SET (CMAKE_C_COMPILER_WORKS   1)
>> SET (CMAKE_CXX_COMPILER_WORKS 1)
>> #skip ABI checks
>> SET (CMAKE_DETERMINE_C_ABI_COMPILED   1)
>> SET (CMAKE_DETERMINE_CXX_ABI_COMPILED 1)
>> SET (CMAKE_DETERMINE_ASM_ABI_COMPILED 1)
>>
>> in my case on windows 7 with cl6x 6.2.*, cmake would just crash. i
>> think this is what you encounter as well. maybe jom just hides that
>> crash. unfortunately i have not the knowledge to investigate this on
>> windows.
>>
>> 4. if you compile libraries as well you might need the following:
>> UNSET (CMAKE_C_ARCHIVE_FINISH)
>> UNSET (CMAKE_CXX_ARCHIVE_FINISH)
>>
>> Kind Regards,
>>
>> Florian Reinhard
>>
>> 2013/2/22 Laszlo Papp <lpapp at kde.org>:
>> > Hi,
>> >
>> > I am now trying to put a toolchain file together for the aforementioned
>> > embedded environment on my Windows 7 workstation. You can see the file
>> > contents I have, and the errors I get below. When I just use the
>> > compiler
>> > against the one liner main.c, it works off hand. I also tried to force
>> > the
>> > C/C++ compilers, but even though the cmake ran fine, jom failed pretty
>> > much
>> > with the same error.
>> >
>> > Any help is much appreciated!
>> >
>> > Laszlo
>> >
>> > -----------------------------------------------------------------
>> >
>> > main.c
>> >
>> > int main() {return 0;}
>> >
>> > CMakeLists.txt
>> >
>> > add_executable(skeleton main.c)
>> >
>> > ToolchainFile-C6000
>> >
>> > # include("CMakeForceCompiler")
>> >
>> > set(CMAKE_SYSTEM_NAME "Sysbios")
>> > set(CMAKE_SYSTEM_VERSION "1.0")
>> > set(CMAKE_SYSTEM_PROCESSOR "C6000")
>> >
>> > set(CMAKE_FIND_ROOT_PATH    "${CMAKE_FIND_ROOT_PATH}"
>> >                 "C:/ti/C6000 Code Generation Tools 7.3.0B3/bin"
>> >                 "C:/ti/C6000 Code Generation Tools 7.3.0B3/include"
>> >                 "C:/ti/C6000 Code Generation Tools 7.3.0B3/lib")
>> >
>> > # CMAKE_FORCE_C_COMPILER("C:/ti/C6000 Code Generation Tools
>> > 7.3.0B3/bin/cl6x.exe" "TI")
>> > # CMAKE_FORCE_CXX_COMPILER("C:/ti/C6000 Code Generation Tools
>> > 7.3.0B3/bin/cl6x.exe" "TI")
>> >
>> > SET(CMAKE_C_COMPILER  "C:/ti/C6000 Code Generation Tools
>> > 7.3.0B3/bin/cl6x.exe")
>> > SET(CMAKE_CXX_COMPILER  "C:/ti/C6000 Code Generation Tools
>> > 7.3.0B3/bin/cl6x.exe")
>> >
>> > set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM    BOTH)
>> > set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE    BOTH)
>> > set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY    ONLY)
>> >
>> > ERROR
>> >
>> > cmake -G "NMake Makefiles JOM"
>> > -DCMAKE_TOOLCHAIN_FILE=../toolchain-cl6x.cmake ..
>> > -- The C compiler identification is TI_DSP 7.3.0
>> > -- The CXX compiler identification is TI_DSP 7.3.0
>> > -- Check for working C compiler: C:/ti/C6000 Code Generation Tools
>> > 7.3.0B3/bin/c
>> > l6x.exe
>> > -- Check for working C compiler: C:/ti/C6000 Code Generation Tools
>> > 7.3.0B3/bin/c
>> > l6x.exe -- broken
>> > CMake Error at C:/Program Files (x86)/CMake
>> > 2.8/share/cmake-2.8/Modules/CMakeTes
>> > tCCompiler.cmake:61 (message):
>> >   The C compiler "C:/ti/C6000 Code Generation Tools
>> > 7.3.0B3/bin/cl6x.exe" is
>> >   not able to compile a simple test program.
>> >
>> >   It fails with the following output:
>> >
>> >    Change Dir: C:/Projects/share/skeleton/build/CMakeFiles/CMakeTmp
>> >
>> >
>> >
>> >   Run Build Command:jom "cmTryCompileExec2474985119\fast"
>> >
>> >
>> >
>> >   jom 1.0.13 - empower your cores
>> >
>> >
>> >
>> >         "C:\Program Files (x86)\jom\jom.exe" -f
>> >   CMakeFiles\cmTryCompileExec2474985119.dir\build.make /nologo -
>> >   CMakeFiles\cmTryCompileExec2474985119.dir\build
>> >
>> >         "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E
>> > cmake_progress_repor
>> > t
>> >   C:\Projects\share\skeleton\build\CMakeFiles\CMakeTmp\CMakeFiles 1
>> >
>> >   Building C object
>> >   CMakeFiles/cmTryCompileExec2474985119.dir/testCCompiler.c.obj
>> >
>> >         C:\ti\C6000C~1.0B3\bin\cl6x.exe -o
>> >   CMakeFiles\cmTryCompileExec2474985119.dir\testCCompiler.c.obj -c
>> >   C:\Projects\share\skeleton\build\CMakeFiles\CMakeTmp\testCCompiler.c
>> >
>> >   [testCCompiler.c]
>> >
>> >   >> WARNING: object file specified, but linking not enabled
>> >
>> >   Linking C executable cmTryCompileExec2474985119
>> >
>> >         C:\ti\C6000C~1.0B3\bin\cl6x.exe
>> >   "CMakeFiles\cmTryCompileExec2474985119.dir\testCCompiler.c.obj" -o
>> >   cmTryCompileExec2474985119
>> >
>> >   [cmTryCompileExec2474985119.]
>> >
>> >   >> WARNING: object file specified, but linking not enabled
>> >
>> >   Fatal error: could not open source file "cmTryCompileExec2474985119"
>> >
>> >   1 fatal error detected in the compilation of
>> > "cmTryCompileExec2474985119".
>> >
>> >   Compilation terminated.
>> >
>> >
>> >
>> >   jom:
>> >
>> >
>> > C:\Projects\share\skeleton\build\CMakeFiles\CMakeTmp\CMakeFiles\cmTryCompileEx
>> > ec2474985119.dir\build.make
>> >   [cmTryCompileExec2474985119] Error 1
>> >
>> >   >> Compilation failure
>> >
>> >   jom: C:\Projects\share\skeleton\build\CMakeFiles\CMakeTmp\Makefile
>> >   [cmTryCompileExec2474985119\fast] Error 2
>> >
>> >
>> >
>> >
>> >
>> >   CMake will not be able to correctly generate this project.
>> > Call Stack (most recent call first):
>> >
>> >
>> >
>> > -- Configuring incomplete, errors occurred!
>> >
>> > C:\Projects\share\skeleton\build>
>> >
>> >
>> > --
>> >
>> > Powered by www.kitware.com
>> >
>> > Visit other Kitware open-source projects at
>> > http://www.kitware.com/opensource/opensource.html
>> >
>> > Please keep messages on-topic and check the CMake FAQ at:
>> > http://www.cmake.org/Wiki/CMake_FAQ
>> >
>> > Follow this link to subscribe/unsubscribe:
>> > http://www.cmake.org/mailman/listinfo/cmake
>
>


More information about the CMake mailing list