Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cross platform and proplib2.0 #6

Open
wants to merge 192 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 181 commits
Commits
Show all changes
192 commits
Select commit Hold shift + click to select a range
3c8c6a1
Initial commit
aromanielloNTIA Sep 27, 2024
fc52cc4
Add googletest and doxygen-awesome-css submodules
aromanielloNTIA Sep 27, 2024
6e77c0b
Add info about merging template changes to downstream
aromanielloNTIA Sep 27, 2024
23b21f8
Update doxygen-awesome-css to v2.3.4
aromanielloNTIA Sep 30, 2024
b65ec43
Merge pull request #1 from NTIA/doxygen-awesome-css-v2.3.4
aromanielloNTIA Sep 30, 2024
a258519
Update examples to recommend constexpr instead of macros
aromanielloNTIA Oct 9, 2024
26fd183
Merge pull request #2 from NTIA/avoid-macros-as-constants
aromanielloNTIA Oct 10, 2024
cd1a20a
Merge pull request #3 from NTIA/dev
aromanielloNTIA Oct 10, 2024
2d8a04d
Delete CREATING-REPOSITORIES.md
aromanielloNTIA Oct 10, 2024
f1f34aa
Add CLI app to cmake configuration
aromanielloNTIA Oct 11, 2024
674e808
Update CLI app readme for templating
aromanielloNTIA Oct 11, 2024
bc6c924
make GetDatetimeString thread-safe across platforms
aromanielloNTIA Oct 15, 2024
4469140
move functions to utils
aromanielloNTIA Oct 15, 2024
aa4257a
Add driver testing configuration
aromanielloNTIA Oct 15, 2024
48d3c6d
modernize driver utility functions
aromanielloNTIA Oct 15, 2024
5b23eb6
const correct driver util functions
aromanielloNTIA Oct 15, 2024
c333e6e
rename Utils to DriverUtils
aromanielloNTIA Oct 15, 2024
4dae8a6
Add simple tests for parsing functions
aromanielloNTIA Oct 15, 2024
df9f3a1
Avoid duplicate googletest init
aromanielloNTIA Oct 15, 2024
214465d
enable exports for driver tests
aromanielloNTIA Oct 15, 2024
fa67822
remove default from Version definition
aromanielloNTIA Oct 15, 2024
909b70f
Reorganize driver code
aromanielloNTIA Oct 15, 2024
e7285b1
Add include directories for driver and driver tests
aromanielloNTIA Oct 15, 2024
2ed99de
parameterize help output stream
aromanielloNTIA Oct 15, 2024
ea672a5
Add CommaSeparatedIterator
aromanielloNTIA Oct 16, 2024
78f0561
Relocate ctime include
aromanielloNTIA Oct 16, 2024
e3efa97
Rename main.cpp to Driver.cpp
aromanielloNTIA Oct 16, 2024
63e3de7
Add input file opening error code
aromanielloNTIA Oct 16, 2024
19eb5e4
Better use of cmake variable
aromanielloNTIA Oct 16, 2024
53fbd0f
Reformat cmakelists
aromanielloNTIA Oct 16, 2024
3545807
Remove 32-bit configuration
aromanielloNTIA Oct 16, 2024
706b5bf
Fix cmake variable scope
aromanielloNTIA Oct 16, 2024
86c552d
Fix preset names in docs
aromanielloNTIA Oct 16, 2024
3c43b5a
Consistent file handling
aromanielloNTIA Oct 16, 2024
7c7444c
Add CI workflows
aromanielloNTIA Oct 16, 2024
f40a297
Update CI workflows for new preset names
aromanielloNTIA Oct 16, 2024
70bf767
Update README.md
aromanielloNTIA Oct 16, 2024
160cf65
Improve CSV iterator
aromanielloNTIA Oct 17, 2024
70bcd20
Make TestDriver a simple executable
aromanielloNTIA Oct 17, 2024
3e82022
minor updates
aromanielloNTIA Oct 17, 2024
680188f
Don't run CI workflows in template repository
aromanielloNTIA Oct 17, 2024
9f07710
Update README.md
aromanielloNTIA Oct 17, 2024
a716be1
Fix return value of utility function
aromanielloNTIA Oct 17, 2024
ba45906
Suppress executable output when testing driver
aromanielloNTIA Oct 17, 2024
9bd0829
Add missing header file for driver
aromanielloNTIA Oct 18, 2024
33fb646
Explicit include of <ostream> for std::endl
aromanielloNTIA Oct 18, 2024
bed5791
Add TempTextFile class
aromanielloNTIA Oct 18, 2024
6dd8423
ensure localtime_s is available on Windows
aromanielloNTIA Oct 18, 2024
dd9b9dc
Add <algorithm> include for std::remove
aromanielloNTIA Oct 18, 2024
8c11c09
Update driver testing
aromanielloNTIA Oct 24, 2024
e8ed000
Minor formatting adjustments
aromanielloNTIA Oct 24, 2024
ddf356b
Use drvrparams in driver tests
aromanielloNTIA Oct 24, 2024
f354f44
Update README.md
aromanielloNTIA Oct 24, 2024
6cd1cf1
Reuse stringtolower in CSV parser
aromanielloNTIA Oct 24, 2024
5f32198
Document driver with Doxygen
aromanielloNTIA Oct 24, 2024
daf3315
Fix conditions for CI jobs, update Doxygen to 1.12
aromanielloNTIA Oct 29, 2024
8eef9d4
Return code updates
aromanielloNTIA Oct 31, 2024
abd8c43
template updates
aromanielloNTIA Oct 31, 2024
efd7ab5
Fix file name
aromanielloNTIA Oct 31, 2024
7b4ba4f
Fix driver utility return types
aromanielloNTIA Oct 31, 2024
4e9c01c
Make CONTIRBUTING.md pass Python linter
aromanielloNTIA Oct 31, 2024
7392ca4
template wrapper error handling functions
aromanielloNTIA Oct 31, 2024
e59813c
Update formatting
aromanielloNTIA Oct 31, 2024
e39e002
Improve safety of return status function
aromanielloNTIA Oct 31, 2024
d3575b3
Use 2-digit library version
aromanielloNTIA Oct 31, 2024
10ae752
include version number in DLL name
aromanielloNTIA Oct 31, 2024
3f1bc5a
fix output_name
aromanielloNTIA Oct 31, 2024
2edece4
add version to driver output name
aromanielloNTIA Oct 31, 2024
be63f6a
use only major version for SOVERSION
aromanielloNTIA Oct 31, 2024
aa52c13
make filenames consistent across platforms
aromanielloNTIA Oct 31, 2024
b3553fc
make output file names consistent across platforms
aromanielloNTIA Oct 31, 2024
36884a0
correctly export functions across platforms
aromanielloNTIA Oct 31, 2024
6166224
Update CONTRIBUTING.md
aromanielloNTIA Nov 1, 2024
9973e14
fix migration mistakes
aromanielloNTIA Nov 1, 2024
1c31ce3
formatting
aromanielloNTIA Nov 1, 2024
6e2f823
Enable compiler warnings with cmake
aromanielloNTIA Nov 1, 2024
67d6493
Change template namespace
aromanielloNTIA Nov 1, 2024
245b8dd
Update docsOnly preset
aromanielloNTIA Nov 1, 2024
3b19af1
clang-format all files
aromanielloNTIA Nov 1, 2024
f732c73
Fix table formatting
aromanielloNTIA Nov 1, 2024
a9a28a1
Let developers handle compiler warning settings
aromanielloNTIA Nov 1, 2024
6c6a25e
driver utils updates
aromanielloNTIA Nov 4, 2024
5cc0edc
Consistent order for GTest comparisons
aromanielloNTIA Nov 4, 2024
2b3eb08
cleanup driver printing code
aromanielloNTIA Nov 5, 2024
496fba6
.gitignore binaries in wrappers
aromanielloNTIA Nov 5, 2024
cc867b1
ignore derived files from wrappers
aromanielloNTIA Nov 8, 2024
649203b
fix template code so tests all pass
aromanielloNTIA Nov 8, 2024
9d98550
Run actions on template
aromanielloNTIA Nov 8, 2024
2f55d04
remove template condition
aromanielloNTIA Nov 8, 2024
07484c3
build docs on push to main or dev
aromanielloNTIA Nov 8, 2024
d4146b5
cleanup includes
aromanielloNTIA Nov 8, 2024
3624162
Update badges, add links to other template repos
aromanielloNTIA Nov 12, 2024
47fa78e
Merge remote-tracking branch 'proplib-template/main' into CrossPlatfo…
cheroy-ntia Nov 12, 2024
0bdcb59
update library source
cheroy-ntia Nov 12, 2024
795a9f0
add library google test
cheroy-ntia Nov 12, 2024
391578f
add cmakelist for library
cheroy-ntia Nov 12, 2024
196cfe6
Add Driver source
cheroy-ntia Nov 12, 2024
f4f7ba0
Add template citation file
aromanielloNTIA Nov 12, 2024
fb9f130
Add template zenodo file
aromanielloNTIA Nov 12, 2024
7829fae
Put platform name in driver filename
aromanielloNTIA Nov 12, 2024
587fc5a
Update release action for cross platform driver
aromanielloNTIA Nov 12, 2024
b283c36
Don't build docs in ctest action
aromanielloNTIA Nov 12, 2024
6505dca
Don't clone unnecessary submodule
aromanielloNTIA Nov 12, 2024
26320fe
Fix windows step condition
aromanielloNTIA Nov 12, 2024
5b966d7
add library tests
cheroy-ntia Nov 12, 2024
a0f9f42
Add Driver Execution tests
cheroy-ntia Nov 13, 2024
b38b23c
update driver docs
cheroy-ntia Nov 13, 2024
f44a605
Rename GetDrvrReturnStatus to GetDrvrReturnStatusMsg
aromanielloNTIA Nov 13, 2024
19b2e9d
unique variable name in class methods
aromanielloNTIA Nov 13, 2024
3efc889
clean up
cheroy-ntia Nov 13, 2024
b14ccc8
add driver test
cheroy-ntia Nov 13, 2024
a34e9d9
Merge branch 'proplib-template-main' into CrossPlatform-And-PropLib2.0
cheroy-ntia Nov 13, 2024
e871d7b
merge template
cheroy-ntia Nov 13, 2024
1c48978
clean up
cheroy-ntia Nov 14, 2024
d1d9990
add TestLFMFSmoothEarth
cheroy-ntia Nov 14, 2024
0a39e8c
clean up
cheroy-ntia Nov 14, 2024
cd23fe6
update docs
cheroy-ntia Nov 14, 2024
97b6800
Add public release approval form template
aromanielloNTIA Nov 14, 2024
7825039
fix file name
aromanielloNTIA Nov 14, 2024
ac8c21b
rename to TrstLFMFEquivalent
cheroy-ntia Nov 14, 2024
84cb47d
Merge branch 'proplib-template-main' into CrossPlatform-And-PropLib2.0
cheroy-ntia Nov 14, 2024
a4cf2c8
rename tests
cheroy-ntia Nov 14, 2024
8e5a92a
remove cpack
cheroy-ntia Nov 14, 2024
671ea66
update todo-template
cheroy-ntia Nov 15, 2024
db98b0b
update root documents
cheroy-ntia Nov 18, 2024
1420f3c
update library source and tests documentation
cheroy-ntia Nov 18, 2024
c592b8f
update driver documentation
cheroy-ntia Nov 18, 2024
e742909
clean up README
cheroy-ntia Nov 19, 2024
b8e6840
update CTestPreset
cheroy-ntia Nov 19, 2024
3c866b9
update README
cheroy-ntia Nov 19, 2024
231fd2c
Support multiarch on macos runners
aromanielloNTIA Nov 19, 2024
34b4f99
deduplicate macos tests
aromanielloNTIA Nov 19, 2024
c4cd872
simplify test matrix declaration
aromanielloNTIA Nov 19, 2024
ac1057b
add test concurrency override
aromanielloNTIA Nov 19, 2024
fbeb5fb
fix cmakeversion handling in test matrix
aromanielloNTIA Nov 19, 2024
5677607
switch from include to exclude in strategy matrix
aromanielloNTIA Nov 19, 2024
6246571
Add windows-2019 x64 runner for 32-bit Windows builds
aromanielloNTIA Nov 20, 2024
6af645d
Delete .zenodo.json
aromanielloNTIA Nov 20, 2024
7968997
Update Citation template
aromanielloNTIA Nov 20, 2024
d4cde67
Remove legacy DOI badge from readme
aromanielloNTIA Nov 20, 2024
3225da1
Update GitHubRepoPublicReleaseApproval.md
aromanielloNTIA Nov 20, 2024
738bdd9
replace == 0 with abs(v) < 1e-9
cheroy-ntia Nov 21, 2024
513fd3a
add std::abs
cheroy-ntia Nov 21, 2024
16384a5
remove some warnings
cheroy-ntia Nov 21, 2024
3de0d81
temporary add workflows on branch "CrossPlatform-And-PropLib2.0"
cheroy-ntia Nov 21, 2024
ea105a9
//Not used, comments out for compile warning
cheroy-ntia Nov 21, 2024
d34bc18
remove not used variables
cheroy-ntia Nov 21, 2024
e64b0b8
Create cff-validator.yml
aromanielloNTIA Nov 21, 2024
acd2846
Remove name-particle from template citation file
aromanielloNTIA Nov 21, 2024
af1c2d9
Make template citation valid
aromanielloNTIA Nov 21, 2024
366dc88
Compiler and output configuration at top-level
aromanielloNTIA Nov 21, 2024
85207f7
change to < 1.0e-16
cheroy-ntia Nov 21, 2024
0f9ab36
change back to == 0.0
cheroy-ntia Nov 21, 2024
af447ee
Fix file filter on CFF validator
aromanielloNTIA Nov 21, 2024
d070297
Remove wrappers-as-submodules structure
aromanielloNTIA Nov 21, 2024
702cdfd
Link to wrapper repositories in readme
aromanielloNTIA Nov 21, 2024
9dd1c84
More wrapper submodule cleanup
aromanielloNTIA Nov 21, 2024
5a8d982
Use a single interface header file
aromanielloNTIA Nov 21, 2024
1d9c60b
Renamed EXPORTED to PROPLIB_API
aromanielloNTIA Nov 21, 2024
954ea6e
Fix CFF validator path filters
aromanielloNTIA Nov 22, 2024
d1ec139
using AlmostEqualRelative
cheroy-ntia Nov 25, 2024
03b9c0c
add link to driver readme
aromanielloNTIA Nov 26, 2024
45cdfcf
Remove old test data directory structure
aromanielloNTIA Nov 26, 2024
f12f788
Merge branch 'main' into improvements-from-lfmf
aromanielloNTIA Nov 26, 2024
04ef5ce
Use newer add_compile_definitions
aromanielloNTIA Nov 26, 2024
85e79f4
Support (non-default) static library compilation
aromanielloNTIA Nov 26, 2024
15b3d95
Use newer add_compile_definitions
aromanielloNTIA Nov 26, 2024
4ea1395
fix typo
aromanielloNTIA Nov 26, 2024
a621d1e
Add macOS multi-architecture logic
aromanielloNTIA Nov 26, 2024
e9af93e
Merge branch 'main' into support-macos-multiarch-in-CI
aromanielloNTIA Nov 26, 2024
1b6d50f
Add windows x86 runner
aromanielloNTIA Nov 26, 2024
3c27db4
fix matrix architecture exclude
aromanielloNTIA Nov 26, 2024
6ef1124
try OS type name in action matrix names
aromanielloNTIA Nov 26, 2024
193b046
Revert "try OS type name in action matrix names"
aromanielloNTIA Nov 26, 2024
39cd0a1
Add compiler flags
aromanielloNTIA Nov 26, 2024
bcb09a2
Fix incorrect field used
aromanielloNTIA Nov 26, 2024
48db825
epsilon > 1
cheroy-ntia Nov 26, 2024
ad22fc8
add more Equivalence tests
cheroy-ntia Nov 27, 2024
fd371a4
Merge branch 'proplib-template-main' into CrossPlatform-And-PropLib2.0
cheroy-ntia Nov 27, 2024
349d994
update README
cheroy-ntia Nov 29, 2024
18d9dfd
remove not used test data
cheroy-ntia Dec 3, 2024
ce8f8e4
enum for int define
cheroy-ntia Dec 5, 2024
c433954
update functions inputs
cheroy-ntia Dec 5, 2024
cbf03b1
update driver inputs
cheroy-ntia Dec 5, 2024
3e6d6f8
clean up
cheroy-ntia Dec 6, 2024
9b865ee
add missing include
cheroy-ntia Dec 6, 2024
cc956f6
clean up
cheroy-ntia Dec 9, 2024
4896398
update test data and clean up debug lines
cheroy-ntia Dec 10, 2024
b5fb8ac
update test data
cheroy-ntia Dec 10, 2024
03458eb
update test data
cheroy-ntia Dec 12, 2024
b235df0
Fix CFF validator for Ubuntu 24.04 runner
aromanielloNTIA Dec 12, 2024
8e6912f
update CITATION
cheroy-ntia Dec 17, 2024
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
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
25 changes: 25 additions & 0 deletions .github/workflows/cff-validator.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Validate CITATION.cff

on:
push:
paths:
- 'CITATION.cff'
- '.github/workflows/cff-validator.yml'
pull_request:
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
57 changes: 57 additions & 0 deletions .github/workflows/ctest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# 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", "dev", "CrossPlatform-And-PropLib2.0"]
pull_request:
branches: ["main", "dev", "CrossPlatform-And-PropLib2.0"]
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
- 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: 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 update

- name: Install CMake
uses: lukka/get-cmake@latest
with:
cmakeVersion: ${{ matrix.cmakeVersion }}

- name: "CMake: Build and Test"
uses: lukka/run-cmake@v10
with:
configurePreset: release
configurePresetAdditionalArgs: "['-DBUILD_DOCS=OFF']"
buildPreset: release
testPreset: release
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", "CrossPlatform-And-PropLib2.0"]
push:
branches: ["main", "dev", "CrossPlatform-And-PropLib2.0"]
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
68 changes: 68 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# 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]+.*']

permissions:
contents: write

jobs:
create_release_artifacts:
name: Create release artifacts
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
- windows-2019 # Used for Windows 32-bit builds
architecture: [arm64, x64]
cmakeVersion: ["3.21", latest] # CMake >= 3.21 is required to use "--preset <presetName>" and discover generators
exclude: # Only use x64 strategies for Linux and Windows
- os: windows-latest
architecture: arm64
- os: windows-2019
architecture: arm64
- os: ubuntu-latest
architecture: arm64
steps:
- name: Checkout repository
uses: actions/checkout@v4

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

- name: "CMake: Build"
uses: lukka/run-cmake@v10
with:
configurePreset: release
configurePresetAdditionalArgs: "['-DBUILD_DOCS=OFF', '-DRUN_TESTS=OFF', '-DRUN_DRIVER_TESTS=OFF']"
buildPreset: release

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

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