This commit is contained in:
SimonFJ20 2023-01-08 18:41:40 +01:00
parent 1105c9b8d3
commit 4aa57c5bd0
11 changed files with 163 additions and 1 deletions

8
.clang-format Normal file
View File

@ -0,0 +1,8 @@
BasedOnStyle: WebKit
IndentWidth: 4
ColumnLimit: 80
IndentCaseLabels: true
BreakBeforeBraces: Custom
BraceWrapping:
AfterFunction: true
SplitEmptyFunction: false

40
.clangd Normal file
View File

@ -0,0 +1,40 @@
CompileFlags:
CompilationDatabase: ./builddir
Diagnostics:
ClangTidy:
Add:
- bugprone-*
- clang-analyzer-*
- cppcoreguidelines-*
- modernize-*
- readability-*
Remove:
- readability-braces-around-statements
- cppcoreguidelines-avoid-magic-numbers
- readability-magic-numbers
- readability-identifier-length
- bugprone-easily-swappable-parameters
CheckOptions:
UnusedIncludes: Strict
# typecase rules
readability-identifier-naming.ClassCase: CamelCase
readability-identifier-naming.ConstantCase: lower_case
readability-identifier-naming.EnumCase: CamelCase
readability-identifier-naming.EnumConstantCase: CamelCase
readability-identifier-naming.FunctionCase: lower_case
readability-identifier-naming.InlineNamespaceCase: lower_case
readability-identifier-naming.MacroDefinitionCase: UPPER_CASE
readability-identifier-naming.MemberCase: lower_case
readability-identifier-naming.MethodCase: lower_case
readability-identifier-naming.NamespaceCase: lower_case
readability-identifier-naming.ScopedEnumConstantCase: CamelCase
readability-identifier-naming.StructCase: CamelCase
readability-identifier-naming.TemplateParameterCase: CamelCase
readability-identifier-naming.TemplateTemplateParameterCase: CamelCase
readability-identifier-naming.TypeAliasCase: CamelCase
readability-identifier-naming.TypedefCase: CamelCase
readability-identifier-naming.UnionCase: CamelCase
readability-identifier-naming.ValueTemplateParameterCase: lower_case
readability-identifier-naming.VariableCase: lower_case

View File

@ -1 +1,33 @@
# web-stack-project
# web-stack-project
## Build project
- Open project in terminal
- Run `meson setup builddir`, or `CXX=clang-<version> meson setup builddir` if clang and clang-version is different
- Navigate into builddir, `cd builddir`
- Compile `meson compile`
- Run, `./browser` or `./server`
## VS Code development setup
### Install
- `clang-15` recommended, `clang-15` based, check with `clang --version`
- [Meson](https://mesonbuild.com/), build system
- [Meson VS Code extension](https://marketplace.visualstudio.com/items?itemName=mesonbuild.mesonbuild)
- [VSCode - clangd](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd), linter
- [VSCode - CodeLLDB](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb), debugger
- [VSCode - Better C++ Syntax](https://marketplace.visualstudio.com/items?itemName=jeff-hykin.better-cpp-syntax), syntax higlighting
### Config
Add these to `settings.json` if necessary
```json
{
// probably necessary
"clangd.onConfigChanged": "restart",
// only necessary if default `/usr/bin/clangd` isn't the correct version
"clangd.path": "/usr/bin/clangd-<version>", // <version> is a place holder, eg, `clangd-15`
}
```

3
browser/main.cpp Normal file
View File

@ -0,0 +1,3 @@
#include <fmt/core.h>
int main() { fmt::print("browser: hello world!\n"); }

3
browser/meson.build Normal file
View File

@ -0,0 +1,3 @@
browser_sources += files(
'main.cpp',
)

43
meson.build Normal file
View File

@ -0,0 +1,43 @@
project(
'web-stack-project',
'cpp',
version: '0.1',
default_options: [
'warning_level=3',
'werror=true',
'cpp_std=c++20',
],
)
fmt_dep = dependency('fmt')
sdl2_dep = dependency('sdl2')
server_sources = []
subdir('server')
server_exe = executable(
'web-server',
server_sources,
win_subsystem: 'console',
include_directories: [
include_directories('server'),
],
dependencies: [
fmt_dep,
sdl2_dep,
],
)
browser_sources = []
subdir('browser')
browser_exe = executable(
'web-browser',
browser_sources,
win_subsystem: 'console',
include_directories: [
include_directories('browser'),
],
dependencies: [
fmt_dep,
sdl2_dep,
],
)

3
server/main.cpp Normal file
View File

@ -0,0 +1,3 @@
#include <fmt/core.h>
int main() { fmt::print("server: hello world!\n"); }

3
server/meson.build Normal file
View File

@ -0,0 +1,3 @@
server_sources += files(
'main.cpp',
)

3
subprojects/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
packagecache/
fmt-*
SDL2-*

12
subprojects/fmt.wrap Normal file
View File

@ -0,0 +1,12 @@
[wrap-file]
directory = fmt-9.1.0
source_url = https://github.com/fmtlib/fmt/archive/9.1.0.tar.gz
source_filename = fmt-9.1.0.tar.gz
source_hash = 5dea48d1fcddc3ec571ce2058e13910a0d4a6bab4cc09a809d8b1dd1c88ae6f2
patch_filename = fmt_9.1.0-1_patch.zip
patch_url = https://wrapdb.mesonbuild.com/v2/fmt_9.1.0-1/get_patch
patch_hash = 4557b9ba87b3eb63694ed9b21d1a2117d4a97ca56b91085b10288e9a5294adf8
wrapdb_version = 9.1.0-1
[provide]
fmt = fmt_dep

12
subprojects/sdl2.wrap Normal file
View File

@ -0,0 +1,12 @@
[wrap-file]
directory = SDL2-2.26.0
source_url = https://github.com/libsdl-org/SDL/releases/download/release-2.26.0/SDL2-2.26.0.tar.gz
source_filename = SDL2-2.26.0.tar.gz
source_hash = 8000d7169febce93c84b6bdf376631f8179132fd69f7015d4dadb8b9c2bdb295
patch_filename = sdl2_2.26.0-1_patch.zip
patch_url = https://wrapdb.mesonbuild.com/v2/sdl2_2.26.0-1/get_patch
patch_hash = 6fcfd727d71cf7837332723518d5e47ffd64f1e7630681cf4b50e99f2bf7676f
wrapdb_version = 2.26.0-1
[provide]
sdl2 = sdl2_dep