llvm / clangir

A new (MLIR based) high-level IR for clang.
https://clangir.org
Other
351 stars 95 forks source link

Use shared libs for github actions #655

Open gitoleg opened 4 months ago

gitoleg commented 4 months ago

Maybe we should add one more github action and build with shared libraries as well.
It's not a very frequent case, but it happens sometimes - I mean when building with shared libraries may cause some problems.

This time (as far as I understand, though I may be wrong) this happens because of #638 and now we have a circular dependency:

CMake Error: The inter-target dependency graph contains the following strongly connected component (cycle):
  "clangCodeGen" of type SHARED_LIBRARY
    depends on "clangCIRFrontendAction" (weak)
  "clangCIRFrontendAction" of type SHARED_LIBRARY
    depends on "clangCodeGen" (weak)
    depends on "clangCIRLoweringDirectToLLVM" (weak)
    depends on "clangCIRLoweringThroughMLIR" (weak)
  "clangCIRLoweringDirectToLLVM" of type SHARED_LIBRARY
    depends on "clangCodeGen" (weak)
  "clangCIRLoweringThroughMLIR" of type SHARED_LIBRARY
    depends on "clangCodeGen" (weak)
At least one of these targets is not a STATIC_LIBRARY.  Cyclic dependencies are allowed only among static libraries.
CMake Generate step failed.  Build files cannot be regenerated correctly.

OR ... Am I missing something?

bcardosolopes commented 3 months ago

I'm going to revert that PR, circular dependencies are not acceptable.

shared libraries as well

That'd be great. Do you know how to do it? I have no clue! (cc: @lanza)

bcardosolopes commented 3 months ago

@ChuanqiXu9 had to revert your PR, more context above ^

ChuanqiXu9 commented 3 months ago

Oh, got it. No problem at all. I'll try to look into that when I have time.

gitoleg commented 3 months ago

That'd be great. Do you know how to do it? I have no clue!

@bcardosolopes well, you need to add -DBUILD_SHARED_LIBS=ON in your cmake args.

bcardosolopes commented 3 months ago

That'd be great. Do you know how to do it? I have no clue!

@bcardosolopes well, you need to add -DBUILD_SHARED_LIBS=ON in your cmake args.

My question was regarding how to enable that for github testing to pick up on it. If you know what needs to change I'm happy approving a PR

gitoleg commented 3 months ago

@bcardosolopes got it) well, it's been a while since I touched github actions (8 years, omg! :) ) but I can do it!. But we need to fix the build itself first.

Now the problem is that clangCIR depends on MLIRCIRTransforms , and MLIRCIRTransforms depends on TargetLowering that used CIRDataLayout which is in clangCIR .

I'm not sure that's good that CIR codegen somehow depends on MLIRCIRTransforms. Maybe we can place CIRPasses.cpp somewhere else, I don't know.

So it's really a problem. And I don't know, if I'm the only who uses build with shared lib (though it's faster! :) ) But the longer we don't have such test build the more problems we will have in future.

bcardosolopes commented 3 months ago

well, it's been a while since I touched github actions (8 years, omg! :) ) but I can do it!.

Awesome!

Now the problem is that clangCIR depends on MLIRCIRTransforms , and MLIRCIRTransforms depends on TargetLowering that used CIRDataLayout which is in clangCIR .

@sitio-couto looks like target lowering introduced a cycle. Please make sure you prioritize solving this problem before you land more work, or at least soon enough. Cycles are not acceptable. Might be worth checking shared builds in your workflow as you add more of these abstractions.

So it's really a problem. And I don't know, if I'm the only who uses build with shared lib (though it's faster! :) ) But the longer we don't have such test build the more problems we will have in future.

This also affects how we use our compiler internally, so you are not alone.

sitio-couto commented 3 months ago

@bcardosolopes @gitoleg https://github.com/llvm/clangir/pull/687

@gitoleg could you double-check that this PR builds with BUILD_SHARED_LIBS=ON please?