From 605e23e8d028b629f53291bd7dce5389f1f583a9 Mon Sep 17 00:00:00 2001 From: Chris Miles Date: Sun, 22 Jun 2025 02:09:16 -0500 Subject: [PATCH 1/4] Build analyze work --- .drone.yml | 34 ++++++++++++++++- utils/scripts/build/linux-build-analyze.sh | 43 ++++++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100755 utils/scripts/build/linux-build-analyze.sh diff --git a/.drone.yml b/.drone.yml index 7a5443d4c..208d11540 100644 --- a/.drone.yml +++ b/.drone.yml @@ -30,6 +30,11 @@ steps: - name: cache path: /home/eqemu/.ccache/ +trigger: + branch: + exclude: + - build-analyze + --- kind: pipeline @@ -57,6 +62,11 @@ steps: commands: - .\utils\scripts\build\windows-build.ps1 +trigger: + branch: + exclude: + - build-analyze + --- kind: pipeline @@ -87,7 +97,10 @@ steps: trigger: branch: - - master + include: + - master + exclude: + - build-analyze event: - push @@ -95,4 +108,23 @@ depends_on: - Build Windows - Build Linux +--- +kind: pipeline +type: docker +name: Build Analyze + +steps: + - name: Build Linux X64 + image: akkadius/eqemu-server:v16 + environment: + GITHUB_TOKEN: + from_secret: GH_RELEASE_GITHUB_API_TOKEN + commands: + - ./utils/scripts/build/linux-build-analyze.sh + +trigger: + branch: + - build-analyze + event: + - push \ No newline at end of file diff --git a/utils/scripts/build/linux-build-analyze.sh b/utils/scripts/build/linux-build-analyze.sh new file mode 100755 index 000000000..c1bc51bd6 --- /dev/null +++ b/utils/scripts/build/linux-build-analyze.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +set -ex + +sudo chown eqemu:eqemu /drone/src/ * -R + +# Install ClangBuildAnalyzer if missing +if ! command -v clang-build-analyzer &> /dev/null; then + echo "Installing latest Clang Build Analyzer..." + LATEST_VERSION=$(curl -s https://api.github.com/repos/aras-p/ClangBuildAnalyzer/releases/latest \ + | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/') + sudo curl -sSL "https://github.com/aras-p/ClangBuildAnalyzer/releases/download/v${LATEST_VERSION}/ClangBuildAnalyzer-linux" \ + -o /usr/local/bin/clang-build-analyzer + sudo chmod +x /usr/local/bin/clang-build-analyzer +fi + +git submodule init && git submodule update +perl utils/scripts/build/tag-version.pl + +mkdir -p build + +clang-build-analyzer --start build/ + +cd build && \ + cmake -DEQEMU_BUILD_TESTS=ON \ + -DEQEMU_BUILD_LUA=ON \ + -DEQEMU_BUILD_PERL=ON \ + -DEQEMU_BUILD_LOGIN=ON \ + -DEQEMU_BUILD_STATIC=ON \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ + -DCMAKE_CXX_FLAGS:STRING="-O0 -g -Wno-everything -ftime-trace" \ + -G 'Unix Makefiles' \ + .. && \ + make -j"$(nproc)" + +# 🧠 Generate ClangBuildAnalyzer report +clang-build-analyzer --stop ./ /tmp/eqemu.capture +clang-build-analyzer --analyze /tmp/eqemu.capture > report.txt +cat report.txt + +ldd ./bin/zone + +cd /drone/src/ From 98f824b0f5243dc2129940d47ef2f93a89b8db08 Mon Sep 17 00:00:00 2001 From: Chris Miles Date: Sun, 29 Jun 2025 23:34:46 -0500 Subject: [PATCH 2/4] Build tweaks --- CMakeLists.txt | 2 ++ common/CMakeLists.txt | 2 +- common/pch/std-pch.h | 34 +++++++--------------------------- world/CMakeLists.txt | 2 +- zone/CMakeLists.txt | 1 + 5 files changed, 12 insertions(+), 29 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e53a05bef..59279caa8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -363,6 +363,8 @@ MESSAGE(STATUS "**************************************************") #setup server libs and headers SET(SERVER_LIBS common ${DATABASE_LIBRARY_LIBS} ${ZLIB_LIBRARY_LIBS} ${Boost_LIBRARIES} uv_a fmt RecastNavigation::Detour) +set(FMT_HEADER_ONLY OFF) + INCLUDE_DIRECTORIES(SYSTEM "${DATABASE_LIBRARY_INCLUDE}") INCLUDE_DIRECTORIES(SYSTEM "${ZLIB_LIBRARY_INCLUDE}") INCLUDE_DIRECTORIES(SYSTEM "${Boost_INCLUDE_DIRS}") diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 787cd299c..0921cec5f 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -841,7 +841,7 @@ IF (UNIX) SET_SOURCE_FILES_PROPERTIES("patches/sod.cpp" "patches/sof.cpp" "patches/rof.cpp" "patches/rof2.cpp" "patches/uf.cpp" PROPERTIES COMPILE_FLAGS -O0) ENDIF (UNIX) -IF (WIN32 AND EQEMU_BUILD_PCH) +IF (EQEMU_BUILD_PCH) TARGET_PRECOMPILE_HEADERS(common PRIVATE pch/std-pch.h) ENDIF () diff --git a/common/pch/std-pch.h b/common/pch/std-pch.h index 06b1d1a8f..3b1b9faad 100644 --- a/common/pch/std-pch.h +++ b/common/pch/std-pch.h @@ -1,34 +1,14 @@ -// types -#include -#include -#include -#include +#pragma once -// containers -#include -#include -#include +// Lightweight, widely used +#include +#include #include #include -#include -#include - -// utilities -#include -#include -#include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include // fmt #include - -// lua -#include "lua.hpp" -#include -#include diff --git a/world/CMakeLists.txt b/world/CMakeLists.txt index 1963c83ae..79ac882ee 100644 --- a/world/CMakeLists.txt +++ b/world/CMakeLists.txt @@ -76,7 +76,7 @@ ADD_EXECUTABLE(world ${world_sources} ${world_headers}) INSTALL(TARGETS world RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) -IF (WIN32 AND EQEMU_BUILD_PCH) +IF (EQEMU_BUILD_PCH) TARGET_PRECOMPILE_HEADERS(world PRIVATE ../common/pch/std-pch.h) ENDIF () diff --git a/zone/CMakeLists.txt b/zone/CMakeLists.txt index 07ac97cdc..e497b5ed5 100644 --- a/zone/CMakeLists.txt +++ b/zone/CMakeLists.txt @@ -483,6 +483,7 @@ INSTALL(TARGETS zone RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) # precompiled headers IF (EQEMU_BUILD_PCH) TARGET_PRECOMPILE_HEADERS(zone PRIVATE ../common/pch/app-pch.h) + TARGET_PRECOMPILE_HEADERS(zone PRIVATE ../common/pch/std-pch.h) TARGET_PRECOMPILE_HEADERS(zone PRIVATE ./pch/pch.h) ENDIF() From aeb13e8fd317a7ecd5db847840977fc0afa861ab Mon Sep 17 00:00:00 2001 From: Chris Miles Date: Sun, 29 Jun 2025 23:38:45 -0500 Subject: [PATCH 3/4] ? --- utils/scripts/build/linux-build-analyze.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/scripts/build/linux-build-analyze.sh b/utils/scripts/build/linux-build-analyze.sh index c1bc51bd6..db38f6841 100755 --- a/utils/scripts/build/linux-build-analyze.sh +++ b/utils/scripts/build/linux-build-analyze.sh @@ -23,6 +23,7 @@ clang-build-analyzer --start build/ cd build && \ cmake -DEQEMU_BUILD_TESTS=ON \ + -DCMAKE_BUILD_TYPE=Debug -DEQEMU_BUILD_LUA=ON \ -DEQEMU_BUILD_PERL=ON \ -DEQEMU_BUILD_LOGIN=ON \ From 588de153829bfd2aaf0400ba466bc92c66150522 Mon Sep 17 00:00:00 2001 From: Chris Miles Date: Sun, 29 Jun 2025 23:39:33 -0500 Subject: [PATCH 4/4] ? --- utils/scripts/build/linux-build-analyze.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/scripts/build/linux-build-analyze.sh b/utils/scripts/build/linux-build-analyze.sh index db38f6841..dccca1a2f 100755 --- a/utils/scripts/build/linux-build-analyze.sh +++ b/utils/scripts/build/linux-build-analyze.sh @@ -23,7 +23,7 @@ clang-build-analyzer --start build/ cd build && \ cmake -DEQEMU_BUILD_TESTS=ON \ - -DCMAKE_BUILD_TYPE=Debug + -DCMAKE_BUILD_TYPE=Debug \ -DEQEMU_BUILD_LUA=ON \ -DEQEMU_BUILD_PERL=ON \ -DEQEMU_BUILD_LOGIN=ON \