[Core][Apps] Making visibility hidden by default #13060
[Core][Apps] Making visibility hidden by default #13060
Conversation
|
You don't need to kodify KRATOS_API for non MSVC ? |
|
Oh yes thank you! I got back into compile-heavy development again and was about to tear my nonexistent hair out during linking. |
|
Almost compiled, just Metis is failing apparently |
Should work as it is rn, I foresaw this when I did the Kratos api, but if some application gets grumpy I will touch it. |
…the header definition, but the in place declaration omg... omg...)
…omplete type. If you want to to that you have to define that function after SphereElement
|
It's alive |
|
@matekelemen I am trying to compile with Intel LLVM in Windows and your multigrid assemblers are giving issues |
…mpatibility" This reverts commit 2b51cf2.
They're fine on master. I don't know why this PR would trigger an ICE in intel's wonderful compiler but as a general rule, I don't think we should play around defective compilers. |
|
To chip in here, we use Clang-LLVM (with
For this particular build, we use |
|
@matekelemen I am trying to compile with Intel LLVM in Windows and your multigrid assemblers are giving issues
Well, is not just Intel LLVM, Clang for Windows is also failing. And the reason this PR exists is making work any of those 2 compilers because MSVC is terrible kin providing properly optimized code. We have tests in internal projects that just compiling with any of those compilers instead of MSVC improves performance 20-25% out of the box. Any case we can fix compilation in independent PR. |
|
I need to check internally this to see if affects us. |
|
I cherry-picked some fixes I did in #14346, anyway I thought that maybe fix the compilation in LLVM compilers can be done in a later PR. |
|
Fantastic, I just broke Windows, some symbols were missing to compile locally in Ubuntu. Well at least is the last 2 commits, so easy to revert o to track |
📝 Description
This PR aims to unify the windows and Linux behavior making all symbols in Linux (gcc and llvm based compilers) hidden by default. This will probably help with linking times and linking restrictions (see llvm in win refusing to link targets with more than 65K symbols)
Since exporting template classes with definitions in sources works a bit different (finally i figured out how to make them visible!), some additional decorators will need to be added to several explicit instantiations.
Comments:
SphereElement. Please take a look (0e8e547)