Skip to content

Commit

Permalink
Updating documentation part 1.
Browse files Browse the repository at this point in the history
  • Loading branch information
gchatelet committed Feb 9, 2018
1 parent 6395af0 commit 8818e6a
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,15 @@
A cross-platform C library to retrieve CPU features (such as available
instructions) at runtime.

## Table of Contents

- [Design Rationale](#rationale)
- [Code samples](#codesample)
- [What's supported](#support)
- [License](#license)
- [Build with cmake](#cmake)

<a name="rationale"></a>
## Design Rationale

- **Simple to use.** See the snippets below for examples.
Expand All @@ -18,6 +27,7 @@ instructions) at runtime.
`malloc`, `memcpy`, and `memcmp`.
- **Unit tested.**

<a name="codesample"></a>
### Checking features at runtime

Here's a simple example that executes a codepath if the CPU supports both the
Expand Down Expand Up @@ -94,6 +104,7 @@ static const bool has_fast_avx = info.features.avx && uarch != INTEL_SNB;

This feature is currently available only for x86 microarchitectures.

<a name="support"></a>
## What's supported

| | x86 | ARM | AArch64 | MIPS | POWER |
Expand All @@ -116,3 +127,14 @@ This feature is currently available only for x86 microarchitectures.
implemented efficiently in hardware (e.g. AVX on Sandybridge). Exposing the
microarchitecture allows the client to reject particular microarchitectures.


<a name="license"></a>
## License

The cpu_features library is licensed under the terms of the Apache license.
See [LICENSE](LICENSE) for more information.

<a name="cmake"></a>
## Build with CMake

Please check the [CMake build instructions](cmake/README.md)
28 changes: 28 additions & 0 deletions cmake/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# CMake build instructions

## Recommended usage : Incorporating cpu_features into a CMake project

For API / ABI compatibility reasons, it is recommended to build and use
cpu_features in a subdirectory of your project or as an embedded dependency.

This is similar to the recommended usage of the googletest framework
( https://github.com/google/googletest/blob/master/googletest/README.md )

Build and use step-by-step


1- Download cpu_features and copy it in a sub-directory in your project.
or add cpu_features as a git-submodule in your project

2- You can then use the cmake command `add_subdirectory()` to include
cpu_features directly and use the `cpu_features` target in your project.

3- Add the `cpu_features` target to the `target_link_libraries()` section of
your executable or of your library.

## Enabling tests

CMake default options for cpu_features is Release built type with tests
disabled. To enable testing set cmake `BUILD_TESTING` variable to `ON`,
[.travis.yml](../.travis.yml) and [appveyor.yml](../appveyor.yml) have up to
date examples.

0 comments on commit 8818e6a

Please sign in to comment.