it compiles

This commit is contained in:
2025-12-27 15:07:45 -06:00
commit e34ce95436
10 changed files with 164 additions and 0 deletions

37
.gitignore vendored Normal file
View File

@@ -0,0 +1,37 @@
# OS junk
.DS_Store
Thumbs.db
# Editor settings
.vscode/**
.idea/**
*.swp
*.swo
# Build system metadata (keep actual build dirs tracked)
CMakeFiles/**
CMakeCache.txt
cmake_install.cmake
Makefile
compile_commands.json
# Logs and temp files
*.log
*.tmp
*.bak
*.old
build/**
*.toml
.cache/**
**/*.aux
**/*.fdb_latexmk
**/*.fls
**/*.log
**/*.synctex.gz
**/*.blg
**/*.bcf
**/*.run.xml
**/*.bbl

13
.gitmodules vendored Normal file
View File

@@ -0,0 +1,13 @@
[submodule "external/spdlog"]
path = external/spdlog
url = https://github.com/gabime/spdlog
[submodule "external/shaderc"]
path = external/shaderc
url = https://github.com/google/shaderc
[submodule "external/SPIRV-Tools"]
path = external/SPIRV-Tools
url = https://github.com/KhronosGroup/SPIRV-Tools
[submodule "external/VulkanMemoryAllocator"]
path = external/VulkanMemoryAllocator
url = https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator

101
CMakeLists.txt Normal file
View File

@@ -0,0 +1,101 @@
cmake_minimum_required(VERSION 3.20)
# -----------------------------
# Compiler
# -----------------------------
project(cube LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
# -----------------------------
# Sources
# -----------------------------
file(GLOB_RECURSE CUBE_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/*.c
)
add_executable(${PROJECT_NAME} ${CUBE_SOURCES})
target_include_directories(${PROJECT_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
)
# -----------------------------
# Compile definitions
# -----------------------------
target_compile_definitions(${PROJECT_NAME} PRIVATE
VK_NO_PROTOTYPES
VMA_STATIC_VULKAN_FUNCTIONS=0
VMA_DYNAMIC_VULKAN_FUNCTIONS=1
VMA_VULKAN_VERSION=1003000
)
# -----------------------------
# Warnings
# -----------------------------
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
target_compile_options(${PROJECT_NAME} PRIVATE
-Wall
-Wextra
-Wpedantic
-Wconversion
-Wshadow
-Wnull-dereference
-Wdouble-promotion
-Wimplicit-fallthrough
)
endif()
# =============================
# Dependencies (vendored)
# =============================
# ---- spdlog (header-only)
add_subdirectory(external/spdlog)
target_link_libraries(${PROJECT_NAME} PRIVATE spdlog::spdlog_header_only)
# ---- Vulkan Memory Allocator
add_subdirectory(external/VulkanMemoryAllocator)
target_link_libraries(${PROJECT_NAME} PRIVATE VulkanMemoryAllocator)
# ---- SPIR-V stack (required by shaderc)
add_subdirectory(external/spirv-headers)
add_subdirectory(external/SPIRV-Tools)
add_subdirectory(external/glslang)
# ---- shaderc
set(SHADERC_SKIP_TESTS ON CACHE BOOL "" FORCE)
set(SHADERC_SKIP_EXAMPLES ON CACHE BOOL "" FORCE)
set(SHADERC_SKIP_INSTALL ON CACHE BOOL "" FORCE)
set(SHADERC_ENABLE_SHARED_CRT OFF CACHE BOOL "" FORCE)
set(SHADERC_ENABLE_SPIRV_TOOLS ON CACHE BOOL "" FORCE)
add_subdirectory(external/shaderc)
target_link_libraries(${PROJECT_NAME} PRIVATE shaderc_shared)
# =============================
# System dependencies
# =============================
find_package(Vulkan REQUIRED)
find_package(Threads REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(LIBDRM REQUIRED libdrm)
target_include_directories(${PROJECT_NAME} PRIVATE
${LIBDRM_INCLUDE_DIRS}
)
target_link_libraries(${PROJECT_NAME} PRIVATE
Vulkan::Vulkan
Threads::Threads
${LIBDRM_LIBRARIES}
)

1
external/SPIRV-Tools vendored Submodule

Submodule external/SPIRV-Tools added at 91ac969ed5

1
external/glslang vendored Submodule

Submodule external/glslang added at 455fb86658

1
external/shaderc vendored Submodule

Submodule external/shaderc added at e0a5092b4b

1
external/spdlog vendored Submodule

Submodule external/spdlog added at 32dd298dc2

1
external/spirv-headers vendored Submodule

Submodule external/spirv-headers added at 0a7f626a6a

7
src/main.cpp Normal file
View File

@@ -0,0 +1,7 @@
#include <spdlog/spdlog-inl.h>
#include <spdlog/spdlog.h>
int main (int argc, char *argv[]) {
spdlog::info("Hello World");
return 0;
}