-
Notifications
You must be signed in to change notification settings - Fork 992
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature: add e2k (elbrus) architectures and mcst-lcc compiler #8032
Conversation
7116a22
to
72db1b7
Compare
I agree that LCC name confusion is quite bad. The MCST compiler also defines the very same precompiled macro |
got ssh access to e2k machine, tested few recipes:
in general, conan works for different kinds of build systems (cmake/auto-tools/custom). build failures are either library portability issues or recipe limitation (both expected for such a platform I guess). compiler detection seems to be working:
|
elif compiler == "lcc": | ||
result.append(("compiler.base", "gcc")) # do the same for Intel? | ||
result.append(("compiler.base.libcxx", "libstdc++")) | ||
version = Version(version) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
don't like this code to be here and to be like that. ideally, CompilerId
may detect base compiler (by inspecting __GNUC__
in addition to the __LCC__
, but we still have old --version
-based detection.
Regarding One may check |
Not the first time I hear about Elbrus, but... I have questions in different directions:
About the PR itself and the implementation, it is sound, and you already ran some builds. IMO, if we have intel-compiler, we should include this one, I would say it has the same pros and cons. OTH, I would think if Conan 2.0 should use a different approach. |
I guess it's impossible to test Elbrus things through docker, because it's a different architecture, and requires a complete emulator (like qemu, but e2k backend for Elbrus is still WIP). In replacement, there's a public SSH available (there's only username and public ssh key required for it). You may contact me for getting this access if you wish. |
I built successfully some recipes (~20, including |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks like a great job, thanks @SSE4
It should be relatively low risk, but I am not sure we can fit it in 1.32, if not possible, it will be targeted to next 1.33
Q: there are two LCC compilers, one is proprietary developed by MCST, and one is open-source. it might be confusing for users (especially non-Russians); if we add compiler lcc to the conan, maybe it should be named like mcst-lcc instead? A: we have decided to go with Q. naming of architectures - we may follow ALT Linux scheme with e2k-v2, e2k-v3 and so on, or use the same naming as LCC - elbrus-v2, elbrus-v3 and so on. we may also use the processor model instead of the architecture number, like e2k-8c. it has to be decided. A: we have decided to go with |
Signed-off-by: SSE4 <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same comments I had here
Implementation LGTM 👍
/сс @r-a-sattarov @makise-homura
intro
e2k, also known as elbrus 2000 or just elbrus, is Russian processor architecture (VLIW-based).
it's mainly known in the Russian community, as used in some government and military companies.
just like ARM, e2k has several versions (currently six, from v2 to v7), here is the table (in Russian)
NOTE: as e2k is a Russian brand, unfortunately, most of the documentation is in Russian language, so it might be hard to follow :)
to compile programs for e2k, the proprietary compiler is used, known as LCC (developed by MCST company - Moscow Center of SPARC Technologies). it's supposed to be compatible with GCC, just like the Intel compiler.
usually, e2k systems run Linux, for instance, ALT Linux distribution.
why does it become important?
well, the Russian government has a program to force certain government and military companies (e.g. banks, postal offices, tax offices, customs, etc.) to use only Russian software and hardware to avoid backdoors. this requires to port many OSS tools and libraries to e2k architectures, and since some software uses conan to manage its dependencies, it's required to port conan first in order to port that software.
summary of changes:
libcxx mapping(not needed, the only supported standard library is libstdc++)__LCC__
macro definition)open questions:
there are two LCC compilers, one is proprietary developed by MCST, and one is open-source. it might be confusing for users (especially non-Russians); if we add compiler lcc to the conan, maybe it should be named like mcst-lcc instead?we have decided to go withmcst-lcc
name to avoid confusion.naming of architectures - we may follow ALT Linux scheme with e2k-v2, e2k-v3 and so on, or use the same naming as LCC - elbrus-v2, elbrus-v3 and so on. we may also use the processor model instead of the architecture number, like e2k-8c. it has to be decided.we have decided to go withe2k-v2
naming scheme.to be tested on real system - awaiting SSH access...Changelog: Feature: Add e2k (elbrus) architectures and mcst-lcc compiler
Docs: conan-io/docs#1982
develop
branch, documenting this one.Note: By default this PR will skip the slower tests and will use a limited set of python versions. Check here how to increase the testing level by writing some tags in the current PR body text.