Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -2,7 +2,13 @@ include(CheckSymbolExists) -project(test-suite C CXX) +option(TEST_SUITE_FORTRAN "Enable Fortran test suite" OFF) + +if (NOT TEST_SUITE_FORTRAN) + project(test-suite C CXX) +else() + project(test-suite C CXX Fortran) +endif() function(append value) foreach(variable ${ARGN}) @@ -21,6 +27,9 @@ # On the other hand we often want to switch compiler or cflags mark_as_advanced(CLEAR CMAKE_C_COMPILER CMAKE_CXX_COMPILER CMAKE_LINKER CMAKE_C_FLAGS CMAKE_CXX_FLAGS CMAKE_EXE_LINKER_FLAGS) +if (TEST_SUITE_FORTRAN) + mark_as_advanced(CLEAR CMAKE_Fortran_COMPILER) +endif() # The files in cmake/caches often want to pass along additional flags to select # the target architecture. Note that you should still use @@ -29,6 +38,9 @@ "Extra flags to select target architecture.") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TEST_SUITE_ARCH_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TEST_SUITE_ARCH_FLAGS}") +if (TEST_SUITE_FORTRAN) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${TEST_SUITE_ARCH_FLAGS}") +endif() set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${TEST_SUITE_ARCH_FLAGS}") set(LLVM_CODESIGNING_IDENTITY "" CACHE STRING @@ -153,12 +165,16 @@ # LNT to gather data, for examples -ftime-report, or -mllvm -stats. This way # the user specified CMAKE_C_FLAGS etc. need not be changed. set(TEST_SUITE_DIAGNOSE_FLAGS CACHE STRING - "Extra flags appended to CMAKE_C_FLAGS + CMAKE_CXX_FLAGS") + "Extra flags appended to CMAKE_C_FLAGS + CMAKE_CXX_FLAGS + CMAKE_Fortran_FLAGS") set(TEST_SUITE_DIAGNOSE_LINKER_FLAGS CACHE STRING "Extra flags appended to CMAKE_EXE_LINKER_FLAGS") mark_as_advanced(TEST_SUITE_DIAGNOSE_FLAGS TEST_SUITE_DIAGNOSE_LINKER_FLAGS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TEST_SUITE_DIAGNOSE_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TEST_SUITE_DIAGNOSE_FLAGS}") +if (TEST_SUITE_FORTRAN) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${TEST_SUITE_DIAGNOSE_FLAGS}") +endif() + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${TEST_SUITE_DIAGNOSE_LINKER_FLAGS}") @@ -172,12 +188,26 @@ # specifies CMAKE_C_FLAGS and similar. set(TEST_SUITE_EXTRA_C_FLAGS CACHE STRING "Extra flags for CMAKE_C_FLAGS") set(TEST_SUITE_EXTRA_CXX_FLAGS CACHE STRING "Extra flags for CMAKE_CXX_FLAGS") +if (TEST_SUITE_FORTRAN) + set(TEST_SUITE_EXTRA_Fortran_FLAGS CACHE STRING "Extra flags for CMAKE_Fortran_FLAGS") +endif() + set(TEST_SUITE_EXTRA_EXE_LINKER_FLAGS CACHE STRING "Extra flags for CMAKE_EXE_LINKER_FLAGS") + mark_as_advanced(TEST_SUITE_EXTRA_C_FLAGS, TEST_SUITE_EXTRA_CXX_FLAGS, TEST_SUITE_EXTRA_EXE_LINKER_FLAGS) + +if (TEST_SUITE_FORTRAN) + mark_as_advanced(TEST_SUITE_EXTRA_Fortran_FLAGS TEST_SUITE_EXTRA_EXE_LINKER_FLAGS) +endif() + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TEST_SUITE_EXTRA_C_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TEST_SUITE_EXTRA_CXX_FLAGS}") +if (TEST_SUITE_FORTRAN) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${TEST_SUITE_EXTRA_Fortran_FLAGS}") +endif() + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${TEST_SUITE_EXTRA_EXE_LINKER_FLAGS}") Index: SingleSource/UnitTests/CMakeLists.txt =================================================================== --- SingleSource/UnitTests/CMakeLists.txt +++ SingleSource/UnitTests/CMakeLists.txt @@ -55,4 +55,9 @@ list(REMOVE_ITEM Source matrix-types-spec.cpp) endif() +# Fortran +if (TEST_SUITE_FORTRAN) + add_subdirectory(Fortran) +endif() + llvm_singlesource() Index: SingleSource/UnitTests/Fortran/CMakeLists.txt =================================================================== --- /dev/null +++ SingleSource/UnitTests/Fortran/CMakeLists.txt @@ -0,0 +1,3 @@ +file(GLOB Source RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.f90 *.F90 *.f *.F) + +llvm_singlesource() Index: SingleSource/UnitTests/Fortran/hello.f90 =================================================================== --- /dev/null +++ SingleSource/UnitTests/Fortran/hello.f90 @@ -0,0 +1,3 @@ +program hello + print *, 'Hello world' +end program hello Index: SingleSource/UnitTests/Fortran/hello.reference_output =================================================================== --- /dev/null +++ SingleSource/UnitTests/Fortran/hello.reference_output @@ -0,0 +1,2 @@ + Hello world +exit 0 Index: cmake/modules/SingleMultiSource.cmake =================================================================== --- cmake/modules/SingleMultiSource.cmake +++ cmake/modules/SingleMultiSource.cmake @@ -33,7 +33,7 @@ if(DEFINED Source) set(sources ${Source}) else() - file(GLOB sources *.c *.cpp *.cc) + file(GLOB sources *.c *.cpp *.cc *.f *.F *.f90 *.F90) endif() foreach(source ${sources}) basename(name ${source}) @@ -51,7 +51,7 @@ function(llvm_multisource target) set(sources ${ARGN}) if(NOT sources) - file(GLOB sources *.c *.cpp *.cc) + file(GLOB sources *.c *.cpp *.cc *.f *.F *.f90 *.F90) endif() llvm_test_executable_no_test(${target} ${sources})