Skip to content

Conversation

@nradakovic
Copy link
Member

Updated the design document to reflect the proposed directory structure and rationale for the S-CORE Bazel C++ Toolchain Configuration Repository.

Updated the design document to reflect the proposed directory structure and rationale for the S-CORE Bazel C++ Toolchain Configuration Repository.

Signed-off-by: Nikola Radakovic <nikola.ra.radakovic@bmw.de>
@github-actions
Copy link

⚠️ Docs-as-Code version mismatch detected
Please check the CI build logs for details and align the documentation version with the Bazel dependency.

@@ -0,0 +1,242 @@
DR-005-infra: Directory Structure for S-CORE Bazel C++ Toolchain Configuration Repository
====================================================================================
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
====================================================================================
=================================================================================================

- Provide scalable support for:

- Linux (x86_64, arm64)
- QNX (x86_64, arm64)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that Linux has multiple distributions and S-core currently uses three different ones (Ubuntu for dev containers, EB-Linux and Red Hat Linux for reference integration), should we consider creating separate platform and tool chain definitions for each (e.g., linux-ubuntu, linux-eb, linux-redhat) or as the toolchain contains only rules/config it should be compatible for different Linux flavours?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are distributions and as such should not depend on platform constraints (OS and CPU). We can add flags to platform if we want to have some separation between them, but I would like first to know what is delta between these 3 in terms of configuration.

@FScholPer FScholPer linked an issue Dec 1, 2025 that may be closed by this pull request
9 tasks
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nradakovic am I right that this would go into the direction of implementing all the toolchains on our own? What about available opensource toolchains for GCC and LLVM?
Or would it be viable to use these available toolchains as part of this setup?

I would like an evaluation of the different options. This helps in the future if we ever want to reevaluate or understand why we decided this way.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GCC doesn't exist in OS world (at least I'm not aware) and LLVM seems to be a bit heavy on resource usage (not optimized for CI). That's why BMW has it's own implementation of LLVM.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would still be great to have this as part of the document.

GCC doesn't exist in OS world (at least I'm not aware)

GCC does exist here: https://github.com/f0rmiga/gcc-toolchain
It works as advertised, but I can't judge the quality of the implementation.

LLVM seems to be a bit heavy on resource usage (not optimized for CI)

My proposal is to then upstream the necessary changes. I'm sure that other people also use the toolchain in a CI environment. So there should be interest in having this in the OS world.

Copy link
Member Author

@nradakovic nradakovic Dec 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, it's not my call when LLVM will be outsourced from SWH end, I cannot enforce this. For now we use the one that is available. Once it's available we can add it into repo without too much effort.
The other GCC solution doesn't really fit our needs. The interface is quite close, we cannot inject additional features (my implementation will support that) and there is no way of redefining existing features. Also I cannot point to different package. This config only support certain versions of GCC.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix toolchains for baselibs and communication

5 participants