Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 0 additions & 16 deletions .clang-format

This file was deleted.

39 changes: 0 additions & 39 deletions .clang-tidy

This file was deleted.

3 changes: 0 additions & 3 deletions .cmake-format.yaml

This file was deleted.

15 changes: 15 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/" # Location of package manifests
schedule:
interval: "daily"
- package-ecosystem: "gitsubmodule"
directory: "/" # Location of package manifests
schedule:
interval: "daily"
41 changes: 19 additions & 22 deletions .github/workflows/asciidoctor-ghpages.yml
Original file line number Diff line number Diff line change
@@ -1,44 +1,41 @@
name: GitHub Pages Publish
name: Publish GitHub Pages

on:
workflow_dispatch:
push:
branches: [ main ]

env:
DEBIAN_FRONTEND: noninteractive

jobs:
build:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04

steps:
- name: Checkout Source
uses: actions/checkout@v3
- name: Checkout source
uses: actions/checkout@v4

- name: Install asciidoc
- name: Install asciidoctor
run: |
sudo apt update
DEBIAN_FRONTEND=noninteractive TZ=America/Los_Angeles sudo apt-get install -y git wget asciidoctor
sudo gem install asciidoctor-diagram
sudo apt install -y asciidoctor
sudo gem install asciidoctor asciidoctor-diagram rouge

- name: Build Documentation
- name: Build documentation
run: |
mkdir -p ./generated-html
asciidoctor -r asciidoctor-diagram doc/index.adoc -D ./generated-html
if [ -e doc/static ]; then cp -rf doc/static ./generated-html; fi
asciidoctor -r asciidoctor-diagram docs/index.adoc -D ./generated-html
if [ -e docs/static ]; then cp -rf docs/static ./generated-html; fi
touch ./generated-html/.nojekyll
ls -la ./generated-html
cat ./generated-html/index.html

- name: Build Single Header
run: |
pushd include
python3 ../tools/gen_release_header.py safe.hpp > ../generated-html/safe.hpp
popd

- name: Setup GH-Pages
- name: Setup github pages
uses: actions/configure-pages@v3

- name: Upload Artifacts to GH-Pages
uses: actions/upload-pages-artifact@v1
- name: Upload artifacts
uses: actions/upload-pages-artifact@v2
with:
path: ./generated-html

Expand All @@ -54,9 +51,9 @@ jobs:
name: github-pages
url: $${{ steps.deployment.outputs.page_url }}

runs-on: ubuntu-20.04
runs-on: ubuntu-22.04

steps:
- name: Deploy to GitHub Pages
- name: Deploy to github pages
id: deployment
uses: actions/deploy-pages@v1
uses: actions/deploy-pages@v2
52 changes: 28 additions & 24 deletions .github/workflows/unit_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ on:
env:
DEBIAN_FRONTEND: noninteractive
CMAKE_GENERATOR: Ninja
DEFAULT_CXX_STANDARD: 20
DEFAULT_LLVM_VERSION: 16
DEFAULT_GCC_VERSION: 12

concurrency:
group: ${{ github.head_ref || github.run_id }}
Expand All @@ -31,6 +34,7 @@ jobs:
- compiler: clang
cc: "clang"
cxx: "clang++"
cxx_flags: "-stdlib=libstdc++"
- version: 16
compiler: clang
install: wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh 16
Expand All @@ -39,6 +43,7 @@ jobs:
compiler: clang
stdlib: libc++
install: wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh 16 && sudo apt install -y libc++-16-dev libc++abi-16-dev
cxx_flags: "-stdlib=libc++"
- version: 15
compiler: clang
install: sudo apt update && sudo apt install -y clang-15
Expand All @@ -47,6 +52,7 @@ jobs:
compiler: clang
stdlib: libc++
install: sudo apt update && sudo apt install -y clang-15 libc++-15-dev libc++abi-15-dev
cxx_flags: "-stdlib=libc++"
- version: 14
compiler: clang
install: sudo apt update && sudo apt install -y clang-14
Expand All @@ -55,18 +61,21 @@ jobs:
compiler: clang
stdlib: libc++
install: sudo apt update && sudo apt install -y clang-14 libc++-14-dev libc++abi-14-dev
cxx_flags: "-stdlib=libc++"
- compiler: gcc
toolchain_root: "/usr"
cxx_flags: ""
- version: 13
compiler: gcc
install: sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test && sudo apt update && sudo apt-get install -y gcc-13 g++-13
toolchain_root: "/usr"
cc: "gcc-13"
cxx: "g++-13"
- version: 12
compiler: gcc
install: sudo apt update && sudo apt install -y gcc-12
toolchain_root: "/usr"
cc: "gcc-12"
cxx: "g++-12"
cxx_flags: ""
exclude:
- compiler: gcc
version: 16
Expand All @@ -82,7 +91,7 @@ jobs:
stdlib: libc++

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Install build tools
run: |
Expand All @@ -93,9 +102,7 @@ jobs:
env:
CC: ${{matrix.toolchain_root}}/bin/${{matrix.cc}}
CXX: ${{matrix.toolchain_root}}/bin/${{matrix.cxx}}
CXX_STANDARD: ${{matrix.cxx_standard}}
CXX_STDLIB: ${{matrix.stdlib}}
run: cmake -B ${{github.workspace}}/build -DCMAKE_TOOLCHAIN_FILE=${{github.workspace}}/toolchains/${{matrix.compiler}}.cmake -DCMAKE_BUILD_TYPE=${{matrix.build_type}}
run: cmake -B ${{github.workspace}}/build -DCMAKE_CXX_STANDARD=${{matrix.cxx_standard}} -DCMAKE_CXX_FLAGS_INIT=${{matrix.cxx_flags}} -DCMAKE_BUILD_TYPE=${{matrix.build_type}}

- name: Build Unit Tests
run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} -v -t build_unit_tests
Expand All @@ -107,12 +114,12 @@ jobs:
quality_checks_pass:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Install build tools
run: |
wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh 16
sudo apt install -y ninja-build clang-tidy-16 clang-format-16
wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh ${{env.DEFAULT_LLVM_VERSION}}
sudo apt install -y ninja-build clang-tidy-${{env.DEFAULT_LLVM_VERSION}} clang-format-${{env.DEFAULT_LLVM_VERSION}}

- name: Install cmake-format
run: |
Expand All @@ -121,10 +128,9 @@ jobs:

- name: Configure CMake
env:
CC: "/usr/lib/llvm-16/bin/clang"
CXX: "/usr/lib/llvm-16/bin/clang++"
CXX_STANDARD: 20
run: cmake -B ${{github.workspace}}/build
CC: "/usr/lib/llvm-${{env.DEFAULT_LLVM_VERSION}}/bin/clang"
CXX: "/usr/lib/llvm-${{env.DEFAULT_LLVM_VERSION}}/bin/clang++"
run: cmake -B ${{github.workspace}}/build -DCMAKE_CXX_STANDARD=${{env.DEFAULT_CXX_STANDARD}}

- name: Run quality checks
run: cmake --build ${{github.workspace}}/build -t quality
Expand All @@ -137,38 +143,36 @@ jobs:
sanitizer: [undefined, address, thread]

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Install build tools
run: |
wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh 16
wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh ${{env.DEFAULT_LLVM_VERSION}}
sudo apt install -y ninja-build

- name: Configure CMake
env:
CC: "/usr/lib/llvm-16/bin/clang"
CXX: "/usr/lib/llvm-16/bin/clang++"
CXX_STANDARD: 20
CC: "/usr/lib/llvm-${{env.DEFAULT_LLVM_VERSION}}/bin/clang"
CXX: "/usr/lib/llvm-${{env.DEFAULT_LLVM_VERSION}}/bin/clang++"
SANITIZERS: ${{matrix.sanitizer}}
run: cmake -B ${{github.workspace}}/build
run: cmake -B ${{github.workspace}}/build -DCMAKE_CXX_STANDARD=${{env.DEFAULT_CXX_STANDARD}}

- name: Build Unit Tests
run: cmake --build ${{github.workspace}}/build -t unit_tests

valgrind:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Install build tools
run: sudo apt update && sudo apt install -y gcc-12 ninja-build valgrind

- name: Configure CMake
env:
CC: "/usr/bin/gcc-12"
CXX: "/usr/bin/g++-12"
CXX_STANDARD: 20
run: cmake -B ${{github.workspace}}/build
CC: "/usr/bin/gcc-${{env.DEFAULT_GCC_VERSION}}"
CXX: "/usr/bin/g++-${{env.DEFAULT_GCC_VERSION}}"
run: cmake -B ${{github.workspace}}/build -DCMAKE_CXX_STANDARD=${{env.DEFAULT_CXX_STANDARD}}

- name: Build Unit Tests
run: cmake --build ${{github.workspace}}/build -t build_unit_tests
Expand Down
19 changes: 11 additions & 8 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
.DS_Store
*.lst
*.orign
/Testing/
/build/
/build
/cmake-build-*
.idea
.vscode
.cache
/venv
/.vscode
/.idea
/.cache
/.DS_Store
.clang-format
.clang-tidy
.cmake-format.yaml
CMakePresets.json
/toolchains
14 changes: 3 additions & 11 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,8 @@ cmake_minimum_required(VERSION 3.25)

project(safe_arithmetic LANGUAGES CXX)

if(PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR)
message(
FATAL_ERROR
"In-source builds are a bad idea. Please make a build directory instead."
)
endif()

include(cmake/dependencies.cmake)
include(cmake/libraries.cmake)
include(cmake/quality.cmake)
include(cmake/get_cpm.cmake)
cpmaddpackage("gh:intel/cicd-repo-infrastructure#main")

add_versioned_package("gh:boostorg/mp11#boost-1.83.0")

Expand All @@ -21,7 +13,7 @@ target_include_directories(safe_arithmetic INTERFACE include)
target_link_libraries(safe_arithmetic INTERFACE boost_mp11)

if(PROJECT_IS_TOP_LEVEL)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_docs(docs)
clang_tidy_interface(safe_arithmetic)
add_subdirectory(test)
endif()
Loading