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

Daniel Sanders via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 3 10:46:36 PDT 2019


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