CMake/Tests/RunCMake/CheckSourceRuns/CheckSourceRunsFortran.cmake
makise-homura 3377141c8f 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.
2024-01-08 15:25:57 -05:00

25 lines
574 B
CMake

enable_language (Fortran)
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'
END
]=] SHOULD_BUILD)
if(NOT SHOULD_BUILD)
message(SEND_ERROR "Test fail for valid Fortran source.")
endif()