[llvm] r373555 - [gicombiner] Make rL373551 compatible with older cmakes

Daniel Sanders via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 3 12:14:15 PDT 2019


It should be fixed in r373651. It turns out that cmake option causes add_llvm_library to automatically link to libLLVM.dylib.

Just to mention it: All the unittests failed for me in the -DLLVM_LINK_LLVM_DYLIB=ON build but that happens without the change too so I assume that that build just doesn't work properly on macOS. Hopefully they'll pass on the bots and your builds.

> On Oct 3, 2019, at 10:46, Daniel Sanders <daniel_l_sanders at apple.com> wrote:
> 
> I can reproduce it with -DLLVM_LINK_LLVM_DYLIB=ON. Curiously, the new static library isn't mentioned in the error at all
> 
>> On Oct 3, 2019, at 10:27, Daniel Sanders via llvm-commits <llvm-commits at lists.llvm.org> wrote:
>> 
>> That's strange. The bots started passing after this change. I'll take a look
>> 
>>> On Oct 3, 2019, at 05:17, Fedor Sergeev <fedor.sergeev at azul.com> wrote:
>>> 
>>> I'm seeing this failure as well.
>>> The following cmake invocation fails with both newest (3.15.4) and older (3.5.1) cmakes:
>>>  cmake -DLLVM_LINK_LLVM_DYLIB=ON
>>> 
>>> Apparently, cmake cant handle cyclic dependency with SHARED LLVM library.
>>> 
>>> regards,
>>> Fedor.
>>> 
>>> On 10/3/19 1:38 PM, Kristina Brooks via llvm-commits wrote:
>>>> Hi,
>>>> 
>>>> Do you mind looking into this failure? The OBJECT->STATIC change seems
>>>> to have broken newer CMakes.
>>>> 
>>>> Specifically, it seems that the dynamic libLLVM + Modules builds are
>>>> failing now (log from cmake version 3.10.2 below, from a clean cache):
>>>> 
>>>> -- Configuring done
>>>> CMake Error: The inter-target dependency graph contains the following
>>>> strongly connected component (cycle):
>>>> "llvm-tblgen" of type EXECUTABLE
>>>>   depends on "LLVM" (weak)
>>>> "intrinsics_gen" of type UTILITY
>>>>   depends on "llvm-tblgen" (strong)
>>>> "LLVMCore" of type STATIC_LIBRARY
>>>>   depends on "AttributeCompatFuncTableGen" (strong)
>>>>   depends on "intrinsics_gen" (strong)
>>>> "AttributeCompatFuncTableGen" of type UTILITY
>>>>   depends on "llvm-tblgen" (strong)
>>>> "LLVMFuzzMutate" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMIRReader" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMCodeGen" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMSelectionDAG" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMAsmPrinter" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMMIRParser" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMGlobalISel" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMBitReader" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMBitWriter" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMTransformUtils" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMInstrumentation" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMAggressiveInstCombine" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMInstCombine" of type STATIC_LIBRARY
>>>>   depends on "InstCombineTableGen" (strong)
>>>>   depends on "intrinsics_gen" (strong)
>>>> "InstCombineTableGen" of type UTILITY
>>>>   depends on "llvm-tblgen" (strong)
>>>> "LLVMScalarOpts" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMipo" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMVectorize" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMObjCARCOpts" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMCoroutines" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMLinker" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMAnalysis" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMLTO" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMObject" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMExecutionEngine" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMInterpreter" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMJITLink" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMMCJIT" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMOrcJIT" of type STATIC_LIBRARY
>>>>   depends on "LLVMAnalysis" (weak)
>>>>   depends on "LLVMCore" (weak)
>>>>   depends on "LLVMObject" (weak)
>>>>   depends on "LLVMBitReader" (weak)
>>>>   depends on "LLVMProfileData" (weak)
>>>>   depends on "LLVMBitWriter" (weak)
>>>>   depends on "LLVMPasses" (weak)
>>>>   depends on "LLVMAggressiveInstCombine" (weak)
>>>>   depends on "LLVMTransformUtils" (weak)
>>>>   depends on "LLVMCodeGen" (weak)
>>>>   depends on "LLVMScalarOpts" (weak)
>>>>   depends on "LLVMInstCombine" (weak)
>>>>   depends on "LLVMTarget" (weak)
>>>>   depends on "LLVMInstrumentation" (weak)
>>>>   depends on "LLVMVectorize" (weak)
>>>>   depends on "LLVMipo" (weak)
>>>>   depends on "LLVMIRReader" (weak)
>>>>   depends on "LLVMAsmParser" (weak)
>>>>   depends on "LLVMLinker" (weak)
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMRuntimeDyld" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMTarget" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMX86CodeGen" of type STATIC_LIBRARY
>>>>   depends on "X86CommonTableGen" (strong)
>>>>   depends on "intrinsics_gen" (strong)
>>>> "X86CommonTableGen" of type UTILITY
>>>>   depends on "intrinsics_gen" (strong)
>>>>   depends on "llvm-tblgen" (strong)
>>>> "LLVMX86AsmParser" of type STATIC_LIBRARY
>>>>   depends on "X86CommonTableGen" (strong)
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMX86Disassembler" of type STATIC_LIBRARY
>>>>   depends on "X86CommonTableGen" (strong)
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMX86Desc" of type STATIC_LIBRARY
>>>>   depends on "X86CommonTableGen" (strong)
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMX86Info" of type STATIC_LIBRARY
>>>>   depends on "X86CommonTableGen" (strong)
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMX86Utils" of type STATIC_LIBRARY
>>>>   depends on "X86CommonTableGen" (strong)
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMAsmParser" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMProfileData" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMCoverage" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMPasses" of type STATIC_LIBRARY
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LLVMDlltoolDriver" of type STATIC_LIBRARY
>>>>   depends on "DllOptionsTableGen" (strong)
>>>> "DllOptionsTableGen" of type UTILITY
>>>>   depends on "llvm-tblgen" (strong)
>>>> "LLVMLibDriver" of type STATIC_LIBRARY
>>>>   depends on "LibOptionsTableGen" (strong)
>>>>   depends on "intrinsics_gen" (strong)
>>>> "LibOptionsTableGen" of type UTILITY
>>>>   depends on "llvm-tblgen" (strong)
>>>> "LLVM" of type SHARED_LIBRARY
>>>>   depends on "LLVMCore" (weak)
>>>>   depends on "LLVMFuzzMutate" (weak)
>>>>   depends on "LLVMAnalysis" (weak)
>>>>   depends on "LLVMObject" (weak)
>>>>   depends on "LLVMBitReader" (weak)
>>>>   depends on "LLVMProfileData" (weak)
>>>>   depends on "LLVMBitWriter" (weak)
>>>>   depends on "LLVMScalarOpts" (weak)
>>>>   depends on "LLVMAggressiveInstCombine" (weak)
>>>>   depends on "LLVMTransformUtils" (weak)
>>>>   depends on "LLVMInstCombine" (weak)
>>>>   depends on "LLVMTarget" (weak)
>>>>   depends on "LLVMIRReader" (weak)
>>>>   depends on "LLVMAsmParser" (weak)
>>>>   depends on "LLVMCodeGen" (weak)
>>>>   depends on "LLVMSelectionDAG" (weak)
>>>>   depends on "LLVMAsmPrinter" (weak)
>>>>   depends on "LLVMMIRParser" (weak)
>>>>   depends on "LLVMGlobalISel" (weak)
>>>>   depends on "LLVMInstrumentation" (weak)
>>>>   depends on "LLVMipo" (weak)
>>>>   depends on "LLVMLinker" (weak)
>>>>   depends on "LLVMVectorize" (weak)
>>>>   depends on "LLVMObjCARCOpts" (weak)
>>>>   depends on "LLVMCoroutines" (weak)
>>>>   depends on "LLVMLTO" (weak)
>>>>   depends on "LLVMPasses" (weak)
>>>>   depends on "LLVMExecutionEngine" (weak)
>>>>   depends on "LLVMRuntimeDyld" (weak)
>>>>   depends on "LLVMInterpreter" (weak)
>>>>   depends on "LLVMJITLink" (weak)
>>>>   depends on "LLVMMCJIT" (weak)
>>>>   depends on "LLVMOrcJIT" (weak)
>>>>   depends on "LLVMX86CodeGen" (weak)
>>>>   depends on "LLVMX86Desc" (weak)
>>>>   depends on "LLVMX86Info" (weak)
>>>>   depends on "LLVMX86Utils" (weak)
>>>>   depends on "LLVMX86AsmParser" (weak)
>>>>   depends on "LLVMX86Disassembler" (weak)
>>>>   depends on "LLVMCoverage" (weak)
>>>>   depends on "LLVMDlltoolDriver" (weak)
>>>>   depends on "LLVMLibDriver" (weak)
>>>> At least one of these targets is not a STATIC_LIBRARY.  Cyclic
>>>> dependencies are allowed only among static libraries.
>>>> -- Build files have been written to: /o/b/llvm-10/409
>>>> 
>>>> I'm reverting this change for now, I'm not sure what the best solution
>>>> is, since `CodeExpander.cpp` seems to have caused some bots to fail
>>>> earlier when built as an OBJECT.
>>>> 
>>>> It may be worth checking the CMake version and adjusting accordingly
>>>> but that seems like a hack more than a proper solution.
>>>> 
>>>> Thank you.
>>>> 
>>>> On Thu, Oct 3, 2019 at 2:46 AM Daniel Sanders via llvm-commits
>>>> <llvm-commits at lists.llvm.org> wrote:
>>>>> Author: dsanders
>>>>> Date: Wed Oct  2 18:49:04 2019
>>>>> New Revision: 373555
>>>>> 
>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=373555&view=rev
>>>>> Log:
>>>>> [gicombiner] Make rL373551 compatible with older cmakes
>>>>> 
>>>>> Newer cmakes appear to be more flexible w.r.t object libraries. Convert to
>>>>> a static library so that it works with older cmakes too
>>>>> 
>>>>> Modified:
>>>>>   llvm/trunk/unittests/TableGen/CMakeLists.txt
>>>>>   llvm/trunk/utils/TableGen/CMakeLists.txt
>>>>>   llvm/trunk/utils/TableGen/GlobalISel/CMakeLists.txt
>>>>> 
>>>>> Modified: llvm/trunk/unittests/TableGen/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/TableGen/CMakeLists.txt?rev=373555&r1=373554&r2=373555&view=diff
>>>>> ==============================================================================
>>>>> --- llvm/trunk/unittests/TableGen/CMakeLists.txt (original)
>>>>> +++ llvm/trunk/unittests/TableGen/CMakeLists.txt Wed Oct  2 18:49:04 2019
>>>>> @@ -5,7 +5,6 @@ set(LLVM_LINK_COMPONENTS
>>>>> 
>>>>> add_llvm_unittest(TableGenTests
>>>>>  CodeExpanderTest.cpp
>>>>> -  $<TARGET_OBJECTS:obj.LLVMTableGenGlobalISel>
>>>>>  )
>>>>> -
>>>>> include_directories(${CMAKE_SOURCE_DIR}/utils/TableGen)
>>>>> +target_link_libraries(TableGenTests PRIVATE LLVMTableGenGlobalISel)
>>>>> 
>>>>> Modified: llvm/trunk/utils/TableGen/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CMakeLists.txt?rev=373555&r1=373554&r2=373555&view=diff
>>>>> ==============================================================================
>>>>> --- llvm/trunk/utils/TableGen/CMakeLists.txt (original)
>>>>> +++ llvm/trunk/utils/TableGen/CMakeLists.txt Wed Oct  2 18:49:04 2019
>>>>> @@ -51,6 +51,6 @@ add_tablegen(llvm-tblgen LLVM
>>>>>  X86RecognizableInstr.cpp
>>>>>  WebAssemblyDisassemblerEmitter.cpp
>>>>>  CTagsEmitter.cpp
>>>>> -  $<TARGET_OBJECTS:obj.LLVMTableGenGlobalISel>
>>>>>  )
>>>>> +target_link_libraries(llvm-tblgen PRIVATE LLVMTableGenGlobalISel)
>>>>> set_target_properties(llvm-tblgen PROPERTIES FOLDER "Tablegenning")
>>>>> 
>>>>> Modified: llvm/trunk/utils/TableGen/GlobalISel/CMakeLists.txt
>>>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/GlobalISel/CMakeLists.txt?rev=373555&r1=373554&r2=373555&view=diff
>>>>> ==============================================================================
>>>>> --- llvm/trunk/utils/TableGen/GlobalISel/CMakeLists.txt (original)
>>>>> +++ llvm/trunk/utils/TableGen/GlobalISel/CMakeLists.txt Wed Oct  2 18:49:04 2019
>>>>> @@ -2,6 +2,6 @@ set(LLVM_LINK_COMPONENTS
>>>>>  Support
>>>>>  )
>>>>> 
>>>>> -llvm_add_library(LLVMTableGenGlobalISel OBJECT
>>>>> +llvm_add_library(LLVMTableGenGlobalISel STATIC
>>>>>                 CodeExpander.cpp
>>>>>                )
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> llvm-commits mailing list
>>>>> llvm-commits at lists.llvm.org
>>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>> _______________________________________________
>>>> llvm-commits mailing list
>>>> llvm-commits at lists.llvm.org
>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> 



More information about the llvm-commits mailing list