[cmake-developers] Regression in language support infrastructure for CMake 2.8.10-rc3

Brad King brad.king at kitware.com
Tue Oct 30 08:30:09 EDT 2012


On 10/29/2012 10:17 PM, Alan W. Irwin wrote:
> if(NOT CMAKE_PLATFORM_INFO_DIR)
>    set(CMAKE_PLATFORM_INFO_DIR
>    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY})
> endif()
> 
> to handle the case of versions of CMake prior to 2.8.10.
> 
> (You covered this OK, but I believe you should also be more specific
> about the location where the above instructions are placed.  I assume
> the above CMake logic fragment should be inserted just before the
> project command if the specified language is mentioned in that project
> command, and before the enable_language command for that specified
> language otherwise.  However, the advice on location should be stated.)

It should be at the top of "CMake${lang}Information.cmake" and of
the configured "CMake${lang}Compiler.cmake".  The former is the first
file to be loaded for a language the first time it is enabled in a
new build tree.  The latter is the first file loaded for a language
in an existing build tree.

> In sum, I was completely surprised by this backwards-incompatible
> change for CMake-2.8.10, but if you follow my suggestions about
> announcing the change and documenting what has to be done to keep
> external language support working, that element of surprise should be
> greatly reduced for other external project developers who are
> supporting various languages.

The implementation behind the scenes of project/enable_language,
including the compiler/platform modules, is an *internal* API that
does not make any compatibility guarantees.  It is not covered in the
official reference documentation that is versioned with the source code.
Maintainers of external language support are responsible for porting
it to each version of CMake as upstream changes are made.

We do provide nightly tarballs of the 'next' branch.  If you test with
that you will catch these changes as soon as they are made which would
give everyone much more time to deal with them than waiting until rc3.

-Brad



More information about the cmake-developers mailing list