Thank you for your interest in the CPULLVM Toolchain project.
The CPULLVM Toolchain repository is a fork of llvm-project. It includes an additional qualcomm-software directory that contains build scripts for generating the CPULLVM toolchain, along with documentation and CI workflow scripts and recipes. CPULLVM also supports integration with external projects such as Picolibc and musl-embedded.
CPULLVM is composed of a number of upstream projects. As a general policy, this repository does not accept code contributions or pull requests for these upstream components. Any changes that are applicable to an upstream project must be made directly in the corresponding upstream repository.
For guidance on how to contribute to the upstream projects see:
- llvm-project Contributing to LLVM
- picolibc Contributing to Picolibc
- ELD Contributing to ELD
- musl-embedded Contributing to musl-embedded
Accepted Contributions: While core code changes must go upstream, we welcome contributions to this repository that improve:
- Build and Test infrastructure
- Configurations to build
- Packaging
- Documentation
The CPULLVM toolchain is heavily dependent on the LLVM, Picolibc, and ELD projects. If you identify an issue that is generic to one of these upstream projects, please submit it directly to the respective upstream repository.
For reporting issues in qualcomm software build scripts and recipes, please use the GitHub issues:
Other upstream projects:
In general, contributors should develop on branches based off of qualcomm-software and pull requests should be made against qualcomm-software.
-
Please read our code of conduct and license.
-
Fork and clone the repository.
git clone https://github.com/<username>/<REPLACE-ME>.git
-
Create a new branch based on
qualcomm-software:git checkout -b <my-branch-name> qualcomm-software
-
Create an upstream
remoteto make it easier to keep your branches up-to-date:git remote add upstream https://github.com/qualcomm/cpullvm-toolchain.git
-
Make your changes, add tests, and make sure the tests still pass.
-
Commit your changes using the DCO. You can attest to the DCO by committing with the -s or --signoff options or manually adding the "Signed-off-by":
git commit -s -m "Really useful commit message" -
After committing your changes on the topic branch, sync it with the upstream branch:
git pull --rebase upstream qualcomm-software
-
Push to your fork.
git push -u origin <my-branch-name>
The
-uis shorthand for--set-upstream. This will set up the tracking reference so subsequent runs ofgit pushorgit pullcan omit the remote and branch. -
Submit a pull request from your branch to
qualcomm-software. -
Pat yourself on the back and wait for your pull request to be reviewed.
To maintain the security and integrity of this project, all pull requests are automatically scanned using Semgrep to detect insecure coding patterns and potential security flaws.
Static Analysis with Semgrep: We use Semgrep to perform lightweight, fast static analysis on every PR. This helps identify risky code patterns and logic flaws early in the development process.
Contributor Responsibility: If any issues are flagged, contributors are expected to resolve them before the PR can be merged.
Continuous Improvement: Our Semgrep ruleset evolves over time to reflect best practices and emerging security concerns.
By submitting a PR, you agree to participate in this process and help us keep the project secure for everyone.
Here are a few things you can do that will increase the likelihood of your pull request to be accepted:
- Keep your change as focused as possible. If you want to make multiple independent changes, please consider submitting them as separate pull requests.
- Write a good commit message.