mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
CMake: Disable ENABLE_EXPORTS for executables with MSVC
The MSVC linker won't produce a .lib file for an executable that doesn't export anything, and LLVM doesn't maintain dllexport annotations or .def files listing all C++ symbols. It also doesn't support exporting all symbols, like binutils ld. CMake 3.2 changed the Ninja generator to list both the .exe and .lib files as outputs of executable build targets. Ninja would always re-link executables with ENABLE_EXPORTS because the .lib output file was not present, and therefore the target was out of date. llvm-svn: 232662
This commit is contained in:
parent
78206bb550
commit
8387c0d5ea
@ -557,7 +557,7 @@ if( ${CMAKE_SYSTEM_NAME} MATCHES SunOS )
|
||||
endif( ${CMAKE_SYSTEM_NAME} MATCHES SunOS )
|
||||
|
||||
# Make sure we don't get -rdynamic in every binary. For those that need it,
|
||||
# use set_target_properties(target PROPERTIES ENABLE_EXPORTS 1)
|
||||
# use export_executable_symbols(target).
|
||||
set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
|
||||
|
||||
include(AddLLVM)
|
||||
|
@ -490,6 +490,12 @@ macro(add_llvm_executable name)
|
||||
endif( LLVM_COMMON_DEPENDS )
|
||||
endmacro(add_llvm_executable name)
|
||||
|
||||
function(export_executable_symbols target)
|
||||
if (NOT MSVC) # MSVC's linker doesn't support exporting all symbols.
|
||||
set_target_properties(${target} PROPERTIES ENABLE_EXPORTS 1)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
|
||||
set (LLVM_TOOLCHAIN_TOOLS
|
||||
llvm-ar
|
||||
|
@ -15,4 +15,4 @@ add_llvm_example(ExceptionDemo
|
||||
ExceptionDemo.cpp
|
||||
)
|
||||
|
||||
set_target_properties(ExceptionDemo PROPERTIES ENABLE_EXPORTS 1)
|
||||
export_executable_symbols(ExceptionDemo)
|
||||
|
@ -31,7 +31,7 @@ add_llvm_tool(bugpoint
|
||||
ToolRunner.cpp
|
||||
bugpoint.cpp
|
||||
)
|
||||
set_target_properties(bugpoint PROPERTIES ENABLE_EXPORTS 1)
|
||||
export_executable_symbols(bugpoint)
|
||||
|
||||
if(WITH_POLLY AND LINK_POLLY_INTO_TOOLS)
|
||||
target_link_libraries(bugpoint Polly)
|
||||
|
@ -17,4 +17,4 @@ set(LLVM_NO_DEAD_STRIP 1)
|
||||
add_llvm_tool(llc
|
||||
llc.cpp
|
||||
)
|
||||
set_target_properties(llc PROPERTIES ENABLE_EXPORTS 1)
|
||||
export_executable_symbols(llc)
|
||||
|
@ -39,4 +39,4 @@ add_llvm_tool(lli
|
||||
RemoteTarget.cpp
|
||||
RemoteTargetExternal.cpp
|
||||
)
|
||||
set_target_properties(lli PROPERTIES ENABLE_EXPORTS 1)
|
||||
export_executable_symbols(llvm-stress)
|
||||
|
@ -7,4 +7,4 @@ set(LLVM_LINK_COMPONENTS
|
||||
add_llvm_tool(llvm-stress
|
||||
llvm-stress.cpp
|
||||
)
|
||||
set_target_properties(llvm-stress PROPERTIES ENABLE_EXPORTS 1)
|
||||
export_executable_symbols(llvm-stress)
|
||||
|
@ -31,7 +31,7 @@ add_llvm_tool(opt
|
||||
PrintSCC.cpp
|
||||
opt.cpp
|
||||
)
|
||||
set_target_properties(opt PROPERTIES ENABLE_EXPORTS 1)
|
||||
export_executable_symbols(opt)
|
||||
|
||||
if(WITH_POLLY AND LINK_POLLY_INTO_TOOLS)
|
||||
target_link_libraries(opt Polly)
|
||||
|
Loading…
x
Reference in New Issue
Block a user