mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-03 12:49:50 -05:00
Merge topic 'clang-ipo-support'
dca9c33abcTests: Remove old IPO testc856d4556bbindexplib: supporting llvm bitcode formats using llvm-nm079b8e2916Clang: prefer lld-link over link.exe6e3655db2cClang: add LTO support for GNU-command line clang on windows Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3527
This commit is contained in:
@@ -416,7 +416,6 @@ if(BUILD_TESTING)
|
||||
ADD_TEST_MACRO(COnly COnly)
|
||||
ADD_TEST_MACRO(CxxOnly CxxOnly)
|
||||
ADD_TEST_MACRO(CxxSubdirC CxxSubdirC)
|
||||
ADD_TEST_MACRO(IPO COnly/COnly)
|
||||
ADD_TEST_MACRO(OutDir runtime/OutDir)
|
||||
ADD_TEST_MACRO(OutName exe.OutName.exe)
|
||||
ADD_TEST_MACRO(ObjectLibrary UseCshared)
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
cmake_minimum_required (VERSION 2.8)
|
||||
project(IPO NONE)
|
||||
|
||||
set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION 1)
|
||||
|
||||
add_subdirectory(../COnly COnly)
|
||||
add_subdirectory(../CxxOnly CxxOnly)
|
||||
@@ -13,8 +13,18 @@ elseif(CMake_TEST_IPO_WORKS_C)
|
||||
endif()
|
||||
|
||||
add_library(foo foo.c)
|
||||
if(NOT CYGWIN AND (NOT WIN32 OR "x${CMAKE_C_COMPILER_ID}" STREQUAL "xClang"))
|
||||
add_library(bar SHARED bar.c)
|
||||
if(WIN32)
|
||||
# Bindexplib for clang supports LTO objects
|
||||
set_target_properties(bar PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||||
endif()
|
||||
else()
|
||||
# TODO: bindexplib doesn't support exporting IPO symbols with other compilers on Windows
|
||||
add_library(bar STATIC bar.c)
|
||||
endif()
|
||||
add_executable(CheckIPOSupported-C main.c)
|
||||
target_link_libraries(CheckIPOSupported-C PUBLIC foo)
|
||||
target_link_libraries(CheckIPOSupported-C PUBLIC foo bar)
|
||||
|
||||
enable_testing()
|
||||
add_test(NAME CheckIPOSupported-C COMMAND CheckIPOSupported-C)
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
int bar()
|
||||
{
|
||||
return 0x42;
|
||||
}
|
||||
@@ -1,8 +1,9 @@
|
||||
int foo();
|
||||
int bar();
|
||||
|
||||
int main()
|
||||
{
|
||||
if (foo() == 0) {
|
||||
if (foo() != bar()) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
@@ -12,9 +12,20 @@ elseif(CMake_TEST_IPO_WORKS_CXX)
|
||||
message(FATAL_ERROR "IPO expected to work, but the check failed:\n ${ipo_output}")
|
||||
endif()
|
||||
|
||||
add_library(foo foo.cpp)
|
||||
|
||||
add_library(foo STATIC foo.cpp)
|
||||
if(NOT CYGWIN AND (NOT WIN32 OR "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang"))
|
||||
add_library(bar SHARED bar.cpp)
|
||||
if(WIN32)
|
||||
# Bindexplib for clang supports LTO objects
|
||||
set_target_properties(bar PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||||
endif()
|
||||
else()
|
||||
# TODO: bindexplib doesn't support exporting IPO symbols with other compilers on Windows
|
||||
add_library(bar STATIC bar.cpp)
|
||||
endif()
|
||||
add_executable(CheckIPOSupported-CXX main.cpp)
|
||||
target_link_libraries(CheckIPOSupported-CXX PUBLIC foo)
|
||||
target_link_libraries(CheckIPOSupported-CXX PUBLIC foo bar)
|
||||
|
||||
enable_testing()
|
||||
add_test(NAME CheckIPOSupported-CXX COMMAND CheckIPOSupported-CXX)
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
int bar()
|
||||
{
|
||||
return 0x42;
|
||||
}
|
||||
@@ -1,8 +1,9 @@
|
||||
int foo();
|
||||
int bar();
|
||||
|
||||
int main()
|
||||
{
|
||||
if (foo() == 0) {
|
||||
if (foo() != bar()) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user