[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