[CMake] CXX incorrectly includes CMakeFortranInformation.cmake for MinGW/MSYS/Wine

Clinton Stimpson clinton at elemtech.com
Mon Apr 5 15:04:00 EDT 2010


On Apr 5, 2010, at 11:50 AM, Bill Hoffman wrote:

> Alan W. Irwin wrote:
> 
>>> Have you run cmake --trace yet to figure out what is including what and where?
>> Yes, as alluded to above
>> the complete result for cmake --trace --debug-output for
>> a CMakeLists.txt file consisting of just
>> project(test NONE)
>> enable_language(CXX)
>> was attached to my first post in this thread.  Part way through is starts
>> accessing CMakeFortranInformation.cmake which is the source of the trouble.
>> For your convenience I will attach that cmake output to this post as well.
> 
> OK, you are going to have to look at the C++ code to figure this out.
> 
> You will need to add some debug prints to this function:
> 
> void
> cmGlobalGenerator::EnableLanguage(std::vector<std::string>const& languages,
>                                  cmMakefile *mf, bool)
> 
> ...
> 
>  for(std::vector<std::string>::const_iterator l = languages.begin();
>      l != languages.end(); ++l)
>    {
> 
> Seems that Fortran is getting into the list of enabled languages.
> 
> Might also want to put prints in cmEnableLanguageCommand
> ::InitialPass  and void cmMakefile::EnableLanguage(std::vector<std::string> const &  lang,
>                               bool optional)
> 
> 

So interleaving wine tracing and cmake tracing along with some debugging... the problem comes from within SystemTools::GetActualCaseForPath()
where it takes as input <somepath>/CMakeTestCXXCompiler.cmake and returns <somepath>/CMakeFortranInformation.cmake.
I'm guessing its a bug in Wine's GetShortPathName() or GetLongPathName().  There are more modern apis for getting the actual case of a file, but they probably don't work on Windows 98.

Clint



More information about the CMake mailing list