Summary: This patch does the following: 1. Checks in a copy of the Google Benchmark library into the libc++ repo under `utils/google-benchmark`. 2. Teaches libc++ how to build Google Benchmark against both (A) in-tree libc++ and (B) the platforms native STL. 3. Allows performance benchmarks to be built as part of the libc++ build. Building the benchmarks (and Google Benchmark) is off by default. It must be enabled using the CMake option `-DLIBCXX_INCLUDE_BENCHMARKS=ON`. When this option is enabled the tests under `libcxx/benchmarks` can be built using the `libcxx-benchmarks` target. On Linux platforms where libstdc++ is the default STL the CMake option `-DLIBCXX_BUILD_BENCHMARKS_NATIVE_STDLIB=ON` can be used to build each benchmark test against libstdc++ as well. This is useful for comparing performance between standard libraries. Support for benchmarks is currently very minimal. They must be manually run by the user and there is no mechanism for detecting performance regressions. Known Issues: * `-DLIBCXX_INCLUDE_BENCHMARKS=ON` is only supported for Clang, and not GCC, since the `-stdlib=libc++` option is needed to build Google Benchmark. Reviewers: danalbert, dberlin, chandlerc, mclow.lists, jroelofs Subscribers: chandlerc, dberlin, tberghammer, danalbert, srhines, hfinkel Differential Revision: https://reviews.llvm.org/D22240 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@276049 91177308-0d34-0410-b5e6-96231b3b80d8
59 lines
2.4 KiB
Markdown
59 lines
2.4 KiB
Markdown
# How to contribute #
|
|
|
|
We'd love to accept your patches and contributions to this project. There are
|
|
a just a few small guidelines you need to follow.
|
|
|
|
|
|
## Contributor License Agreement ##
|
|
|
|
Contributions to any Google project must be accompanied by a Contributor
|
|
License Agreement. This is not a copyright **assignment**, it simply gives
|
|
Google permission to use and redistribute your contributions as part of the
|
|
project.
|
|
|
|
* If you are an individual writing original source code and you're sure you
|
|
own the intellectual property, then you'll need to sign an [individual
|
|
CLA][].
|
|
|
|
* If you work for a company that wants to allow you to contribute your work,
|
|
then you'll need to sign a [corporate CLA][].
|
|
|
|
You generally only need to submit a CLA once, so if you've already submitted
|
|
one (even if it was for a different project), you probably don't need to do it
|
|
again.
|
|
|
|
[individual CLA]: https://developers.google.com/open-source/cla/individual
|
|
[corporate CLA]: https://developers.google.com/open-source/cla/corporate
|
|
|
|
Once your CLA is submitted (or if you already submitted one for
|
|
another Google project), make a commit adding yourself to the
|
|
[AUTHORS][] and [CONTRIBUTORS][] files. This commit can be part
|
|
of your first [pull request][].
|
|
|
|
[AUTHORS]: AUTHORS
|
|
[CONTRIBUTORS]: CONTRIBUTORS
|
|
|
|
|
|
## Submitting a patch ##
|
|
|
|
1. It's generally best to start by opening a new issue describing the bug or
|
|
feature you're intending to fix. Even if you think it's relatively minor,
|
|
it's helpful to know what people are working on. Mention in the initial
|
|
issue that you are planning to work on that bug or feature so that it can
|
|
be assigned to you.
|
|
|
|
1. Follow the normal process of [forking][] the project, and setup a new
|
|
branch to work in. It's important that each group of changes be done in
|
|
separate branches in order to ensure that a pull request only includes the
|
|
commits related to that bug or feature.
|
|
|
|
1. Do your best to have [well-formed commit messages][] for each change.
|
|
This provides consistency throughout the project, and ensures that commit
|
|
messages are able to be formatted properly by various git tools.
|
|
|
|
1. Finally, push the commits to your fork and submit a [pull request][].
|
|
|
|
[forking]: https://help.github.com/articles/fork-a-repo
|
|
[well-formed commit messages]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
|
|
[pull request]: https://help.github.com/articles/creating-a-pull-request
|