commit cbd0ba7d882826eec17dad8c81d529b0e5937796 Author: Romain BOULLARD Date: Fri Jan 23 16:05:57 2026 +0100 Initial commit diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml new file mode 100644 index 0000000..f10f5cf --- /dev/null +++ b/.gitea/workflows/ci.yaml @@ -0,0 +1,40 @@ +name: Docker Builders + +on: + push: + branches: + - '**' + workflow_dispatch: + +env: + DOCKER_TLS_CERTDIR: "/certs" + + BASE_BUILDER_TAG: ${{ secrets.CI_REGISTRY_IMAGE }}/linuxbasebuilder:${{ github.ref_name }} + CPP_BUILDER_TAG: ${{ secrets.CI_REGISTRY_IMAGE }}/linuxcppbuilder:${{ github.ref_name }} + BIGFOOT_BUILDER_TAG: ${{ secrets.CI_REGISTRY_IMAGE }}/linuxbigfootbuilder:${{ github.ref_name }} + BIGFOOT_COVERAGE_BUILDER_TAG: ${{ secrets.CI_REGISTRY_IMAGE }}/linuxbigfootcoveragebuilder:${{ github.ref_name }} + +jobs: + build-base-builder: + runs-on: ubuntu-latest + timeout-minutes: 360 + container: + image: docker:28.5.1 + options: --privileged + services: + docker: + image: docker:28.5.1-dind + options: --privileged + steps: + - name: Login to the Container registry + uses: docker/login-action@v2 + with: + registry: ${{ secrets.CI_REGISTRY }} + username: ${{ secrets.CI_USERNAME }} + password: ${{ secrets.CI_TOKEN }} + + # - name: Build Base Builder + # run: docker build -t "$BASE_BUILDER_TAG" ./Linux/BaseBuilder + + # - name: Push Base Builder + # run: docker push "$BASE_BUILDER_TAG" \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e69de29 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8268d51 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022-2023 Romain BOULLARD + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Linux/BaseBuilder/Dockerfile b/Linux/BaseBuilder/Dockerfile new file mode 100644 index 0000000..e3de30b --- /dev/null +++ b/Linux/BaseBuilder/Dockerfile @@ -0,0 +1,17 @@ +FROM ubuntu:24.04 + +ENV TZ=Europe/Paris +ENV DEBIAN_FRONTEND=noninteractive +ENV PATH="/root/.local/bin:$PATH" + +RUN --mount=type=cache,target=/ccache + +# Make sudo dummy replacement, so we don't weaken docker security +RUN echo "#!/bin/bash\n\$@" > /usr/bin/sudo +RUN chmod +x /usr/bin/sudo + +RUN apt-get update -y +RUN apt-get install -y + +RUN apt-get install unzip curl wget lsb-release software-properties-common gnupg -y +RUN apt-get install python3 -y \ No newline at end of file diff --git a/Linux/BigfootBuilder/Dockerfile b/Linux/BigfootBuilder/Dockerfile new file mode 100644 index 0000000..f8f3f40 --- /dev/null +++ b/Linux/BigfootBuilder/Dockerfile @@ -0,0 +1,24 @@ +ARG BASE_BUILDER + +FROM $BASE_BUILDER + +ARG CONAN_RELEASE_PROFILE +ARG CONAN_RELWITHDEBINFO_PROFILE +ARG CONAN_DEBUG_PROFILE + +RUN wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add +RUN wget -qO /etc/apt/sources.list.d/lunarg-vulkan-1.4.313-noble.list https://packages.lunarg.com/vulkan/1.4.313/lunarg-vulkan-1.4.313-noble.list +RUN apt-get update -y +RUN apt-get install gcovr -y +RUN apt-get install vulkan-sdk -y +RUN apt-get install xvfb -y + +COPY conanfile.py BigfootDependencies/conanfile.py + +RUN ccache --zero-stats + +RUN CONAN_LOGIN_USERNAME=${GITLAB_CONAN_USER} CONAN_PASSWORD=${GITLAB_CONAN_PASSWORD} conan install ./BigfootDependencies --remote=bigfootpackages --build="*" -pr:h=${CONAN_RELEASE_PROFILE} -pr:b=${CONAN_RELEASE_PROFILE} -s build_type=Release && \ + CONAN_LOGIN_USERNAME=${GITLAB_CONAN_USER} CONAN_PASSWORD=${GITLAB_CONAN_PASSWORD} conan install ./BigfootDependencies --remote=bigfootpackages --build="*" -pr:h=${CONAN_RELWITHDEBINFO_PROFILE} -pr:b=${CONAN_RELWITHDEBINFO_PROFILE} -s build_type=RelWithDebInfo && \ + CONAN_LOGIN_USERNAME=${GITLAB_CONAN_USER} CONAN_PASSWORD=${GITLAB_CONAN_PASSWORD} conan install ./BigfootDependencies --remote=bigfootpackages --build="*" -pr:h=${CONAN_DEBUG_PROFILE} -pr:b=${CONAN_DEBUG_PROFILE} -s build_type=Debug + +RUN ccache --show-stats \ No newline at end of file diff --git a/Linux/BigfootBuilder/conanfile.py b/Linux/BigfootBuilder/conanfile.py new file mode 100644 index 0000000..a805470 --- /dev/null +++ b/Linux/BigfootBuilder/conanfile.py @@ -0,0 +1,55 @@ +from conan import ConanFile + +class RequirementsConan(ConanFile): + name = "Requirements" + + def configure(self): + self.options['stduuid'].with_cxx20_span = True + self.options['flatbuffers'].header_only = True + + self.options["tracy"].on_demand = True + + self.options["spirv-cross"].exceptions = False + + self.options["benchmark"].enable_exceptions = False + self.options["benchmark"].enable_lto = True + + def requirements(self): + self.requires("eastl/3.27.01") + self.requires("unordered_dense/4.8.1") + self.requires("mimalloc/3.1.5") + self.requires("magic_enum/0.9.7") + self.requires("stduuid/1.2.3") + self.requires("sqlite3/3.51.0") + self.requires("cli11/2.6.0") + self.requires("xxhash/0.8.3") + self.requires("effolkronium-random/1.5.0") + self.requires("zeus_expected/1.3.0") + self.requires("flatbuffers/25.9.23") + + self.requires("quill/11.0.2") + self.requires("tracy/0.12.2") + self.requires("cpptrace/1.0.4") + + self.requires("glm/1.0.1") + self.requires("lodepng/cci.20250727") + self.requires("imgui/1.92.5-docking") + + self.requires("glfw/3.4") + + self.requires("vulkan-headers/1.4.313.0") + self.requires("vulkan-validationlayers/1.4.313.0") + self.requires("spirv-cross/1.4.313.0") + self.requires("vulkan-memory-allocator/3.3.0") + + self.requires("gtest/1.17.0") + self.requires("pixelmatch-cpp17/1.0.3") + + self.requires("stb/cci.20240531", override=True) + self.requires("shaderc/2025.3") + self.requires("assimp/6.0.2") + self.requires("meshoptimizer/1.0") + self.requires("libsquish/1.15") + + self.requires("benchmark/1.9.4") + diff --git a/Linux/CPPBuilder/Dockerfile b/Linux/CPPBuilder/Dockerfile new file mode 100644 index 0000000..a7b173e --- /dev/null +++ b/Linux/CPPBuilder/Dockerfile @@ -0,0 +1,49 @@ +ARG BASE_BUILDER + +FROM $BASE_BUILDER + +ENV CCACHE_DIR=/ccache +ENV CCACHE_COMPRESS=1 +ENV CCACHE_MAXSIZE=10G +ENV CCACHE_COMPILERCHECK=content + +RUN apt-get install build-essential -y +RUN apt-get install ccache -y +RUN apt-get install cmake -y +RUN apt-get install ninja-build -y +RUN apt-get install git -y +RUN apt-get install pkg-config -y + +RUN wget https://apt.llvm.org/llvm.sh && \ + chmod +x llvm.sh && \ + ./llvm.sh 18 all +RUN apt-get install clang-tools-18 -y + +RUN ln -s /bin/clang-18 /bin/clang +RUN ln -s /bin/clang++-18 /bin/clang++ +RUN ln -s /usr/bin/llvm-profdata-18 /usr/bin/llvm-profdata +RUN ln -s /usr/bin/llvm-cov-18 /usr/bin/llvm-cov +RUN ln -s /usr/bin/clang-format-18 /usr/bin/clang-format +RUN ln -s /usr/bin/clang-tidy-18 /usr/bin/clang-tidy +RUN ln -s /usr/bin/llvm-ar-18 /usr/bin/llvm-ar +RUN ln -s /usr/bin/llvm-nm-18 /usr/bin/llvm-nm +RUN ln -s /usr/bin/llvm-ranlib-18 /usr/bin/llvm-ranlib + +RUN ccache --zero-stats + +RUN ccache --show-stats + +RUN apt-get install pipx -y +RUN pipx ensurepath + +RUN git clone --branch v2.40.4 https://github.com/rui314/mold.git +RUN mold/install-build-deps.sh +RUN cmake mold -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -B mold/build +RUN cmake --build mold/build -j$(nproc) +RUN cmake --build mold/build --target install + +RUN pipx install conan + +RUN conan config install https://gitlab.com/bigfootdev/config/conan.git +RUN conan remote add bigfootpackages https://packages.bigfootengine.com/artifactory/api/conan/bigfootpackages +RUN conan remote disable conancenter \ No newline at end of file