From bf2b683264d2f24b6246f6563b769778a9335541 Mon Sep 17 00:00:00 2001 From: PancakeTAS Date: Sun, 29 Jun 2025 05:05:11 +0200 Subject: [PATCH] initial commit --- .clang-tidy | 26 ++++++++++++++++++++++++++ .gitattributes | 4 ++++ .gitignore | 8 ++++++++ CMakeLists.txt | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 86 insertions(+) create mode 100644 .clang-tidy create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 CMakeLists.txt diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 0000000..b8e891c --- /dev/null +++ b/.clang-tidy @@ -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" diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..5f24d27 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +*.cpp diff=cpp eol=lf +*.hpp diff=cpp eol=lf +*.md diff=markdown eol=lf +*.cs binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eb55056 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +# cmake files +/build + +# ide/lsp files +/.vscode +/.clangd +/.cache +/.ccls diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..dd4393a --- /dev/null +++ b/CMakeLists.txt @@ -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 +)