Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
piotrmacha committed Jun 3, 2024
0 parents commit 1de3bb0
Show file tree
Hide file tree
Showing 32 changed files with 1,895 additions and 0 deletions.
66 changes: 66 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Generated from CLion C/C++ Code Style settings
BasedOnStyle: LLVM
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: None
AlignOperands: DontAlign
AllowAllArgumentsOnNextLine: false
AllowAllConstructorInitializersOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: Always
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Always
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterReturnType: None
AlwaysBreakTemplateDeclarations: MultiLine
BreakBeforeBraces: Custom
BraceWrapping:
AfterCaseLabel: false
AfterClass: true
AfterControlStatement: Never
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterUnion: true
BeforeCatch: true
BeforeElse: false
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: true
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeColon
BreakInheritanceList: BeforeColon
ColumnLimit: 0
CompactNamespaces: false
ContinuationIndentWidth: 8
IndentCaseLabels: true
IndentPPDirectives: None
IndentWidth: 4
KeepEmptyLinesAtTheStartOfBlocks: true
MaxEmptyLinesToKeep: 2
NamespaceIndentation: All
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: false
PointerAlignment: Left
ReflowComments: false
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 0
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
TabWidth: 4
UseTab: Never
14 changes: 14 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# These are supported funding model platforms

github: piotrmacha # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
polar: # Replace with a single Polar username
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
75 changes: 75 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Build CMake Project
run-name: Build ${{ inputs.cmake-preset }} ${{ inputs.msvc-toolkit }}

on:
workflow_call:
inputs:
cmake-preset:
required: true
type: string
upload-artifact-dll:
required: false
type: string
default: false
upload-artifact-vdf:
required: false
type: string
default: false
msvc-toolkit:
required: false
type: string
default: 14.39
project-version:
required: false
type: string
default: false

jobs:
build:
name: Build
runs-on: windows-2022
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: TheMrMilchmann/setup-msvc-dev@v3
with:
arch: x86
toolset: ${{ inputs.msvc-toolkit }}
export-path-to-vcvarsall: VCVARSALL
- name: CMake Setup
uses: lukka/get-cmake@latest
- name: Set project version
if: ${{ inputs.project-version != 'false' }}
env:
PROJECT_VERSION: ${{ inputs.project-version }}
run: |
$version = $env:PROJECT_VERSION
$cmakeVersion = $version -replace "([^0-9\.]+)",""
$output = @'
set(PROJECT_VERSION "{version}" CACHE STRING "" FORCE)
set(PROJECT_VERSION_CMAKE "{cmake}" CACHE STRING "" FORCE)
'@
$output = $output -replace "{version}",$version
$output = $output -replace "{cmake}",$cmakeVersion
Set-Content -Path Configuration.override.cmake -Value $output
- name: CMake Configure
run: cmake --preset ${{ inputs.cmake-preset }}
- name: Ninja Build
run: ninja -C out/build/${{ inputs.cmake-preset }} -j 20
- name: CMake Install
run: cmake --install out/build/${{ inputs.cmake-preset }} --prefix out/install/${{ inputs.cmake-preset }}
- name: Archive DLL
if: ${{ inputs.upload-artifact-dll != 'false' }}
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.upload-artifact-dll }}
path: |
out/install/${{ inputs.cmake-preset }}/bin/*.dll
out/install/${{ inputs.cmake-preset }}/bin/Signatures/*.tsv
- name: Archive VDF
uses: actions/upload-artifact@v4
if: ${{ inputs.upload-artifact-vdf != 'false' }}
with:
name: ${{ inputs.upload-artifact-vdf }}
path: out/install/${{ inputs.cmake-preset }}/bin/*.vdf
42 changes: 42 additions & 0 deletions .github/workflows/on-push.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: On Push
run-name: Build ${{ github.ref }}
permissions: write-all

on:
pull_request:
branches: [ "main", "dev" ]
push:
branches: [ "main", "dev" ]
paths-ignore:
- 'README.md'
- 'docs/**'

jobs:
build-debug:
name: Build Debug
uses: ./.github/workflows/build.yaml
with:
cmake-preset: x86-debug
upload-artifact-dll: debug-dll
upload-artifact-vdf: debug-vdf
build-release:
name: Build Release
uses: ./.github/workflows/build.yaml
with:
cmake-preset: x86-release
upload-artifact-dll: release-dll
upload-artifact-vdf: release-vdf
build-relwithdebinfo:
name: Build RelWithDebInfo
uses: ./.github/workflows/build.yaml
with:
cmake-preset: x86-relwithdebinfo
upload-artifact-dll: relwithdebinfo-dll
upload-artifact-vdf: relwithdebinfo-vdf
build-minsizerel:
name: Build MinSizeRel
uses: ./.github/workflows/build.yaml
with:
cmake-preset: x86-minsizerel
upload-artifact-dll: minsizerel-dll
upload-artifact-vdf: minsizerel-vdf
102 changes: 102 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
name: Release
run-name: Release ${{ github.ref_name }}
permissions: write-all

on:
push:
tags:
- 'v*'

jobs:
build-release:
name: Build Release
uses: ./.github/workflows/build.yaml
with:
cmake-preset: x86-release
upload-artifact-dll: release-dll
upload-artifact-vdf: release-vdf
project-version: ${{ github.ref_name }}
build-relwithdebinfo:
name: Build RelWithDebInfo
uses: ./.github/workflows/build.yaml
with:
cmake-preset: x86-relwithdebinfo
upload-artifact-dll: relwithdebinfo-dll
upload-artifact-vdf: relwithdebinfo-vdf
project-version: ${{ github.ref_name }}
build-minsizerel:
name: Build MinSizeRel
uses: ./.github/workflows/build.yaml
with:
cmake-preset: x86-minsizerel
upload-artifact-dll: minsizerel-dll
upload-artifact-vdf: minsizerel-vdf
project-version: ${{ github.ref_name }}
publish:
name: Publish Release
runs-on: windows-2022
needs:
- build-release
- build-relwithdebinfo
- build-minsizerel
steps:
- name: Download Release DLL
uses: actions/download-artifact@v4
with:
name: release-dll
path: out/install/x86-release/bin/
- name: Download Release VDF
uses: actions/download-artifact@v4
with:
name: release-vdf
path: out/install/x86-release/
- name: Download RelWithDebInfo DLL
uses: actions/download-artifact@v4
with:
name: relwithdebinfo-dll
path: out/build/x86-relwithdebinfo/
- name: Download RelWithDebInfo VDF
uses: actions/download-artifact@v4
with:
name: relwithdebinfo-vdf
path: out/install/x86-relwithdebinfo/
- name: Download MinSizeRel DLL
uses: actions/download-artifact@v4
with:
name: minsizerel-dll
path: out/build/x86-minsizerel/
- name: Download MinSizeRel VDF
uses: actions/download-artifact@v4
with:
name: minsizerel-vdf
path: out/install/x86-minsizerel/
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Prepare Release Files
id: prepare-release
shell: powershell
env:
GITHUB_REF: ${{ github.ref_name }}
run: |
$project = (Get-Content -Path Configuration.cmake | Select-String -Pattern "PROJECT_NAME `"([^`"]+)`"").Matches[0].Groups[1].Value
$tag = $env:GITHUB_REF -replace '^refs/tags/', ''
Compress-Archive out/install/x86-release/bin/* $project-${tag}.zip
Copy-Item out/install/x86-release/$project.vdf $project-${tag}.vdf
Compress-Archive out/install/x86-relwithdebinfo/bin/* $project-${tag}-RelWithDebInfo.zip
Copy-Item out/install/x86-relwithdebinfo/$project.vdf $project-${tag}-RelWithDebInfo.vdf
Compress-Archive out/install/x86-minsizerel/bin/* $project-${tag}-MinSizeRel.zip
Copy-Item out/install/x86-minsizerel/$project.vdf $project-${tag}-MinSizeRel.vdf
$prerelease = if (-not ($tag -match '^v?(\d+\.\d+\.\d+)$')) { 'true' } else { 'false' }
echo "prerelease=${prerelease}" >> $env:GITHUB_OUTPUT
- name: Release
uses: softprops/action-gh-release@v2
with:
token: ${{ github.token }}
generate_release_notes: true
fail_on_unmatched_files: false
draft: false
prerelease: ${{ steps.prepare-release.outputs.prerelease }}
files: |
*.zip
*.vdf
Loading

0 comments on commit 1de3bb0

Please sign in to comment.