summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-10-02 14:04:38 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-10-02 14:04:38 +0000
commitd38f9af2136f74054feef7eea5f2a24164dfab2d (patch)
treedcb32180efe17ed2dc323db70d9976bcb83ceb1f
parent945397157ba04d023591c8e648c88cb390475e93 (diff)
downloadbcm5719-llvm-d38f9af2136f74054feef7eea5f2a24164dfab2d.tar.gz
bcm5719-llvm-d38f9af2136f74054feef7eea5f2a24164dfab2d.zip
Enable building LTO on WIN32.
Enable building the LTO library (.lib and.dll) and llvm-lto.exe on Windows with MSVC and Mingw as well as re-enabling the associated test. Patch by Greg Bedwell! llvm-svn: 191823
-rw-r--r--llvm/test/LTO/cfi_endproc.ll1
-rw-r--r--llvm/test/LTO/lit.local.cfg2
-rw-r--r--llvm/tools/CMakeLists.txt2
-rw-r--r--llvm/tools/lto/CMakeLists.txt20
4 files changed, 19 insertions, 6 deletions
diff --git a/llvm/test/LTO/cfi_endproc.ll b/llvm/test/LTO/cfi_endproc.ll
index 0a47b0225ee..ecb0ed506e6 100644
--- a/llvm/test/LTO/cfi_endproc.ll
+++ b/llvm/test/LTO/cfi_endproc.ll
@@ -17,4 +17,3 @@ define i32 @main(i32 %argc, i8** %argv) {
call void @PR14512()
ret i32 0
}
-; XFAIL: win32
diff --git a/llvm/test/LTO/lit.local.cfg b/llvm/test/LTO/lit.local.cfg
index f61943a77af..7a70736aeac 100644
--- a/llvm/test/LTO/lit.local.cfg
+++ b/llvm/test/LTO/lit.local.cfg
@@ -2,5 +2,5 @@ targets = set(config.root.targets_to_build.split())
if not 'X86' in targets:
config.unsupported = True
-if config.root.host_os in ['Cygwin', 'MingW', 'Windows']:
+if config.root.host_os in ['Cygwin']:
config.unsupported = True
diff --git a/llvm/tools/CMakeLists.txt b/llvm/tools/CMakeLists.txt
index 468d396b59a..d8001e75a70 100644
--- a/llvm/tools/CMakeLists.txt
+++ b/llvm/tools/CMakeLists.txt
@@ -43,7 +43,7 @@ add_llvm_tool_subdirectory(llvm-symbolizer)
add_llvm_tool_subdirectory(obj2yaml)
add_llvm_tool_subdirectory(yaml2obj)
-if( NOT WIN32 )
+if( NOT CYGWIN )
add_llvm_tool_subdirectory(lto)
add_llvm_tool_subdirectory(llvm-lto)
else()
diff --git a/llvm/tools/lto/CMakeLists.txt b/llvm/tools/lto/CMakeLists.txt
index 8b26ddd57e8..89160ee0239 100644
--- a/llvm/tools/lto/CMakeLists.txt
+++ b/llvm/tools/lto/CMakeLists.txt
@@ -9,10 +9,24 @@ set(SOURCES
lto.cpp
)
-if( NOT WIN32 AND LLVM_ENABLE_PIC )
+if( NOT CYGWIN AND LLVM_ENABLE_PIC )
+ if ( WIN32 )
+ # Create .def file containing a list of exports preceeded by
+ # 'EXPORTS'. The file "lto.exports" already contains the list, so we
+ # massage it into the correct format here to create "lto.exports.def".
+ set(LTO_EXPORTS_DEF ${CMAKE_CURRENT_BINARY_DIR}/lto.exports.def)
+ file(READ "lto.exports" exports_list)
+ file(WRITE ${LTO_EXPORTS_DEF} "LIBRARY LTO\n")
+ file(APPEND ${LTO_EXPORTS_DEF} "EXPORTS\n")
+ file(APPEND ${LTO_EXPORTS_DEF} ${exports_list})
+ set(SHARED_LIB_SOURCES ${SOURCES} ${LTO_EXPORTS_DEF})
+ else()
+ set(SHARED_LIB_SOURCES ${SOURCES})
+ endif()
+
set(bsl ${BUILD_SHARED_LIBS})
set(BUILD_SHARED_LIBS ON)
- add_llvm_library(LTO ${SOURCES})
+ add_llvm_library(LTO ${SHARED_LIB_SOURCES})
set_property(TARGET LTO PROPERTY OUTPUT_NAME "LTO")
set(BUILD_SHARED_LIBS ${bsl})
set(LTO_STATIC_TARGET_NAME LTO_static)
@@ -25,7 +39,7 @@ if( NOT BUILD_SHARED_LIBS )
set_property(TARGET ${LTO_STATIC_TARGET_NAME} PROPERTY OUTPUT_NAME "LTO")
endif()
-if( NOT WIN32 )
+if( NOT CYGWIN )
install(FILES ${LLVM_MAIN_INCLUDE_DIR}/llvm-c/lto.h
DESTINATION include/llvm-c)
endif()
OpenPOWER on IntegriCloud