wip
This commit is contained in:
		
							parent
							
								
									1e84b30477
								
							
						
					
					
						commit
						fc23cfc600
					
				
					 26 changed files with 107 additions and 145 deletions
				
			
		
							
								
								
									
										115
									
								
								.drone.yml
									
										
									
									
									
								
							
							
						
						
									
										115
									
								
								.drone.yml
									
										
									
									
									
								
							|  | @ -2,121 +2,12 @@ kind: pipeline | |||
| type: docker | ||||
| name: linux_amd64 | ||||
| 
 | ||||
| environment: | ||||
|   CONAN_REVISIONS_ENABLED: "1" | ||||
| 
 | ||||
| platform: | ||||
|   os: linux | ||||
|   arch: amd64 | ||||
| 
 | ||||
| volumes: | ||||
| - name: dockersock | ||||
|   host: | ||||
|     path: /var/run/docker.sock | ||||
| 
 | ||||
| - name: py | ||||
|   temp: {} | ||||
| 
 | ||||
| - name: conan | ||||
|   host: | ||||
|     path: /root/.conan2/ | ||||
| 
 | ||||
| 
 | ||||
| services: | ||||
|   - name: docker | ||||
|     image: docker:dind | ||||
|     privileged: true | ||||
|     volumes: | ||||
|       - name: dockersock | ||||
|         path: /var/run/ | ||||
| 
 | ||||
| steps: | ||||
|   - name: build image | ||||
|     image: docker:latest | ||||
|     volumes: | ||||
|     - name: dockersock | ||||
|       path: /var/run/docker.sock | ||||
|     commands: | ||||
|       - until docker info; do echo "Waiting for Docker daemon..."; sleep 1; done | ||||
|       - docker build -t ubuntu_amd64 -f ./tools/docker/linux_amd64 . | ||||
|       - docker images | ||||
| 
 | ||||
|   - name: environment info | ||||
|     image: ubuntu_amd64:latest | ||||
|   - name: clang format | ||||
|     image: alpine_amd64__clang_format | ||||
|     pull: if-not-exists | ||||
|     volumes: | ||||
|     - name: py | ||||
|       path: /opt/venv/ | ||||
| 
 | ||||
|     commands: | ||||
|       - . /opt/venv/bin/activate | ||||
|       - whoami | ||||
|       - uname -a | ||||
|       - pip --version | ||||
|       - python3 --version | ||||
|       - conan --version | ||||
|       - cmake --version | ||||
|       - gcc --version | ||||
|       - g++ --version | ||||
|       - clang --version | ||||
|       - clang++ --version | ||||
|       - clang-tidy --version | ||||
| 
 | ||||
|   - name: build gcc | ||||
|     image: ubuntu_amd64:latest | ||||
|     pull: if-not-exists | ||||
|     volumes: | ||||
|     - name: py | ||||
|       path: /opt/venv/ | ||||
|     - name: conan | ||||
|       path: /root/.conan2 | ||||
| 
 | ||||
|     commands: | ||||
|       - . /opt/venv/bin/activate | ||||
|       - rm -rvf ./build | ||||
|       - export CC=$(which gcc) | ||||
|       - export CXX=$(which g++) | ||||
| 
 | ||||
|       - conan install . --build=missing --profile:build="$(pwd)/tools/conan/profiles/linux_gcc_amd64" --profile:host="$(pwd)/tools/conan/profiles/linux_gcc_amd64" | ||||
|       - conan build . --profile:build="$(pwd)/tools/conan/profiles/linux_gcc_amd64" --profile:host="$(pwd)/tools/conan/profiles/linux_gcc_amd64" | ||||
| 
 | ||||
|       - ./build/Release/modules/light/light | ||||
| 
 | ||||
|   - name: build clang | ||||
|     image: ubuntu_amd64:latest | ||||
|     pull: if-not-exists | ||||
|     volumes: | ||||
|     - name: py | ||||
|       path: /opt/venv/ | ||||
|     - name: conan | ||||
|       path: /root/.conan2 | ||||
| 
 | ||||
|     commands: | ||||
|       - . /opt/venv/bin/activate | ||||
|       - rm -rvf ./build | ||||
|       - export CC=$(which clang) | ||||
|       - export CXX=$(which clang++) | ||||
| 
 | ||||
|       - conan install . --build=missing --profile:build="$(pwd)/tools/conan/profiles/linux_clang_amd64" --profile:host="$(pwd)/tools/conan/profiles/linux_clang_amd64" | ||||
|       - conan build . --profile:build="$(pwd)/tools/conan/profiles/linux_clang_amd64" --profile:host="$(pwd)/tools/conan/profiles/linux_clang_amd64" | ||||
| 
 | ||||
|       - ./build/Release/modules/light/light | ||||
| 
 | ||||
|   - name: static analysis | ||||
|     image: ubuntu_amd64:latest | ||||
|     pull: if-not-exists | ||||
|     commands: | ||||
|       - echo "[TODO] Implement static analysis" | ||||
| 
 | ||||
|   - name: run tests | ||||
|     image: ubuntu_amd64:latest | ||||
|     pull: if-not-exists | ||||
|     commands: | ||||
|       - echo "[TODO] Implement tests" | ||||
|       - ./build/Release/modules/light/light | ||||
| 
 | ||||
|   - name: report coverage | ||||
|     image: ubuntu_amd64:latest | ||||
|     pull: if-not-exists | ||||
|     commands: | ||||
|       - echo "[TODO] Implement coverage report" | ||||
|     commands: $(git rev-parse --show-toplevel)/tools/ci/alpine_amd64/script.sh | ||||
|  |  | |||
|  | @ -2,8 +2,9 @@ cmake_minimum_required(VERSION 3.16 FATAL_ERROR) | |||
| project("light" LANGUAGES CXX) | ||||
| 
 | ||||
| include(tools/cmake/preliminary.cmake) | ||||
| include(tools/cmake/module_macros.cmake) | ||||
| 
 | ||||
| set(CMAKE_CXX_STANDARD 23) | ||||
| set(CMAKE_CXX_STANDARD 26) | ||||
| set(CMAKE_CXX_STANDARD_REQUIRED ON) | ||||
| 
 | ||||
| add_option(ENABLE_SANITIZERS "Enables fsan sanitizers") | ||||
|  |  | |||
							
								
								
									
										9
									
								
								CMakeUserPresets.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								CMakeUserPresets.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | |||
| { | ||||
|     "version": 4, | ||||
|     "vendor": { | ||||
|         "conan": {} | ||||
|     }, | ||||
|     "include": [ | ||||
|         "build/Debug/generators/CMakePresets.json" | ||||
|     ] | ||||
| } | ||||
|  | @ -1,3 +1,4 @@ | |||
| .. toctree:: | ||||
|    ./architecture.rst | ||||
|    ./philosophy.rst | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										6
									
								
								docs/philosophy.rst
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								docs/philosophy.rst
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| Philosophy | ||||
| ========================= | ||||
| 
 | ||||
| 
 | ||||
| Code is documentation | ||||
| ------------------------ | ||||
|  | @ -1,3 +1,3 @@ | |||
| add_subdirectory(universal_pch) | ||||
| add_subdirectory(pch) | ||||
| 
 | ||||
| add_subdirectory(light) | ||||
| add_subdirectory(engine) | ||||
|  |  | |||
							
								
								
									
										6
									
								
								modules/ecs/private/sparse_set.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								modules/ecs/private/sparse_set.hpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| #pragma once | ||||
| 
 | ||||
| namespace lt::ecs { | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										2
									
								
								modules/engine/CMakeLists.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								modules/engine/CMakeLists.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| add_executable(engine ${CMAKE_CURRENT_SOURCE_DIR}/private/entrypoint.cpp) | ||||
| target_link_libraries(engine  PRIVATE pch) | ||||
|  | @ -1,3 +0,0 @@ | |||
| add_executable(light ${CMAKE_CURRENT_SOURCE_DIR}/src/entrypoint.cpp) | ||||
| 
 | ||||
| target_link_libraries(light PRIVATE universal_pch errors) | ||||
|  | @ -1,2 +1,2 @@ | |||
| add_library_module(universal_pch) | ||||
| target_precompile_headers(universal_pch INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/src/pch.hpp) | ||||
| target_precompile_headers(universal_pch INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/public/pch/pch.hpp) | ||||
|  | @ -1,7 +1,7 @@ | |||
| #pragma once | ||||
| 
 | ||||
| #include <universal_pch/error_handling/types.hpp> | ||||
| #include <universal_pch/module_configs.hpp> | ||||
| #include <pch/error_handling/types.hpp> | ||||
| #include <pch/module_configs.hpp> | ||||
| 
 | ||||
| namespace lt { | ||||
| 
 | ||||
|  | @ -19,7 +19,7 @@ public: | |||
| 
 | ||||
| 	[[nodiscard]] auto what() const noexcept -> const char * override | ||||
| 	{ | ||||
| 		return "Idk fuck all"; | ||||
| 		return ""; | ||||
| 	} | ||||
| 
 | ||||
| private: | ||||
|  | @ -28,4 +28,5 @@ private: | |||
| 
 | ||||
| template<typename T> | ||||
| using Expected = std::expected<T, Error>; | ||||
| 
 | ||||
| } // namespace lt
 | ||||
							
								
								
									
										7
									
								
								modules/pch/public/pch/pch.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								modules/pch/public/pch/pch.hpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,7 @@ | |||
| #pragma once | ||||
| 
 | ||||
| #include <pch/std_headers.hpp> | ||||
| 
 | ||||
| /* error_handling */ | ||||
| #include <pch/error_handling/checks.hpp> | ||||
| #include <pch/error_handling/types.hpp> | ||||
							
								
								
									
										0
									
								
								modules/renderer/CMakeLists.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								modules/renderer/CMakeLists.txt
									
										
									
									
									
										Normal file
									
								
							
							
								
								
									
										7
									
								
								modules/renderer/private/impls/vulkan/context.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								modules/renderer/private/impls/vulkan/context.hpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,7 @@ | |||
| namespace lt::render::vk { | ||||
| 
 | ||||
| struct Context | ||||
| { | ||||
| }; | ||||
| 
 | ||||
| } // namespace lt::render::vk
 | ||||
|  | @ -1,7 +0,0 @@ | |||
| #pragma once | ||||
| 
 | ||||
| #include <universal_pch/std_headers.hpp> | ||||
| 
 | ||||
| /* error_handling */ | ||||
| #include <universal_pch/error_handling/checks.hpp> | ||||
| #include <universal_pch/error_handling/types.hpp> | ||||
							
								
								
									
										4
									
								
								tools/ci/alpine_amd64/clang_format/Dockerfile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								tools/ci/alpine_amd64/clang_format/Dockerfile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| FROM alpine:latest | ||||
| 
 | ||||
| RUN apk add --no-cache \ | ||||
|     clang-extra-tools | ||||
							
								
								
									
										0
									
								
								tools/ci/alpine_amd64/clang_format/profile_build
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								tools/ci/alpine_amd64/clang_format/profile_build
									
										
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								tools/ci/alpine_amd64/clang_format/profile_host
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								tools/ci/alpine_amd64/clang_format/profile_host
									
										
									
									
									
										Normal file
									
								
							
							
								
								
									
										13
									
								
								tools/ci/alpine_amd64/clang_format/script.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										13
									
								
								tools/ci/alpine_amd64/clang_format/script.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,13 @@ | |||
| set -e | ||||
| cd $(git rev-parse --show-toplevel) | ||||
| 
 | ||||
| find ./modules -name '*.?pp' | while read -r file; do | ||||
| echo "Checking format for $file" | ||||
| if ! clang-format --dry-run --Werror "$file"; then | ||||
|   echo "❌ Formatting issue detected in $file" | ||||
|   exit 1 | ||||
| fi | ||||
| done | ||||
| 
 | ||||
| echo "✅ All files are properly formatted" | ||||
| exit 0 | ||||
							
								
								
									
										6
									
								
								tools/ci/alpine_amd64/install_images.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										6
									
								
								tools/ci/alpine_amd64/install_images.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| ALPINE_AMD64=$(git rev-parse --show-toplevel)/tools/ci/alpine_amd64/ | ||||
| 
 | ||||
| cd ${ALPINE_AMD64}/clang_format/ | ||||
| docker build -t alpine_amd64__clang_format | ||||
							
								
								
									
										34
									
								
								tools/cmake/module_macros.cmake
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								tools/cmake/module_macros.cmake
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,34 @@ | |||
| macro (add_library_module libname) | ||||
|     if ("${ARGN}" STREQUAL "") # Header only library | ||||
|         message("Adding INTERFACE library ${libname}") | ||||
|         add_library(${libname} INTERFACE) | ||||
|         target_include_directories(${libname} INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/public) | ||||
| 
 | ||||
|         # Do not link universal_pch against universal_pch  :D | ||||
|         if (NOT ${libname} STREQUAL "universal_pch") | ||||
|             target_link_libraries(${libname} INTERFACE universal_pch) | ||||
|         endif () | ||||
| 
 | ||||
|     else () # Compiled library | ||||
|         set(source_files) | ||||
|         set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private") | ||||
|         foreach (source_file ${ARGN}) | ||||
|             list(APPEND source_files "${source_directory}/${source_file}") | ||||
|         endforeach () | ||||
| 
 | ||||
|         message("Adding library ${libname} with source files: ${source_files}") | ||||
|         add_library(${libname} ${source_files}) | ||||
|         target_include_directories(${libname} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/public) | ||||
|         target_include_directories(${libname} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/private) | ||||
|         target_compile_options(${libname} PRIVATE ${WARNING_FLAGS}) | ||||
| 
 | ||||
|         # Do not link universal_pch against universal_pch  :D | ||||
|         if (NOT ${libname} STREQUAL "universal_pch") | ||||
|             target_link_libraries(${libname} PUBLIC universal_pch) | ||||
|         endif () | ||||
|     endif () | ||||
| 
 | ||||
|     if (ENABLE_STATIC_ANALYSIS) | ||||
|         set_target_properties(${libname} PROPERTIES CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_COMMAND}") | ||||
|     endif () | ||||
| endmacro () | ||||
|  | @ -1,16 +0,0 @@ | |||
| FROM ubuntu:latest | ||||
| 
 | ||||
| RUN apt update | ||||
| RUN apt-get install -y \ | ||||
|     build-essential \ | ||||
|     cmake \ | ||||
|     clang \ | ||||
|     clang-tidy \ | ||||
|     gcc \ | ||||
|     g++ \ | ||||
|     python3 \ | ||||
|     python3-pip \ | ||||
|     python3.12-venv | ||||
|      | ||||
| RUN python3 -m venv /opt/venv | ||||
| RUN . /opt/venv/bin/activate && pip install conan==2.5.0 | ||||
		Loading…
	
	Add table
		
		Reference in a new issue