initial commit

This commit is contained in:
PancakeTAS 2025-06-29 05:05:11 +02:00
commit bf2b683264
No known key found for this signature in database
4 changed files with 86 additions and 0 deletions

26
.clang-tidy Normal file
View file

@ -0,0 +1,26 @@
Checks:
# enable basic checks
- "clang-analyzer-*"
# configure performance checks
- "performance-*"
- "-performance-enum-size"
# configure readability and bugprone checks
- "readability-*"
- "bugprone-*"
- "misc-*"
- "-misc-include-cleaner"
- "-readability-braces-around-statements"
- "-readability-function-cognitive-complexity"
- "-readability-identifier-length"
- "-readability-implicit-bool-conversion"
- "-readability-magic-numbers"
- "-readability-math-missing-parentheses"
- "-bugprone-easily-swappable-parameters"
# configure modernization
- "modernize-*"
- "-modernize-use-trailing-return-type"
# configure cppcoreguidelines
- "cppcoreguidelines-*"
- "-cppcoreguidelines-avoid-magic-numbers"
- "-cppcoreguidelines-pro-type-reinterpret-cast" # allows reinterpret_cast
- "-cppcoreguidelines-avoid-non-const-global-variables"

4
.gitattributes vendored Normal file
View file

@ -0,0 +1,4 @@
*.cpp diff=cpp eol=lf
*.hpp diff=cpp eol=lf
*.md diff=markdown eol=lf
*.cs binary

8
.gitignore vendored Normal file
View file

@ -0,0 +1,8 @@
# cmake files
/build
# ide/lsp files
/.vscode
/.clangd
/.cache
/.ccls

48
CMakeLists.txt Normal file
View file

@ -0,0 +1,48 @@
cmake_minimum_required(VERSION 3.29)
project(lsfg-vk-base-base
VERSION 0.0.1
DESCRIPTION "lsfg-vk-base: LSFG on Linux through Vulkan"
LANGUAGES CXX)
# cmake options
set(CMAKE_CXX_COMPILER clang++)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_CLANG_TIDY clang-tidy)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# main project
file(GLOB SOURCES
"src/core/*.cpp"
"src/utils/*.cpp"
"src/*.cpp"
)
add_executable(lsfg-vk-base ${SOURCES})
target_include_directories(lsfg-vk-base
PUBLIC include)
target_link_libraries(lsfg-vk-base
PUBLIC vulkan)
target_compile_options(lsfg-vk-base PRIVATE
-Weverything
# disable compat c++ flags
-Wno-pre-c++20-compat-pedantic
-Wno-pre-c++17-compat
-Wno-c++98-compat-pedantic
-Wno-c++98-compat
# disable other flags
-Wno-missing-designated-field-initializers
-Wno-shadow # allow shadowing
-Wno-switch-enum # ignore missing cases
-Wno-switch-default # ignore missing default
-Wno-padded # ignore automatic padding
-Wno-exit-time-destructors # allow globals
-Wno-global-constructors
# required for vulkan
-Wno-cast-function-type-strict
)