diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index f164483..98b56b8 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -153,9 +153,10 @@ jobs: - name: Configure CMake (Windows) if: runner.os == 'Windows' working-directory: ${{github.workspace}} + shell: pwsh run: | - cmake -B build -G Ninja \ - -DCMAKE_TOOLCHAIN_FILE="./dep/vcpkg/scripts/buildsystems/vcpkg.cmake" \ + cmake -B build -G Ninja ` + -DCMAKE_TOOLCHAIN_FILE="./dep/vcpkg/scripts/buildsystems/vcpkg.cmake" ` -DVCPKG_TARGET_TRIPLET=x86-windows-static cmake --build build --config Release --parallel tree ${{github.workspace}} diff --git a/CMakeLists.txt b/CMakeLists.txt index 27adcc9..38988e4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,83 +2,115 @@ cmake_minimum_required(VERSION 3.18) project(sm_debugger) +# Encontrar dependências find_package(nlohmann_json CONFIG REQUIRED) +find_package(ZLIB REQUIRED) +find_package(fmt CONFIG REQUIRED) +find_path(BRYNET_INCLUDE_DIRS "brynet/Version.hpp") +# Configuração do SDK if(NOT SDK) set(SDK csgo) endif() -# CMake configuration # +# Configuração do nome de saída set(OUTPUT_NAME "sm_debugger" CACHE STRING "Output name of the extension") string(REGEX REPLACE " " "" OUTPUT_NAME "${OUTPUT_NAME}") - if(OUTPUT_NAME STREQUAL "") message(FATAL_ERROR "OUTPUT_NAME must be configured") endif() +# Caminhos para SourceMod e SourcePawn set(SM_PATH "${CMAKE_CURRENT_SOURCE_DIR}/dep/sourcemod") set(SP_PATH "${CMAKE_CURRENT_SOURCE_DIR}/dep/sourcemod/sourcepawn") +# Incluir arquivos auxiliares include("cmake/sourcemod.cmake") include("cmake/cmake-version4git.cmake") +# Obter versão do Git PROJECT_VERSION_FROM_GIT() -add_definitions(${PROJECT_VERSION4GIT_CFLAGS}) -# Compiler specific jobs # +# Verificar arquitetura 32-bit if(NOT CMAKE_SIZEOF_VOID_P EQUAL 4) message(FATAL_ERROR "Arch must be 32-bit") endif() -find_package(ZLIB REQUIRED) -find_package(fmt CONFIG REQUIRED) -find_path(BRYNET_INCLUDE_DIRS "brynet/Version.hpp") - - +# Lista de arquivos fonte set(CPP_FILES -"src/sourcepawn/vm/smx-v1-image.cpp" -"src/sourcepawn/vm/file-utils.cpp" -"src/sourcepawn/vm/rtti.cpp" -"src/extension.cpp" -"src/debugger.cpp" -"src/utlbuffer.cpp" + "src/sourcepawn/vm/smx-v1-image.cpp" + "src/sourcepawn/vm/file-utils.cpp" + "src/sourcepawn/vm/rtti.cpp" + "src/extension.cpp" + "src/debugger.cpp" + "src/utlbuffer.cpp" ) -source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${CPP_FILES} ${HPP_FILES}) +# Agrupar arquivos para IDE +source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${CPP_FILES}) -# Add a executable file # +# Adicionar o alvo (extensão) add_extension(${OUTPUT_NAME} ${CPP_FILES}) +# Configurações específicas do compilador if(MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8 /W3") - target_compile_definitions(${OUTPUT_NAME} PUBLIC WIN32 _WINDOWS COMPILER_MSVC COMPILER_MSVC32) + target_compile_options(${OUTPUT_NAME} PRIVATE /utf-8 /W3) + target_compile_definitions(${OUTPUT_NAME} PRIVATE + WIN32 + _WINDOWS + COMPILER_MSVC + COMPILER_MSVC32 + ) else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") - target_compile_definitions(${OUTPUT_NAME} PUBLIC _LINUX POSIX) + target_compile_options(${OUTPUT_NAME} PRIVATE -m32) + target_compile_definitions(${OUTPUT_NAME} PRIVATE + _LINUX + POSIX + ) endif() if(CMAKE_COMPILER_IS_GNUCXX) - target_compile_definitions(${OUTPUT_NAME} PUBLIC COMPILER_GCC _vsnprintf=vsnprintf _snprintf=snprintf _stricmp=strcasecmp stricmp=strcasecmp) + target_compile_definitions(${OUTPUT_NAME} PRIVATE + COMPILER_GCC + _vsnprintf=vsnprintf + _snprintf=snprintf + _stricmp=strcasecmp + stricmp=strcasecmp + ) endif() -target_link_libraries(${OUTPUT_NAME} PRIVATE ZLIB::ZLIB fmt::fmt-header-only) +# Linkar bibliotecas +target_link_libraries(${OUTPUT_NAME} PRIVATE + ZLIB::ZLIB + fmt::fmt-header-only + nlohmann_json::nlohmann_json +) if(MSVC) -target_link_libraries(${OUTPUT_NAME} PRIVATE ws2_32 legacy_stdio_definitions) - - - + target_link_libraries(${OUTPUT_NAME} PRIVATE + ws2_32 + legacy_stdio_definitions + ) endif() -set_target_properties(${OUTPUT_NAME} - PROPERTIES + +# Definir padrão C++17 +set_target_properties(${OUTPUT_NAME} PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS ON - ) - -target_include_directories(${OUTPUT_NAME} PRIVATE ${BRYNET_INCLUDE_DIRS}) -target_include_directories(${OUTPUT_NAME} PUBLIC "src") -target_include_directories(${OUTPUT_NAME} PUBLIC "dep/certify/include") -target_include_directories(${OUTPUT_NAME} PUBLIC "src/sourcepawn/include") -target_include_directories(${OUTPUT_NAME} PUBLIC "src/sourcepawn/vm") -target_include_directories(${OUTPUT_NAME} PUBLIC "dep/sourcemod/public/amtl") - -target_include_directories(${OUTPUT_NAME} PUBLIC ${ZLIB_INCLUDE_DIR}) \ No newline at end of file +) + +# Diretórios de include +target_include_directories(${OUTPUT_NAME} PRIVATE + ${BRYNET_INCLUDE_DIRS} + ${ZLIB_INCLUDE_DIR} +) +target_include_directories(${OUTPUT_NAME} PUBLIC + "src" + "dep/certify/include" + "src/sourcepawn/include" + "src/sourcepawn/vm" + "dep/sourcemod/public/amtl" +) + +# Adicionar definições de versão do Git +target_compile_definitions(${OUTPUT_NAME} PRIVATE ${PROJECT_VERSION4GIT_CFLAGS}) +message(STATUS "BRYNET_INCLUDE_DIRS: ${BRYNET_INCLUDE_DIRS}") diff --git a/cmake/sourcemod.cmake b/cmake/sourcemod.cmake index 345091c..d88d217 100644 --- a/cmake/sourcemod.cmake +++ b/cmake/sourcemod.cmake @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.2) +cmake_minimum_required(VERSION 3.10) # CMake configuration # # SourceMod SDK diff --git a/dep/vcpkg b/dep/vcpkg index 37b3236..856505b 160000 --- a/dep/vcpkg +++ b/dep/vcpkg @@ -1 +1 @@ -Subproject commit 37b323648a7d3a8517849be252b4f96c3bed520e +Subproject commit 856505bb767458c99d8e3c3ed441f59a058d3687 diff --git a/src/debugger.cpp b/src/debugger.cpp index 8f692b4..73e1406 100644 --- a/src/debugger.cpp +++ b/src/debugger.cpp @@ -419,7 +419,7 @@ class DebuggerClient { auto rtti = sym->rtti(); if (rtti && rtti->type_id) { - size_t base = rtti->address; + uint32_t base = static_cast(rtti->address); if (sym->vclass() == 1 || sym->vclass() == 3) // local var or arg but not static base += frm_; // addresses of local vars are relative to the frame @@ -1169,7 +1169,7 @@ void removeClientID(const TcpConnection::Ptr& session) { void debugThread() { - auto service = TcpService::Create(); + auto service = brynet::net::IOThreadTcpService::Create(); service->startWorkerThread(2); auto mainLoop = std::make_shared(); diff --git a/vcpkg.json b/vcpkg.json index 7219992..f6c9858 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -7,5 +7,5 @@ "brynet", "zlib" ], - "builtin-baseline": "37b323648a7d3a8517849be252b4f96c3bed520e" + "builtin-baseline": "856505bb767458c99d8e3c3ed441f59a058d3687" }