Initial commit
This commit is contained in:
73
.clang-format
Normal file
73
.clang-format
Normal file
@ -0,0 +1,73 @@
|
||||
# We'll use defaults from the Google style, but with 4 columns indentation.
|
||||
BasedOnStyle: Google
|
||||
IndentWidth: 4
|
||||
TabWidth: 4
|
||||
UseTab: Always
|
||||
---
|
||||
Language: Cpp
|
||||
DerivePointerAlignment: false
|
||||
PointerAlignment: Left
|
||||
ReferenceAlignment: Left
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpacesInParentheses: false
|
||||
AllowAllArgumentsOnNextLine: false
|
||||
BreakBeforeBraces: Attach
|
||||
AccessModifierOffset: -2
|
||||
|
||||
AlignAfterOpenBracket: true
|
||||
AlignConsecutiveAssignments: true
|
||||
AlignConsecutiveDeclarations: true
|
||||
AlignEscapedNewlinesLeft: true
|
||||
AlignOperands: true
|
||||
AlignTrailingComments: true
|
||||
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowShortBlocksOnASingleLine: true
|
||||
AllowShortCaseLabelsOnASingleLine: true
|
||||
AllowShortFunctionsOnASingleLine: true
|
||||
AllowShortIfStatementsOnASingleLine: true
|
||||
AllowShortLoopsOnASingleLine: true
|
||||
AlwaysBreakAfterDefinitionReturnType: false
|
||||
AlwaysBreakAfterReturnType: None
|
||||
AlwaysBreakBeforeMultilineStrings: false
|
||||
AlwaysBreakTemplateDeclarations: true
|
||||
BinPackArguments: false
|
||||
BinPackParameters: false
|
||||
|
||||
BreakBeforeBraces: Attach
|
||||
BreakAfterJavaFieldAnnotations: true
|
||||
BreakBeforeInheritanceComma: false
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializers: BeforeColon
|
||||
BreakStringLiterals: true
|
||||
|
||||
CompactNamespaces: false
|
||||
PackConstructorInitializers: CurrentLine
|
||||
ConstructorInitializerIndentWidth: 4
|
||||
ContinuationIndentWidth: 4
|
||||
Cpp11BracedListStyle: true
|
||||
SpaceBeforeCpp11BracedList: false
|
||||
ExperimentalAutoDetectBinPacking: false
|
||||
IndentCaseLabels: true
|
||||
FixNamespaceComments: true
|
||||
IndentWrappedFunctionNames: false
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
MaxEmptyLinesToKeep: 1
|
||||
NamespaceIndentation: None
|
||||
|
||||
SpaceAfterCStyleCast: false
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesBeforeTrailingComments: 1
|
||||
SpacesInAngles: false
|
||||
SpacesInContainerLiterals: true
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
SpaceAfterTemplateKeyword: true
|
||||
SpaceBeforeInheritanceColon: true
|
||||
|
||||
SortUsingDeclarations: true
|
||||
SortIncludes: true
|
||||
1
.clang-format-ignore
Normal file
1
.clang-format-ignore
Normal file
@ -0,0 +1 @@
|
||||
subprojects/**
|
||||
2
.gitea/template
Normal file
2
.gitea/template
Normal file
@ -0,0 +1,2 @@
|
||||
**.build
|
||||
**.md
|
||||
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
build/
|
||||
builddir/
|
||||
|
||||
subprojects/**
|
||||
!subprojects/*.wrap
|
||||
!subprojects/.clang-format
|
||||
16
.vscode/c_cpp_properties.json
vendored
Normal file
16
.vscode/c_cpp_properties.json
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Linux",
|
||||
"includePath": [
|
||||
"${workspaceFolder}/**"
|
||||
],
|
||||
"defines": [],
|
||||
"compilerPath": "/usr/bin/gcc",
|
||||
"cStandard": "gnu17",
|
||||
"cppStandard": "c++20",
|
||||
"intelliSenseMode": "linux-gcc-x64"
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
||||
33
.vscode/launch.json
vendored
Normal file
33
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "(gdb) Launch",
|
||||
"type": "cppdbg",
|
||||
"request": "launch",
|
||||
"program": "${workspaceFolder}/build/test/TestMain",
|
||||
"args": [],
|
||||
"stopAtEntry": false,
|
||||
"cwd": "${fileDirname}",
|
||||
"environment": [],
|
||||
"externalConsole": false,
|
||||
"MIMode": "gdb",
|
||||
"preLaunchTask": "Make debug",
|
||||
"setupCommands": [
|
||||
{
|
||||
"description": "Enable pretty-printing for gdb",
|
||||
"text": "-enable-pretty-printing",
|
||||
"ignoreFailures": true
|
||||
},
|
||||
{
|
||||
"description": "Set Disassembly Flavor to Intel",
|
||||
"text": "-gdb-set disassembly-flavor intel",
|
||||
"ignoreFailures": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
65
.vscode/settings.json
vendored
Normal file
65
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,65 @@
|
||||
{
|
||||
"files.associations": {
|
||||
"array": "cpp",
|
||||
"atomic": "cpp",
|
||||
"bit": "cpp",
|
||||
"*.tcc": "cpp",
|
||||
"cctype": "cpp",
|
||||
"chrono": "cpp",
|
||||
"clocale": "cpp",
|
||||
"cmath": "cpp",
|
||||
"compare": "cpp",
|
||||
"concepts": "cpp",
|
||||
"condition_variable": "cpp",
|
||||
"csignal": "cpp",
|
||||
"cstdarg": "cpp",
|
||||
"cstddef": "cpp",
|
||||
"cstdint": "cpp",
|
||||
"cstdio": "cpp",
|
||||
"cstdlib": "cpp",
|
||||
"cstring": "cpp",
|
||||
"ctime": "cpp",
|
||||
"cwchar": "cpp",
|
||||
"cwctype": "cpp",
|
||||
"deque": "cpp",
|
||||
"map": "cpp",
|
||||
"set": "cpp",
|
||||
"unordered_map": "cpp",
|
||||
"vector": "cpp",
|
||||
"exception": "cpp",
|
||||
"algorithm": "cpp",
|
||||
"functional": "cpp",
|
||||
"iterator": "cpp",
|
||||
"memory": "cpp",
|
||||
"memory_resource": "cpp",
|
||||
"numeric": "cpp",
|
||||
"optional": "cpp",
|
||||
"random": "cpp",
|
||||
"ratio": "cpp",
|
||||
"string": "cpp",
|
||||
"string_view": "cpp",
|
||||
"system_error": "cpp",
|
||||
"tuple": "cpp",
|
||||
"type_traits": "cpp",
|
||||
"utility": "cpp",
|
||||
"fstream": "cpp",
|
||||
"initializer_list": "cpp",
|
||||
"iomanip": "cpp",
|
||||
"iosfwd": "cpp",
|
||||
"iostream": "cpp",
|
||||
"istream": "cpp",
|
||||
"limits": "cpp",
|
||||
"mutex": "cpp",
|
||||
"new": "cpp",
|
||||
"numbers": "cpp",
|
||||
"ostream": "cpp",
|
||||
"ranges": "cpp",
|
||||
"sstream": "cpp",
|
||||
"stdexcept": "cpp",
|
||||
"stop_token": "cpp",
|
||||
"streambuf": "cpp",
|
||||
"thread": "cpp",
|
||||
"typeinfo": "cpp",
|
||||
"semaphore": "cpp"
|
||||
}
|
||||
}
|
||||
85
.vscode/tasks.json
vendored
Normal file
85
.vscode/tasks.json
vendored
Normal file
@ -0,0 +1,85 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Make all",
|
||||
"type": "shell",
|
||||
"command": "make",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Make debug",
|
||||
"type": "shell",
|
||||
"command": "make debug",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Make release",
|
||||
"type": "shell",
|
||||
"command": "make release",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Make test",
|
||||
"type": "shell",
|
||||
"command": "make test",
|
||||
"group": {
|
||||
"kind": "test",
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Make coverage",
|
||||
"type": "shell",
|
||||
"command": "make coverage",
|
||||
"group": {
|
||||
"kind": "test",
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Make docs",
|
||||
"type": "shell",
|
||||
"command": "make docs/html",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Make clean",
|
||||
"type": "shell",
|
||||
"command": "make clean",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Make spotless",
|
||||
"type": "shell",
|
||||
"command": "make spotless",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Make scan",
|
||||
"type": "shell",
|
||||
"command": "make scan-build",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Make sanitize",
|
||||
"type": "shell",
|
||||
"command": "make sanitize",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
}
|
||||
},
|
||||
]
|
||||
}
|
||||
77
Makefile
Normal file
77
Makefile
Normal file
@ -0,0 +1,77 @@
|
||||
###############################################################################
|
||||
# Simple Makefile to prevent the need to interact with Meson directly.
|
||||
#
|
||||
# While Meson and Ninja are many things, intuitive is not one of them when it
|
||||
# comes to the command line. This is easily rectified with a simple make file
|
||||
# to hide the details and present a simple and familiar interface. This will
|
||||
# allow Meson and Ninja to do their thing with a few options:
|
||||
#
|
||||
# - BUILD_PREFIX = The build directory, defaults to ./build
|
||||
# - BUILD_TYPE = release or debug
|
||||
#
|
||||
# All other build targets get passed straight to Ninja
|
||||
###############################################################################
|
||||
|
||||
# Default to a less-verbose build. If you want all the gory compiler output,
|
||||
# run "make VERBOSE=1"
|
||||
$(VERBOSE).SILENT:
|
||||
|
||||
# Figure out where to build the software.
|
||||
# Use BUILD_PREFIX if it was passed in.
|
||||
# If not, search up to four parent directories for a 'build' directory.
|
||||
# Otherwise, use ./build.
|
||||
ifeq "$(BUILD_PREFIX)" ""
|
||||
BUILD_PREFIX:=$(shell for pfx in ./ .. ../.. ../../.. ../../../..; do d=`pwd`/$$pfx/build;\
|
||||
if [ -d $$d ]; then echo $$d; exit 0; fi; done; echo `pwd`/build)
|
||||
endif
|
||||
|
||||
# create the build directory if needed, and normalize its path name
|
||||
BUILD_PREFIX:=$(shell mkdir -p $(BUILD_PREFIX) && cd $(BUILD_PREFIX) && echo `pwd`)
|
||||
|
||||
# Default to a release build. If you want to enable debugging flags, run
|
||||
# "make BUILD_TYPE=debug"
|
||||
ifeq "$(BUILD_TYPE)" ""
|
||||
BUILD_TYPE="release"
|
||||
endif
|
||||
|
||||
all: $(BUILD_PREFIX)/build.ninja
|
||||
ninja -C $(BUILD_PREFIX)
|
||||
|
||||
$(BUILD_PREFIX)/build.ninja:
|
||||
$(MAKE) configure
|
||||
|
||||
.PHONY: configure
|
||||
configure:
|
||||
@echo "\nBUILD_PREFIX: $(BUILD_PREFIX)\n\n"
|
||||
|
||||
@meson --buildtype=$(BUILD_TYPE) $(BUILD_PREFIX)
|
||||
|
||||
# This needs to be separate for some reason
|
||||
test: $(BUILD_PREFIX)/build.ninja
|
||||
ninja -C $(BUILD_PREFIX) test
|
||||
|
||||
coverage: test
|
||||
ninja -C $(BUILD_PREFIX) coverage
|
||||
|
||||
debug: $(BUILD_PREFIX)/build.ninja
|
||||
meson configure $(BUILD_PREFIX) --buildtype=debug
|
||||
ninja -C $(BUILD_PREFIX)
|
||||
|
||||
release: $(BUILD_PREFIX)/build.ninja
|
||||
meson configure $(BUILD_PREFIX) --buildtype=release
|
||||
ninja -C $(BUILD_PREFIX)
|
||||
|
||||
sanitize: $(BUILD_PREFIX)/build.ninja
|
||||
meson configure $(BUILD_PREFIX) -Db_sanitize=address
|
||||
ninja -C $(BUILD_PREFIX)
|
||||
|
||||
clean:
|
||||
-if [ -d $(BUILD_PREFIX) ]; then ninja -C $(BUILD_PREFIX) clean; fi
|
||||
|
||||
spotless:
|
||||
rm -r $(BUILD_PREFIX)
|
||||
meson subprojects purge --confirm
|
||||
|
||||
# other (custom) targets are passed through to the Meson genarated Ninja file
|
||||
% ::
|
||||
ninja -C $(BUILD_PREFIX) $@
|
||||
2702
docs/Doxyfile.in
Normal file
2702
docs/Doxyfile.in
Normal file
File diff suppressed because it is too large
Load Diff
7908
docs/doxygen-awesome.css
Normal file
7908
docs/doxygen-awesome.css
Normal file
File diff suppressed because one or more lines are too long
4
docs/mainpage.md
Normal file
4
docs/mainpage.md
Normal file
@ -0,0 +1,4 @@
|
||||
\mainpage
|
||||
|
||||
## Header
|
||||
${REPO_DESCRIPTION}
|
||||
24
docs/meson.build
Normal file
24
docs/meson.build
Normal file
@ -0,0 +1,24 @@
|
||||
cdata = configuration_data()
|
||||
cdata.set('VERSION', meson.project_version())
|
||||
cdata.set('PROJECTNAME', meson.project_name())
|
||||
cdata.set('TOP_SRCDIR', meson.source_root())
|
||||
cdata.set('TOP_BUILDDIR', meson.build_root())
|
||||
cdata.set('DOXYGEN_AWESOME', join_paths(meson.current_source_dir(), 'doxygen-awesome.css'))
|
||||
cdata.set('DOC_OUTPUT_DIR', meson.current_build_dir())
|
||||
|
||||
if find_program('dot', required : false).found()
|
||||
cdata.set('HAVE_DOT', 'YES')
|
||||
else
|
||||
cdata.set('HAVE_DOT', 'NO')
|
||||
endif
|
||||
|
||||
doxyfile = configure_file(input: 'Doxyfile.in',
|
||||
output: 'Doxyfile',
|
||||
configuration: cdata,
|
||||
install: false)
|
||||
|
||||
html_target = custom_target('docs',
|
||||
input: doxyfile,
|
||||
output: 'html',
|
||||
command: [doxygen, doxyfile],
|
||||
install: false)
|
||||
7
gcovr.cfg
Normal file
7
gcovr.cfg
Normal file
@ -0,0 +1,7 @@
|
||||
exclude = build/test/*
|
||||
exclude = test/*
|
||||
exclude = include/*
|
||||
exclude = subprojects/*
|
||||
|
||||
gcov-parallel = yes
|
||||
decisions = yes
|
||||
20
meson.build
Normal file
20
meson.build
Normal file
@ -0,0 +1,20 @@
|
||||
project('${REPO_NAME_PASCAL}', 'cpp',
|
||||
version : '0.1',
|
||||
default_options : ['warning_level=3',
|
||||
'cpp_std=c++20',
|
||||
'b_coverage=true'])
|
||||
|
||||
add_global_arguments(language : 'cpp')
|
||||
|
||||
inc = include_directories('include')
|
||||
|
||||
doxygen = find_program('doxygen', required : false)
|
||||
|
||||
doctest = subproject('doctest')
|
||||
doctest_dep = doctest.get_variable('doctest_dep')
|
||||
|
||||
subdir('src')
|
||||
subdir('test')
|
||||
if doxygen.found()
|
||||
subdir('docs')
|
||||
endif
|
||||
5
src/hello.cpp
Normal file
5
src/hello.cpp
Normal file
@ -0,0 +1,5 @@
|
||||
/*!
|
||||
* \brief Main Entry Point
|
||||
* \return Status code
|
||||
*/
|
||||
int main() { return 0; }
|
||||
3
src/meson.build
Normal file
3
src/meson.build
Normal file
@ -0,0 +1,3 @@
|
||||
sources = ['hello.cpp']
|
||||
|
||||
executable('hello', sources, include_directories : inc, install : false)
|
||||
2
subprojects/.clang-format
Normal file
2
subprojects/.clang-format
Normal file
@ -0,0 +1,2 @@
|
||||
DisableFormat: true
|
||||
SortIncludes: Never
|
||||
9
subprojects/doctest.wrap
Normal file
9
subprojects/doctest.wrap
Normal file
@ -0,0 +1,9 @@
|
||||
[wrap-file]
|
||||
directory = doctest-2.4.9
|
||||
source_url = https://github.com/doctest/doctest/archive/refs/tags/v2.4.9.tar.gz
|
||||
source_filename = doctest-2.4.9.tar.gz
|
||||
source_hash = 19b2df757f2f3703a5e63cee553d85596875f06d91a3333acd80a969ef210856
|
||||
wrapdb_version = 2.4.9-1
|
||||
|
||||
[provide]
|
||||
dependency_names = doctest
|
||||
3
test/Sample_test.cpp
Normal file
3
test/Sample_test.cpp
Normal file
@ -0,0 +1,3 @@
|
||||
#include "doctest.h"
|
||||
|
||||
TEST_CASE("sample_test") { CHECK(1 == 1); }
|
||||
2
test/TestMain.cpp
Normal file
2
test/TestMain.cpp
Normal file
@ -0,0 +1,2 @@
|
||||
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
|
||||
#include "doctest.h"
|
||||
11
test/meson.build
Normal file
11
test/meson.build
Normal file
@ -0,0 +1,11 @@
|
||||
# Add test sources to this list
|
||||
test_sources = ['Sample_test.cpp']
|
||||
|
||||
test_sources += 'TestMain.cpp'
|
||||
|
||||
testexe = executable('TestMain', test_sources, dependencies : doctest_dep, include_directories : inc)
|
||||
|
||||
test_base_name = ''.join([meson.project_name(), 'Tests'])
|
||||
|
||||
# List test targets here, organized by suite
|
||||
test(test_base_name, testexe)
|
||||
Reference in New Issue
Block a user