diff options
author | makise-homura <akemi_homura@kurisa.ch> | 2023-12-21 19:58:09 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2024-01-08 20:25:57 (GMT) |
commit | 3377141c8f18ecfed46f52a8be8228d982e32464 (patch) | |
tree | 9878840e35210e53608288645ddf1966737b713d /Tests/RunCMake/CMakeLists.txt | |
parent | 020e80d825a0c501fc7ae4273766eca102d505de (diff) | |
download | CMake-3377141c8f18ecfed46f52a8be8228d982e32464.zip CMake-3377141c8f18ecfed46f52a8be8228d982e32464.tar.gz CMake-3377141c8f18ecfed46f52a8be8228d982e32464.tar.bz2 |
Tests: With lfortran < 1.24 skip cases broken by incorrect filename handling
`lfortran` < 1.24 uses `fccn`, a Fortran-to-C converter that
incorrectly handles long filenames that are more than 128 characters
long; so to check if Fortran can compile something, CMake must be
run in binary directory that has a name of less that 35 characters long.
It is ok for typical runs line `cmake -S . -B build` or `cmake ..`,
but does not work with usual CDash dashboard testing paths.
All this is not a problem for modern LCC >= 1.24.
Diffstat (limited to 'Tests/RunCMake/CMakeLists.txt')
-rw-r--r-- | Tests/RunCMake/CMakeLists.txt | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index a4e4800..e218169 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -345,7 +345,17 @@ if(DEFINED CMake_TEST_OBJC) list(APPEND CompilerTest_ARGS -DCMake_TEST_OBJC=${CMake_TEST_OBJC}) endif() if(CMAKE_Fortran_COMPILER) - list(APPEND CompilerTest_ARGS -DCMake_TEST_Fortran=1) + # lfortran < 1.24 cannot handle long file names. Fortran is not + # enabled here, so check the C compiler version instead. + if(CMAKE_C_COMPILER_ID STREQUAL "LCC" AND CMAKE_C_COMPILER_VERSION VERSION_LESS "1.24") + string(LENGTH "${CMAKE_CURRENT_BINARY_DIR}" _CCBD_LEN) + if(_CCBD_LEN LESS 35) + list(APPEND CompilerTest_ARGS -DCMake_TEST_Fortran=1) + endif() + unset(_CCBD_LEN) + else() + list(APPEND CompilerTest_ARGS -DCMake_TEST_Fortran=1) + endif() endif() foreach(lang IN ITEMS CUDA HIP ISPC) if(CMake_TEST_${lang}) |