Enable building LTO on WIN32.
authorRafael Espindola <rafael.espindola@gmail.com>
Mon, 30 Sep 2013 15:28:14 +0000 (15:28 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Mon, 30 Sep 2013 15:28:14 +0000 (15:28 +0000)
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!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191670 91177308-0d34-0410-b5e6-96231b3b80d8

test/LTO/cfi_endproc.ll
test/LTO/lit.local.cfg
tools/CMakeLists.txt
tools/lto/CMakeLists.txt

index 0a47b0225ee444cb08e0b78035e9e93ff90fbd7b..ecb0ed506e640f2caf4065e79900f72e934a6561 100644 (file)
@@ -17,4 +17,3 @@ define i32 @main(i32 %argc, i8** %argv) {
   call void @PR14512()
   ret i32 0
 }
-; XFAIL: win32
index f61943a77af95fe5f02dfe6477db44ecc114bb68..7a70736aeac254a450ba5ea6e123144d2c5ead1e 100644 (file)
@@ -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
index 468d396b59af836dc87d8bd8602172be5478d03f..d8001e75a70c94c4265fab2c98140a7080668ee9 100644 (file)
@@ -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()
index 8b26ddd57e8879693b12bf3b865477093c985e52..5e5d8adecf788e99d8f5004f7499f0afbad8cab1 100644 (file)
@@ -9,7 +9,19 @@ 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(SOURCES ${SOURCES} ${LTO_EXPORTS_DEF})
+  endif()
+
   set(bsl ${BUILD_SHARED_LIBS})
   set(BUILD_SHARED_LIBS ON)
   add_llvm_library(LTO ${SOURCES})
@@ -25,7 +37,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()