diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index a4e4800f61..e2181692da 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}) diff --git a/Tests/RunCMake/CheckSourceCompiles/CheckSourceCompilesFortran.cmake b/Tests/RunCMake/CheckSourceCompiles/CheckSourceCompilesFortran.cmake index 48dc5255d0..68c573505b 100644 --- a/Tests/RunCMake/CheckSourceCompiles/CheckSourceCompilesFortran.cmake +++ b/Tests/RunCMake/CheckSourceCompiles/CheckSourceCompilesFortran.cmake @@ -5,6 +5,14 @@ include(CheckSourceCompiles) set(Fortran 1) # test that this is tolerated +# lfortran < 1.24 cannot handle long file names. +if(CMAKE_Fortran_COMPILER_ID STREQUAL "LCC" AND CMAKE_Fortran_COMPILER_VERSION VERSION_LESS "1.24") + string(LENGTH "${CMAKE_CURRENT_BINARY_DIR}" _CCBD_LEN) + if(_CCBD_LEN GREATER_EQUAL 35) + return() + endif() +endif() + check_source_compiles(Fortran [=[ PROGRAM TEST_HAVE_PRINT PRINT *, 'Hello' diff --git a/Tests/RunCMake/CheckSourceRuns/CheckSourceRunsFortran.cmake b/Tests/RunCMake/CheckSourceRuns/CheckSourceRunsFortran.cmake index 50e8ec85f9..fc5506a51b 100644 --- a/Tests/RunCMake/CheckSourceRuns/CheckSourceRunsFortran.cmake +++ b/Tests/RunCMake/CheckSourceRuns/CheckSourceRunsFortran.cmake @@ -5,6 +5,14 @@ include(CheckSourceRuns) set(Fortran 1) # test that this is tolerated +# lfortran < 1.24 cannot handle long file names. +if(CMAKE_Fortran_COMPILER_ID STREQUAL "LCC" AND CMAKE_Fortran_COMPILER_VERSION VERSION_LESS "1.24") + string(LENGTH "${CMAKE_CURRENT_BINARY_DIR}" _CCBD_LEN) + if(_CCBD_LEN GREATER_EQUAL 35) + return() + endif() +endif() + check_source_runs(Fortran [=[ PROGRAM TEST_HAVE_PRINT PRINT *, 'Hello'