wip
Some checks reported errors
continuous-integration/drone/push Build encountered an error

This commit is contained in:
light7734 2025-05-26 12:04:31 +03:30
parent 1e84b30477
commit fc23cfc600
Signed by: light7734
GPG key ID: 8C30176798F1A6BA
26 changed files with 107 additions and 145 deletions

View file

@ -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

View file

@ -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
View file

@ -0,0 +1,9 @@
{
"version": 4,
"vendor": {
"conan": {}
},
"include": [
"build/Debug/generators/CMakePresets.json"
]
}

View file

@ -1,3 +1,4 @@
.. toctree::
./architecture.rst
./philosophy.rst

6
docs/philosophy.rst Normal file
View file

@ -0,0 +1,6 @@
Philosophy
=========================
Code is documentation
------------------------

View file

@ -1,3 +1,3 @@
add_subdirectory(universal_pch)
add_subdirectory(pch)
add_subdirectory(light)
add_subdirectory(engine)

View file

@ -0,0 +1,6 @@
#pragma once
namespace lt::ecs {
}

View file

@ -0,0 +1,2 @@
add_executable(engine ${CMAKE_CURRENT_SOURCE_DIR}/private/entrypoint.cpp)
target_link_libraries(engine PRIVATE pch)

View file

@ -1,3 +0,0 @@
add_executable(light ${CMAKE_CURRENT_SOURCE_DIR}/src/entrypoint.cpp)
target_link_libraries(light PRIVATE universal_pch errors)

View file

@ -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)

View file

@ -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 {

View file

@ -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

View 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>

View file

View file

@ -0,0 +1,7 @@
namespace lt::render::vk {
struct Context
{
};
} // namespace lt::render::vk

View file

@ -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>

View file

@ -0,0 +1,4 @@
FROM alpine:latest
RUN apk add --no-cache \
clang-extra-tools

View 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

View 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

View 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 ()

View file

@ -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