Skip to content

Commit

Permalink
[cmake] expand support (#142)
Browse files Browse the repository at this point in the history
  • Loading branch information
FrancoisCarouge authored Sep 18, 2022
1 parent cae6557 commit f1e04c4
Show file tree
Hide file tree
Showing 39 changed files with 8,594 additions and 8,961 deletions.
9 changes: 3 additions & 6 deletions .github/workflows/verify_test_ubuntu-22-04_clang.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@ jobs:
run: |
export CC=clang
export CXX=clang++
mkdir build
cd build
cmake ..
cmake --build . --parallel
ctest --tests-regex kalman --output-on-failure --parallel
sudo cmake --install .
cmake -B "build" .
cmake --build "build" --parallel
ctest --test-dir "build" --tests-regex "kalman_(test|sample)" --output-on-failure --parallel
9 changes: 3 additions & 6 deletions .github/workflows/verify_test_ubuntu-22-04_gcc-trunk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ jobs:
sudo dpkg -i gcc-latest.deb
export CC=/opt/gcc-latest/bin/gcc
export CXX=/opt/gcc-latest/bin/g++
mkdir build
cd build
cmake ..
cmake --build . --parallel
ctest --tests-regex kalman --output-on-failure --parallel
sudo cmake --install .
cmake -B "build" .
cmake --build "build" --parallel
ctest --test-dir "build" --tests-regex "kalman_(test|sample)" --output-on-failure --parallel
9 changes: 3 additions & 6 deletions .github/workflows/verify_test_ubuntu-22-04_gcc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@ jobs:
uses: actions/checkout@v3.0.2
- name: Build
run: |
mkdir build
cd build
cmake ..
cmake --build . --parallel
ctest --tests-regex kalman --output-on-failure --parallel
sudo cmake --install .
cmake -B "build" .
cmake --build "build" --parallel
ctest --test-dir "build" --tests-regex "kalman_(test|sample)" --output-on-failure --parallel
9 changes: 4 additions & 5 deletions .github/workflows/verify_test_windows-2019_msvc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,8 @@ jobs:
uses: ilammy/msvc-dev-cmd@v1.10.0
- name: Version
run: cl
- name: Install Eigen
run: vcpkg install eigen3
- name: Build
run: cl /EHsc /std:c++latest /I include /I C:\vcpkg\packages\eigen3_x86-windows\include\eigen3 /TP sample/*.cpp source/*.cpp test/*.cpp /Fe:kalman.exe
- name: Run
run: ./kalman.exe
run: |
cmake -B "build" .
cmake --build "build" --parallel
ctest --test-dir "build" --tests-regex "kalman_(test|sample)" --output-on-failure --parallel
7 changes: 3 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ FetchContent_Declare(

FetchContent_Declare(
google_benchmark
URL "https://github.com/google/benchmark/archive/refs/tags/v1.7.0.tar.gz"
URL_HASH MD5=a259f985e7f8e4f5d2286a592eabd7e9)
URL "https://github.com/google/benchmark/archive/refs/tags/v1.6.2.tar.gz"
URL_HASH MD5=14d14849e075af116143a161bc3b927b)

FetchContent_Declare(
eigen
Expand All @@ -72,10 +72,9 @@ FetchContent_Declare(

FetchContent_MakeAvailable(google_test google_benchmark eigen fmt)

add_subdirectory(benchmark)
add_subdirectory(include)
add_subdirectory(sample)
add_subdirectory(source)
add_subdirectory(support)
add_subdirectory(test)

install(DIRECTORY "include/fcarouge" DESTINATION "include")
30 changes: 23 additions & 7 deletions INSTALL.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,29 @@
# Installation

## System
## System Library

Clone the repository, in a build folder configure CMake and install:
Install and use the library in your projects by cloning the repository, configuring, and installing the project on all platforms:

```shell
git clone --depth 1 https://github.com/FrancoisCarouge/Kalman.git kalman
mkdir kalman/build
cd kalman/build
cmake ..
sudo cmake --install .
git clone --depth 1 https://github.com/FrancoisCarouge/Kalman.git "kalman"
cmake -S "kalman" -B "build"
cmake --build "build" --parallel
sudo cmake --install "build"
```

# Build & Run

## Tests & Samples

Build and run the tests and samples on all platforms:

```shell
git clone --depth 1 https://github.com/FrancoisCarouge/Kalman.git "kalman"
cmake -S "kalman" -B "build" -G "Ninja Multi-Config"
cmake --build "build" --config "Debug" --parallel
ctest --test-dir "build" --tests-regex "kalman_(test|sample)" --output-on-failure --parallel
```

## Benchmarks

See the [Benchmark](benchmark/) section.
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -286,11 +286,10 @@ std::print("{}", k);
# Installation
```shell
git clone --depth 1 https://github.com/FrancoisCarouge/Kalman.git kalman
mkdir kalman/build
cd kalman/build
cmake ..
sudo cmake --install .
git clone --depth 1 https://github.com/FrancoisCarouge/Kalman.git "kalman"
cmake -S "kalman" -B "build"
cmake --build "build" --parallel
sudo cmake --install "build"
```

[For more, see installation instructions](INSTALL.md).
Expand Down
50 changes: 50 additions & 0 deletions benchmark/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#[[ __ _ __ __ _ _
| |/ / /\ | | | \/ | /\ | \ | |
| ' / / \ | | | \ / | / \ | \| |
| < / /\ \ | | | |\/| | / /\ \ | . ` |
| . \ / ____ \| |____| | | |/ ____ \| |\ |
|_|\_\/_/ \_\______|_| |_/_/ \_\_| \_|
Kalman Filter for C++
Version 0.1.0
https://github.com/FrancoisCarouge/Kalman
SPDX-License-Identifier: Unlicense
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <https://unlicense.org> ]]

set(SOURCES "baseline.cpp" "predict1x1x0.cpp" "predict1x1x1.cpp"
"update1x1x0.cpp" "update1x1x1.cpp")

foreach(BENCHMARK ${SOURCES})
get_filename_component(NAME ${BENCHMARK} NAME_WE)
add_executable(kalman_benchmark_${NAME}_driver ${BENCHMARK})
target_link_libraries(
kalman_benchmark_${NAME}_driver
PRIVATE eigen kalman benchmark::benchmark_main benchmark::benchmark)
add_test(kalman_benchmark_${NAME} kalman_benchmark_${NAME}_driver
"--benchmark_out=kalman_benchmark_${NAME}.json")
endforeach()
41 changes: 29 additions & 12 deletions benchmark/README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,29 @@
# Benchmark Results

![Float](float.svg)
![Float 1x1x0](float1x1x0.svg)
![Float 1x1x1](float1x1x1.svg)
![Baseline](baseline.svg)
![Update Float 1x1x0](update1x1x0.svg)
![Update Float 1x1x1](update1x1x1.svg)
![Predict Float 1x1x0](predict1x1x0.svg)
![Predict Float 1x1x1](predict1x1x1.svg)
![Function Call Operator 1x1x0](operator1x1x0.svg)
![Function Call Operator 1x1x1](operator1x1x1.svg)
# Benchmarks

Build and run the benchmarks on all platforms:

```shell
git clone --depth 1 https://github.com/FrancoisCarouge/Kalman.git "kalman"
cmake -S "kalman" -B "build" -G "Ninja Multi-Config"
cmake --build "build" --config "Release" --parallel
ctest --test-dir "build" --tests-regex "kalman_benchmark"
```

Plot the results on Linux:

```shell
./kalman/benchmark/script/plot.sh
```

# Results

Run on Microsoft Windows 10 on native x64 with Visual Studio 2022 compiler 19.33 in release mode.

![Float](image/float.svg)
![Float 1x1x0](image/float1x1x0.svg)
![Float 1x1x1](image/float1x1x1.svg)
![Baseline](image/baseline.svg)
![Update Float 1x1x0](image/update1x1x0.svg)
![Update Float 1x1x1](image/update1x1x1.svg)
![Predict Float 1x1x0](image/predict1x1x0.svg)
![Predict Float 1x1x1](image/predict1x1x1.svg)
55 changes: 0 additions & 55 deletions benchmark/benchmark.bat

This file was deleted.

Loading

0 comments on commit f1e04c4

Please sign in to comment.