[llvm] r191670 - Enable building LTO on WIN32.

Rafael EspĂ­ndola rafael.espindola at gmail.com
Mon Sep 30 08:43:23 PDT 2013


Greg, can you take a look?

On 30 September 2013 11:40, Timur Iskhodzhanov <timurrrr at google.com> wrote:
> I'm observing a build failure since this change:
>
> FAILED: cmd.exe /c cd . && C:\PROGRA~2\MICROS~2.0\VC\bin\link.exe /lib
> /nologo /DEF:tools\lto\lto.exports.def /out:lib\LTO.lib
> tools\lto\CMakeFiles\LTO_static.dir\LTODisassembler.cpp.obj
> tools\lto\CMakeFiles\LTO_static.dir\lto.cpp.obj  && cd .
> lto.exports.def : error LNK2001: unresolved external symbol LLVMCreateDisasm
> lto.exports.def : error LNK2001: unresolved external symbol LLVMCreateDisasmCPU
> lto.exports.def : error LNK2001: unresolved external symbol LLVMDisasmDispose
> lto.exports.def : error LNK2001: unresolved external symbol
> LLVMDisasmInstruction
> lto.exports.def : error LNK2001: unresolved external symbol LLVMSetDisasmOptions
>
> 2013/9/30 Rafael Espindola <rafael.espindola at gmail.com>:
>> Author: rafael
>> Date: Mon Sep 30 10:28:14 2013
>> New Revision: 191670
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=191670&view=rev
>> Log:
>> 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!
>>
>> Modified:
>>     llvm/trunk/test/LTO/cfi_endproc.ll
>>     llvm/trunk/test/LTO/lit.local.cfg
>>     llvm/trunk/tools/CMakeLists.txt
>>     llvm/trunk/tools/lto/CMakeLists.txt
>>
>> Modified: llvm/trunk/test/LTO/cfi_endproc.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/LTO/cfi_endproc.ll?rev=191670&r1=191669&r2=191670&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/LTO/cfi_endproc.ll (original)
>> +++ llvm/trunk/test/LTO/cfi_endproc.ll Mon Sep 30 10:28:14 2013
>> @@ -17,4 +17,3 @@ define i32 @main(i32 %argc, i8** %argv)
>>    call void @PR14512()
>>    ret i32 0
>>  }
>> -; XFAIL: win32
>>
>> Modified: llvm/trunk/test/LTO/lit.local.cfg
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/LTO/lit.local.cfg?rev=191670&r1=191669&r2=191670&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/LTO/lit.local.cfg (original)
>> +++ llvm/trunk/test/LTO/lit.local.cfg Mon Sep 30 10:28:14 2013
>> @@ -2,5 +2,5 @@ targets = set(config.root.targets_to_bui
>>  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
>>
>> Modified: llvm/trunk/tools/CMakeLists.txt
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/CMakeLists.txt?rev=191670&r1=191669&r2=191670&view=diff
>> ==============================================================================
>> --- llvm/trunk/tools/CMakeLists.txt (original)
>> +++ llvm/trunk/tools/CMakeLists.txt Mon Sep 30 10:28:14 2013
>> @@ -43,7 +43,7 @@ add_llvm_tool_subdirectory(llvm-symboliz
>>  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()
>>
>> Modified: llvm/trunk/tools/lto/CMakeLists.txt
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lto/CMakeLists.txt?rev=191670&r1=191669&r2=191670&view=diff
>> ==============================================================================
>> --- llvm/trunk/tools/lto/CMakeLists.txt (original)
>> +++ llvm/trunk/tools/lto/CMakeLists.txt Mon Sep 30 10:28:14 2013
>> @@ -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()
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list