
`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.
25 lines
574 B
CMake
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()
|