diff --git a/.clang-format b/.clang-format index 54383de..7c53194 100644 --- a/.clang-format +++ b/.clang-format @@ -66,7 +66,7 @@ IncludeCategories: CaseSensitive: false IncludeIsMainRegex: '([-_](test|unittest))?$' IndentCaseLabels: true -IndentPPDirectives: BeforeHash +IndentPPDirectives: None IndentWidth: 4 IndentWrappedFunctionNames: false KeepEmptyLinesAtTheStartOfBlocks: false diff --git a/engine/CMakeLists.txt b/engine/CMakeLists.txt index dcef5e3..00e4f9b 100644 --- a/engine/CMakeLists.txt +++ b/engine/CMakeLists.txt @@ -8,54 +8,30 @@ set(NOVA_VULKAN ON CACHE BOOL "Enable Vulkan support") set(NOVA_WAYLAND ON CACHE BOOL "Enable Wayland support") set(NOVA_X11 ON CACHE BOOL "Enable X11 support") +if (WIN32) + set(NOVA_WAYLAND OFF) + set(NOVA_X11 OFF) +else () + set(NOVA_DX12 OFF) +endif () + +if (NOVA_VULKAN) + find_package(Vulkan REQUIRED) +endif () + set(ENGINE_SRC core/debug.cpp + drivers/dx12/render_driver.cpp + drivers/linux/system_driver.cpp + drivers/linux/wayland/system_driver.cpp + drivers/linux/x11/system_driver.cpp + drivers/windows/system_driver.cpp + drivers/vulkan/render_driver.cpp platform/system.cpp render/renderer.cpp render/render_device.cpp ) -if (WIN32) - set(ENGINE_SRC - ${ENGINE_SRC} - drivers/windows/system_driver.cpp - ) - set(NOVA_WAYLAND OFF) - set(NOVA_X11 OFF) -else () - set(ENGINE_SRC - ${ENGINE_SRC} - drivers/linux/system_driver.cpp - ) - set(NOVA_DX12 OFF) -endif () - -if (NOVA_DX12) - set(ENGINE_SRC - ${ENGINE_SRC} - drivers/dx12/render_driver.cpp - ) -endif () -if (NOVA_VULKAN) - find_package(Vulkan REQUIRED) - set(ENGINE_SRC - ${ENGINE_SRC} - drivers/vulkan/render_driver.cpp - ) -endif () -if (NOVA_WAYLAND) - set(ENGINE_SRC - ${ENGINE_SRC} - drivers/linux/wayland/system_driver.cpp - ) -endif () -if (NOVA_X11) - set(ENGINE_SRC - ${ENGINE_SRC} - drivers/linux/x11/system_driver.cpp - ) -endif () - list(TRANSFORM ENGINE_SRC PREPEND ${CMAKE_CURRENT_SOURCE_DIR}/src/) FetchContent_Declare( diff --git a/engine/include/nova/api.h b/engine/include/nova/api.h index 6c36b57..fcaac02 100644 --- a/engine/include/nova/api.h +++ b/engine/include/nova/api.h @@ -6,6 +6,7 @@ #pragma once +// clang-format off #ifndef NOVA_API #ifdef NOVA_WINDOWS #ifdef NOVA_DLL_EXPORT @@ -23,3 +24,4 @@ #endif #endif #endif +// clang-format on diff --git a/engine/include/nova/core/debug.h b/engine/include/nova/core/debug.h index a3d3c74..d5a4a44 100644 --- a/engine/include/nova/core/debug.h +++ b/engine/include/nova/core/debug.h @@ -52,9 +52,9 @@ namespace Nova { #define NOVA_TRACE(...) ::Nova::Debug::get_logger()->trace(__VA_ARGS__) #ifdef _MSC_VER - #define NOVA_FUNC_NAME ::Nova::Internals::_format_func_name(__FUNCTION__) +#define NOVA_FUNC_NAME ::Nova::Internals::_format_func_name(__FUNCTION__) #else - #define NOVA_FUNC_NAME ::Nova::Internals::_format_func_name(__PRETTY_FUNCTION__) +#define NOVA_FUNC_NAME ::Nova::Internals::_format_func_name(__PRETTY_FUNCTION__) #endif #define NOVA_AUTO_TRACE() NOVA_TRACE("{}()", NOVA_FUNC_NAME) diff --git a/engine/src/drivers/dx12/render_driver.cpp b/engine/src/drivers/dx12/render_driver.cpp index f243d7b..45814cd 100644 --- a/engine/src/drivers/dx12/render_driver.cpp +++ b/engine/src/drivers/dx12/render_driver.cpp @@ -4,6 +4,8 @@ * SPDX-License-Identifier: BSD-3-Clause */ +#ifdef NOVA_DX12 + #include "drivers/dx12/render_driver.h" #include @@ -17,3 +19,5 @@ DX12RenderDriver::DX12RenderDriver() { DX12RenderDriver::~DX12RenderDriver() { NOVA_AUTO_TRACE(); } + +#endif // NOVA_DX12 diff --git a/engine/src/drivers/dx12/render_driver.h b/engine/src/drivers/dx12/render_driver.h index 9ec62dc..6cd0995 100644 --- a/engine/src/drivers/dx12/render_driver.h +++ b/engine/src/drivers/dx12/render_driver.h @@ -6,6 +6,8 @@ #pragma once +#ifdef NOVA_DX12 + #include namespace Nova { @@ -15,3 +17,5 @@ namespace Nova { ~DX12RenderDriver() override; }; } // namespace Nova + +#endif // NOVA_DX12 diff --git a/engine/src/drivers/linux/system_driver.cpp b/engine/src/drivers/linux/system_driver.cpp index be9ffa8..4b5504b 100644 --- a/engine/src/drivers/linux/system_driver.cpp +++ b/engine/src/drivers/linux/system_driver.cpp @@ -4,14 +4,12 @@ * SPDX-License-Identifier: BSD-3-Clause */ +#ifdef NOVA_LINUX + #include "drivers/linux/system_driver.h" -#ifdef NOVA_WAYLAND - #include "drivers/linux/wayland/system_driver.h" -#endif -#ifdef NOVA_X11 - #include "drivers/linux/x11/system_driver.h" -#endif +#include "drivers/linux/wayland/system_driver.h" // IWYU pragma: keep +#include "drivers/linux/x11/system_driver.h" // IWYU pragma: keep #include @@ -47,3 +45,5 @@ std::unique_ptr LinuxSystemDriver::get_default_driver() { NOVA_WARN("Unsupported display server"); return std::make_unique(); } + +#endif // NOVA_LINUX diff --git a/engine/src/drivers/linux/system_driver.h b/engine/src/drivers/linux/system_driver.h index 206b595..6aa2e88 100644 --- a/engine/src/drivers/linux/system_driver.h +++ b/engine/src/drivers/linux/system_driver.h @@ -6,6 +6,8 @@ #pragma once +#ifdef NOVA_LINUX + #include #include @@ -21,3 +23,5 @@ namespace Nova { static std::unique_ptr get_default_driver(); }; } // namespace Nova + +#endif // NOVA_LINUX diff --git a/engine/src/drivers/linux/wayland/system_driver.cpp b/engine/src/drivers/linux/wayland/system_driver.cpp index 0a3dd97..16024b4 100644 --- a/engine/src/drivers/linux/wayland/system_driver.cpp +++ b/engine/src/drivers/linux/wayland/system_driver.cpp @@ -4,6 +4,8 @@ * SPDX-License-Identifier: BSD-3-Clause */ +#ifdef NOVA_WAYLAND + #include "drivers/linux/wayland/system_driver.h" #include @@ -17,3 +19,5 @@ WaylandSystemDriver::WaylandSystemDriver() { WaylandSystemDriver::~WaylandSystemDriver() { NOVA_AUTO_TRACE(); } + +#endif // NOVA_WAYLAND diff --git a/engine/src/drivers/linux/wayland/system_driver.h b/engine/src/drivers/linux/wayland/system_driver.h index d228631..86ebc78 100644 --- a/engine/src/drivers/linux/wayland/system_driver.h +++ b/engine/src/drivers/linux/wayland/system_driver.h @@ -6,6 +6,8 @@ #pragma once +#ifdef NOVA_WAYLAND + #include "drivers/linux/system_driver.h" namespace Nova { @@ -15,3 +17,5 @@ namespace Nova { ~WaylandSystemDriver() override; }; } // namespace Nova + +#endif // NOVA_WAYLAND diff --git a/engine/src/drivers/linux/x11/system_driver.cpp b/engine/src/drivers/linux/x11/system_driver.cpp index 803377f..6ca3451 100644 --- a/engine/src/drivers/linux/x11/system_driver.cpp +++ b/engine/src/drivers/linux/x11/system_driver.cpp @@ -4,11 +4,13 @@ * SPDX-License-Identifier: BSD-3-Clause */ +#ifdef NOVA_X11 + #include "drivers/linux/x11/system_driver.h" #ifdef NOVA_VULKAN - #include - #include +#include +#include #endif #include @@ -30,3 +32,5 @@ const char* X11SystemDriver::get_surface_extension() const { return nullptr; #endif } + +#endif // NOVA_X11 diff --git a/engine/src/drivers/linux/x11/system_driver.h b/engine/src/drivers/linux/x11/system_driver.h index 7457857..9ae5f9c 100644 --- a/engine/src/drivers/linux/x11/system_driver.h +++ b/engine/src/drivers/linux/x11/system_driver.h @@ -6,6 +6,8 @@ #pragma once +#ifdef NOVA_X11 + #include "drivers/linux/system_driver.h" #include @@ -19,3 +21,5 @@ namespace Nova { [[nodiscard]] const char* get_surface_extension() const override; }; } // namespace Nova + +#endif // NOVA_X11 diff --git a/engine/src/drivers/vulkan/render_driver.cpp b/engine/src/drivers/vulkan/render_driver.cpp index b05d36f..e580225 100644 --- a/engine/src/drivers/vulkan/render_driver.cpp +++ b/engine/src/drivers/vulkan/render_driver.cpp @@ -4,6 +4,8 @@ * SPDX-License-Identifier: BSD-3-Clause */ +#ifdef NOVA_VULKAN + #include "drivers/vulkan/render_driver.h" #include @@ -344,3 +346,5 @@ VkAllocationCallbacks* VulkanRenderDriver::_get_allocator(const VkObjectType typ (void)type; return nullptr; } + +#endif // NOVA_VULKAN diff --git a/engine/src/drivers/vulkan/render_driver.h b/engine/src/drivers/vulkan/render_driver.h index df26bd3..187b6a5 100644 --- a/engine/src/drivers/vulkan/render_driver.h +++ b/engine/src/drivers/vulkan/render_driver.h @@ -6,6 +6,8 @@ #pragma once +#ifdef NOVA_VULKAN + #include #include @@ -51,3 +53,5 @@ namespace Nova { static VkAllocationCallbacks* _get_allocator(VkObjectType type); }; } // namespace Nova + +#endif // NOVA_VULKAN diff --git a/engine/src/drivers/windows/system_driver.cpp b/engine/src/drivers/windows/system_driver.cpp index 273f6ae..cdb4d8d 100644 --- a/engine/src/drivers/windows/system_driver.cpp +++ b/engine/src/drivers/windows/system_driver.cpp @@ -4,11 +4,13 @@ * SPDX-License-Identifier: BSD-3-Clause */ +#ifdef NOVA_WINDOWS + #include "drivers/windows/system_driver.h" #ifdef NOVA_VULKAN - #include - #include +#include +#include #endif #include @@ -30,3 +32,5 @@ const char* WindowsSystemDriver::get_surface_extension() const { return nullptr; #endif } + +#endif // NOVA_WINDOWS diff --git a/engine/src/drivers/windows/system_driver.h b/engine/src/drivers/windows/system_driver.h index 58ec629..e728827 100644 --- a/engine/src/drivers/windows/system_driver.h +++ b/engine/src/drivers/windows/system_driver.h @@ -6,6 +6,8 @@ #pragma once +#ifdef NOVA_WINDOWS + #include #include @@ -18,3 +20,5 @@ namespace Nova { [[nodiscard]] const char* get_surface_extension() const override; }; } // namespace Nova + +#endif // NOVA_WINDOWS diff --git a/engine/src/platform/system.cpp b/engine/src/platform/system.cpp index d77ae3a..a6a95ad 100644 --- a/engine/src/platform/system.cpp +++ b/engine/src/platform/system.cpp @@ -4,12 +4,8 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#ifdef NOVA_WINDOWS - #include "drivers/windows/system_driver.h" -#endif -#ifdef NOVA_LINUX - #include "drivers/linux/system_driver.h" -#endif +#include "drivers/linux/system_driver.h" // IWYU pragma: keep +#include "drivers/windows/system_driver.h" // IWYU pragma: keep #include #include diff --git a/engine/src/render/renderer.cpp b/engine/src/render/renderer.cpp index 7578b3f..4ffd81a 100644 --- a/engine/src/render/renderer.cpp +++ b/engine/src/render/renderer.cpp @@ -4,12 +4,8 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#ifdef NOVA_DX12 - #include "drivers/dx12/render_driver.h" -#endif -#ifdef NOVA_VULKAN - #include "drivers/vulkan/render_driver.h" -#endif +#include "drivers/dx12/render_driver.h" // IWYU pragma: keep +#include "drivers/vulkan/render_driver.h" // IWYU pragma: keep #include #include