[cmake-developers] [CMake 0015439]: ninja: no possibility to control type of path delimiter and line break for linker response file

Mantis Bug Tracker mantis at public.kitware.com
Tue Mar 10 16:54:30 EDT 2015


The following issue has been SUBMITTED. 
====================================================================== 
http://public.kitware.com/Bug/view.php?id=15439 
====================================================================== 
Reported By:                Thomas Herz
Assigned To:                
====================================================================== 
Project:                    CMake
Issue ID:                   15439
Category:                   CMake
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     new
====================================================================== 
Date Submitted:             2015-03-10 16:54 EDT
Last Modified:              2015-03-10 16:54 EDT
====================================================================== 
Summary:                    ninja: no possibility to control type of path
delimiter and line break for linker response file
Description: 
I'm working with the Windriver VxWorks GNU tool chain on Windows host.
   Compiler Version: ccpentium.exe (Wind River VxWorks G++ DWARF-EH 4.1-131)
4.1.2
    --host=i686-mingw32
    --target=i586-wrs-vxworks

I adapted our existing 'unix makefile' project to ninja builder and I'm getting
following linker error:

   @CMakeFiles/myLib.rsp: No such file or directory

Finally, I figured out the reason. Actually, there are two of them:

1) The linker response file uses '\' for path delimiters, but this version of
GCC can't handle them, even if it is running on Windows host.
It only handles '/' or '\\' correctly. I managed to work around this problem by
setting 'CMAKE_COMPILER_IS_MINGW' to '1'. But, I guess, this may have some
unwanted side effects. Related bug report: 0015278

2) The linker response file uses Windows style line-breaks (CR-LF) to separate
individual object paths. This version of GCC can't handle them. It works fine
with Unix style (LF) or without any line breaks and whitespace instead.
The behaviour of ninja generator was changed with commit
a55d5ca48179d3be4d8406028c0992d45ada8882. I think, this patch is too 'global'. 
According to commit message 'Avoid LNK1170 linker error' this commit should
solve Microsoft compiler/linker problems. Furthermore LNK1170 is not listed
anymore for VS2010 and above.

Anyhow, for both issues, some kind of automagic with the possibility to change
the automagic decision with a particular cmake-variable would be the best
solution for such kind of problems.


====================================================================== 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2015-03-10 16:54 Thomas Herz    New Issue                                    
======================================================================



More information about the cmake-developers mailing list