1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-20 12:53:55 +08:00

Tests: Add cases for typical CheckIPOSupported usage

This commit is contained in:
Ruslan Baratov
2017-04-13 23:05:16 +08:00
committed by Brad King
parent f79b8fad09
commit eeb58c5c34
10 changed files with 99 additions and 0 deletions

View File

@@ -477,6 +477,17 @@ if(BUILD_TESTING)
ADD_TEST_MACRO(Module.CheckTypeSize CheckTypeSize)
set(Module.CheckIPOSupported-C_BUILD_OPTIONS -DCMake_TEST_IPO_WORKS_C=${CMake_TEST_IPO_WORKS_C})
ADD_TEST_MACRO(Module.CheckIPOSupported-C CheckIPOSupported-C)
set(Module.CheckIPOSupported-CXX_BUILD_OPTIONS -DCMake_TEST_IPO_WORKS_CXX=${CMake_TEST_IPO_WORKS_CXX})
ADD_TEST_MACRO(Module.CheckIPOSupported-CXX CheckIPOSupported-CXX)
if(CMAKE_Fortran_COMPILER)
set(Module.CheckIPOSupported-Fortran_BUILD_OPTIONS -DCMake_TEST_IPO_WORKS_Fortran=${CMake_TEST_IPO_WORKS_Fortran})
ADD_TEST_MACRO(Module.CheckIPOSupported-Fortran CheckIPOSupported-Fortran)
endif()
add_test(Module.ExternalData ${CMAKE_CTEST_COMMAND}
--build-and-test
"${CMake_SOURCE_DIR}/Tests/Module/ExternalData"

View File

@@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 3.8)
project(CheckIPOSupported-C LANGUAGES C)
cmake_policy(SET CMP0069 NEW)
include(CheckIPOSupported)
check_ipo_supported(RESULT ipo_supported)
if(ipo_supported)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
elseif(CMake_TEST_IPO_WORKS_C)
message(FATAL_ERROR "IPO expected to work")
endif()
add_library(foo foo.c)
add_executable(CheckIPOSupported-C main.c)
target_link_libraries(CheckIPOSupported-C PUBLIC foo)
enable_testing()
add_test(NAME CheckIPOSupported-C COMMAND CheckIPOSupported-C)

View File

@@ -0,0 +1,4 @@
int foo()
{
return 0x42;
}

View File

@@ -0,0 +1,9 @@
int foo();
int main()
{
if (foo() == 0) {
return 1;
}
return 0;
}

View File

@@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 3.8)
project(CheckIPOSupported-CXX LANGUAGES CXX)
cmake_policy(SET CMP0069 NEW)
include(CheckIPOSupported)
check_ipo_supported(RESULT ipo_supported)
if(ipo_supported)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
elseif(CMake_TEST_IPO_WORKS_CXX)
message(FATAL_ERROR "IPO expected to work")
endif()
add_library(foo foo.cpp)
add_executable(CheckIPOSupported-CXX main.cpp)
target_link_libraries(CheckIPOSupported-CXX PUBLIC foo)
enable_testing()
add_test(NAME CheckIPOSupported-CXX COMMAND CheckIPOSupported-CXX)

View File

@@ -0,0 +1,4 @@
int foo()
{
return 0x42;
}

View File

@@ -0,0 +1,9 @@
int foo();
int main()
{
if (foo() == 0) {
return 1;
}
return 0;
}

View File

@@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 3.8)
project(CheckIPOSupported-Fortran LANGUAGES Fortran)
cmake_policy(SET CMP0069 NEW)
include(CheckIPOSupported)
check_ipo_supported(RESULT ipo_supported)
if(ipo_supported)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
elseif(CMake_TEST_IPO_WORKS_Fortran)
message(FATAL_ERROR "IPO expected to work")
endif()
add_library(foo foo.f)
add_executable(CheckIPOSupported-Fortran main.f)
target_link_libraries(CheckIPOSupported-Fortran PUBLIC foo)
enable_testing()
add_test(NAME CheckIPOSupported-Fortran COMMAND CheckIPOSupported-Fortran)

View File

@@ -0,0 +1,2 @@
SUBROUTINE FOO
END

View File

@@ -0,0 +1,3 @@
PROGRAM BOO
CALL FOO()
END