Skip to content

Commit

Permalink
Merge pull request #13 from NTIA/dev
Browse files Browse the repository at this point in the history
v1.0 Release
  • Loading branch information
aromanielloNTIA authored Jan 16, 2025
2 parents 6490d4d + 1e0775d commit 48c6268
Show file tree
Hide file tree
Showing 87 changed files with 4,589 additions and 1,571 deletions.
103 changes: 103 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# NTIA/ITS C++ Clang-Format Style Options
# Updated 9/25/2024
---
AlignAfterOpenBracket: BlockIndent
AlignOperands: AlignAfterOperator
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortLambdasOnASingleLine: All
AllowShortEnumsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: Yes
BasedOnStyle: WebKit
BinPackArguments: false
BinPackParameters: false
BitFieldColonSpacing: After
BraceWrapping:
AfterCaseLabel: false
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
AfterExternBlock: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
BeforeLambdaBody: false
BeforeWhile: false
BreakBeforeBinaryOperators: All
BreakBeforeBraces: Attach
BreakInheritanceList: AfterColon
BreakBeforeConceptDeclarations: false
BreakConstructorInitializers: AfterColon
BreakStringLiterals: true
ColumnLimit: 80
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
EmptyLineBeforeAccessModifier: Never
FixNamespaceComments: true
IncludeBlocks: Regroup
IndentAccessModifiers: true
IndentCaseBlocks: true
IndentCaseLabels: true
IndentExternBlock: Indent
IndentGotoLabels: true
IndentPPDirectives: BeforeHash
IndentRequires: true
IndentWidth: 4
IndentWrappedFunctionNames: true
KeepEmptyLinesAtTheStartOfBlocks: false
Language: Cpp
LineEnding: CRLF
MaxEmptyLinesToKeep: 2
NamespaceIndentation: None
ObjCBinPackProtocolList: Never
ObjCBlockIndentWidth: 4
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
PointerAlignment: Right
ReflowComments: false
SortIncludes: true
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: false
SpaceAroundPointerQualifiers: Default
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: false
SpaceBeforeInheritanceColon: false
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInContainerLiterals: false
SpacesInConditionalStatement: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: c++14
TabWidth: 4
UseTab: Never
29 changes: 29 additions & 0 deletions .github/workflows/cff-validator.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Validate CITATION.cff

on:
push:
branches: ["main"]
paths:
- 'CITATION.cff'
- '.github/workflows/cff-validator.yml'
pull_request:
branches: ["main", "dev"]
paths:
- 'CITATION.cff'
- '.github/workflows/cff-validator.yml'
workflow_dispatch:

jobs:
Validate-CITATION-cff:
runs-on: ubuntu-latest
name: Validate CITATION.cff
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}

steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Validate CITATION.cff
uses: dieghernan/cff-validator@v3
with:
install-r: true
73 changes: 73 additions & 0 deletions .github/workflows/ctest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# This action compiles the library and driver and runs all unit tests using an OS and CMake matrix
name: Unit Tests

on:
push:
branches: ["main"]
pull_request:
branches: ["main", "dev"]
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true

# Define the matrix for different operating systems
jobs:
build-and-test:
name: ${{ matrix.os }} / ${{ matrix.architecture }} / CMake ${{ matrix.cmakeVersion }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
- macos-latest # Apple
- macos-13 # Intel
- windows-latest
architecture: [arm64, x64, x86]
cmakeVersion: ["3.21", latest] # CMake >= 3.21 is required to use "--preset <presetName>" and discover generators
exclude:
- os: macos-latest
architecture: x86
- os: macos-latest
architecture: x64
- os: macos-13
architecture: x86
- os: macos-13
architecture: arm64
- os: windows-latest
architecture: arm64
- os: ubuntu-latest
architecture: arm64
- os: ubuntu-latest
architecture: x86
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Clone required submodules
run: |
git submodule init extern/googletest
git submodule init extern/test-data
git submodule update
- name: Install CMake
uses: lukka/get-cmake@latest
with:
cmakeVersion: ${{ matrix.cmakeVersion }}

- name: "CMake: Build and Test (64-bit)"
if: matrix.architecture != 'x86'
uses: lukka/run-cmake@v10
with:
configurePreset: debug64
buildPreset: debug64
testPreset: debug64

- name: "CMake: Build and Test (32-bit)"
if: matrix.architecture == 'x86'
uses: lukka/run-cmake@v10
with:
configurePreset: debug32
buildPreset: debug32
testPreset: debug32
72 changes: 72 additions & 0 deletions .github/workflows/doxygen.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# This action builds **AND DEPLOYS** Doxygen documentation to GitHub Pages
# Doxygen site is DEPLOYED if this action is triggered by publishing a release.
# Doxygen site is NOT DEPLOYED (only built) when triggered by pull request or dispatched.
name: C++ Docs

on:
release:
types: ["published"]
pull_request:
branches: ["main", "dev"]
push:
branches: ["main"]
workflow_dispatch:

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Clone doxygen-awesome-css submodule
run: |
git submodule init extern/doxygen-awesome-css
git submodule update
- name: Install Doxygen
uses: ssciwr/doxygen-install@v1
with:
version: "1.12.0"

- name: Setup GitHub Pages
if: ${{ github.event_name == 'release' }}
id: pages
uses: actions/configure-pages@v5

- name: Install CMake
uses: lukka/get-cmake@latest

- name: Build documentation with Doxygen
uses: lukka/run-cmake@v10
with:
configurePreset: docsOnly
buildPreset: docsOnly

- name: Upload GitHub Pages artifact
uses: actions/upload-pages-artifact@v3
if: ${{ github.event_name == 'release' }}
with:
path: ./docs/html/

deploy:
if: ${{ github.event_name == 'release' }}
needs: build
permissions:
contents: read
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
86 changes: 86 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# This action compiles multi-platform binaries for a release.
# It is triggered when a new tag is made with a version number starting with "v"
name: Create Release Artifacts

on:
push:
tags: ['v[0-9]+.*']
workflow_dispatch:

permissions:
contents: write

jobs:
create_release_artifacts:
name: 'Create Release: ${{ matrix.relName}}'
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: windows-latest
architecture: x64
relName: Windows x64
- os: windows-latest
architecture: x86
relName: Windows x86
- os: macos-latest
architecture: arm64
relName: macOS Universal
- os: ubuntu-latest
architecture: x64
relName: Linux x64
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install CMake # (latest stable version)
uses: lukka/get-cmake@latest

- name: "CMake: Build (64-bit)"
if: matrix.architecture != 'x86'
uses: lukka/run-cmake@v10
with:
configurePreset: release64
configurePresetAdditionalArgs: "['-DBUILD_DOCS=OFF', '-DRUN_TESTS=OFF', '-DRUN_DRIVER_TESTS=OFF']"
buildPreset: release64

- name: "CMake: Build (32-bit)"
if: matrix.architecture == 'x86'
uses: lukka/run-cmake@v10
with:
configurePreset: release32
configurePresetAdditionalArgs: "['-DBUILD_DOCS=OFF', '-DRUN_TESTS=OFF', '-DRUN_DRIVER_TESTS=OFF', '-A', 'Win32']"
buildPreset: release32

- name: Upload release artifacts (binaries)
if: runner.os != 'Windows'
uses: actions/upload-artifact@v4
with:
name: "${{ github.event.repository.name }}-release-${{ runner.os }}"
path: |
${{ github.workspace }}/bin/*-universal.dylib
${{ github.workspace }}/bin/*-x86_64.so
${{ github.workspace }}/bin/*Driver*-*-Darwin-universal
${{ github.workspace }}/bin/*Driver*-*-Linux-x86_64
if-no-files-found: error
overwrite: true

- name: Upload release artifact (Windows)
if: runner.os == 'Windows'
uses: actions/upload-artifact@v4
with:
name: "${{ github.event.repository.name }}-release-${{ runner.os }}-${{ matrix.architecture }}"
path: |
${{ github.workspace }}\bin\Release\*.dll
${{ github.workspace }}\bin\Release\*Driver-*.exe
if-no-files-found: error
overwrite: true

- name: Upload release artifact (C++ Header)
if: runner.os == 'Linux'
uses: actions/upload-artifact@v4
with:
name: "${{ github.event.repository.name }}-release-cpp-header"
path: ${{ github.workspace }}/include/P2108.h
if-no-files-found: error
overwrite: true
Loading

0 comments on commit 48c6268

Please sign in to comment.