summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Modules/CheckIPOSupported.cmake9
-rw-r--r--Modules/CheckIPOSupported/CMakeLists-Fortran.txt.in8
-rw-r--r--Modules/CheckIPOSupported/foo.f2
-rw-r--r--Modules/CheckIPOSupported/main.f3
-rw-r--r--Tests/RunCMake/CheckIPOSupported/RunCMakeTest.cmake1
-rw-r--r--Tests/RunCMake/CheckIPOSupported/user-lang-fortran-result.txt1
-rw-r--r--Tests/RunCMake/CheckIPOSupported/user-lang-fortran-stderr.txt6
-rw-r--r--Tests/RunCMake/CheckIPOSupported/user-lang-fortran.cmake1
8 files changed, 16 insertions, 15 deletions
diff --git a/Modules/CheckIPOSupported.cmake b/Modules/CheckIPOSupported.cmake
index f0e476a42a..712a95e0c2 100644
--- a/Modules/CheckIPOSupported.cmake
+++ b/Modules/CheckIPOSupported.cmake
@@ -93,11 +93,14 @@ macro(_ipo_run_language_check language)
string(COMPARE EQUAL "${language}" "C" is_c)
string(COMPARE EQUAL "${language}" "CXX" is_cxx)
+ string(COMPARE EQUAL "${language}" "Fortran" is_fortran)
if(is_c)
set(copy_sources foo.c main.c)
elseif(is_cxx)
set(copy_sources foo.cpp main.cpp)
+ elseif(is_fortran)
+ set(copy_sources foo.f main.f)
else()
message(FATAL_ERROR "Language not supported")
endif()
@@ -204,12 +207,6 @@ function(check_ipo_supported)
endif()
endif()
- list(FIND languages "Fortran" result)
- if(NOT result EQUAL -1)
- _ipo_not_supported("Fortran is not supported")
- return()
- endif()
-
if(NOT _CMAKE_IPO_SUPPORTED_BY_CMAKE)
_ipo_not_supported("CMake doesn't support IPO for current compiler")
return()
diff --git a/Modules/CheckIPOSupported/CMakeLists-Fortran.txt.in b/Modules/CheckIPOSupported/CMakeLists-Fortran.txt.in
new file mode 100644
index 0000000000..9fab0772f4
--- /dev/null
+++ b/Modules/CheckIPOSupported/CMakeLists-Fortran.txt.in
@@ -0,0 +1,8 @@
+cmake_minimum_required(VERSION "@CMAKE_VERSION@")
+project("@TRY_COMPILE_PROJECT_NAME@" LANGUAGES Fortran)
+
+cmake_policy(SET CMP0069 NEW)
+
+add_library(foo foo.f)
+add_executable(boo main.f)
+target_link_libraries(boo PUBLIC foo)
diff --git a/Modules/CheckIPOSupported/foo.f b/Modules/CheckIPOSupported/foo.f
new file mode 100644
index 0000000000..945d2d559e
--- /dev/null
+++ b/Modules/CheckIPOSupported/foo.f
@@ -0,0 +1,2 @@
+ SUBROUTINE FOO
+ END
diff --git a/Modules/CheckIPOSupported/main.f b/Modules/CheckIPOSupported/main.f
new file mode 100644
index 0000000000..9d1de9f8a4
--- /dev/null
+++ b/Modules/CheckIPOSupported/main.f
@@ -0,0 +1,3 @@
+ PROGRAM BOO
+ CALL FOO()
+ END
diff --git a/Tests/RunCMake/CheckIPOSupported/RunCMakeTest.cmake b/Tests/RunCMake/CheckIPOSupported/RunCMakeTest.cmake
index 812f79b168..588a75dbb6 100644
--- a/Tests/RunCMake/CheckIPOSupported/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CheckIPOSupported/RunCMakeTest.cmake
@@ -2,7 +2,6 @@ include(RunCMake)
run_cmake(unparsed-arguments)
run_cmake(user-lang-unknown)
-run_cmake(user-lang-fortran)
run_cmake(default-lang-none)
run_cmake(not-supported-by-cmake)
run_cmake(not-supported-by-compiler)
diff --git a/Tests/RunCMake/CheckIPOSupported/user-lang-fortran-result.txt b/Tests/RunCMake/CheckIPOSupported/user-lang-fortran-result.txt
deleted file mode 100644
index d00491fd7e..0000000000
--- a/Tests/RunCMake/CheckIPOSupported/user-lang-fortran-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/CheckIPOSupported/user-lang-fortran-stderr.txt b/Tests/RunCMake/CheckIPOSupported/user-lang-fortran-stderr.txt
deleted file mode 100644
index 2cb595d3b4..0000000000
--- a/Tests/RunCMake/CheckIPOSupported/user-lang-fortran-stderr.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-^CMake Error at .*/Modules/CheckIPOSupported\.cmake:[0-9]+ \(message\):
- IPO is not supported \(Fortran is not supported\)\.
-Call Stack \(most recent call first\):
- .*/Modules/CheckIPOSupported\.cmake:[0-9]+ \(_ipo_not_supported\)
- user-lang-fortran\.cmake:[0-9]+ \(check_ipo_supported\)
- CMakeLists\.txt:[0-9]+ \(include\)$
diff --git a/Tests/RunCMake/CheckIPOSupported/user-lang-fortran.cmake b/Tests/RunCMake/CheckIPOSupported/user-lang-fortran.cmake
deleted file mode 100644
index 275dbd9abb..0000000000
--- a/Tests/RunCMake/CheckIPOSupported/user-lang-fortran.cmake
+++ /dev/null
@@ -1 +0,0 @@
-check_ipo_supported(LANGUAGES "Fortran")