Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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}}
Expand Down
110 changes: 71 additions & 39 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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})
)

# 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}")
2 changes: 1 addition & 1 deletion cmake/sourcemod.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.2)
cmake_minimum_required(VERSION 3.10)

# CMake configuration #
# SourceMod SDK
Expand Down
2 changes: 1 addition & 1 deletion dep/vcpkg
Submodule vcpkg updated 12474 files
4 changes: 2 additions & 2 deletions src/debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<uint32_t>(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

Expand Down Expand Up @@ -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<EventLoop>();
Expand Down
2 changes: 1 addition & 1 deletion vcpkg.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@
"brynet",
"zlib"
],
"builtin-baseline": "37b323648a7d3a8517849be252b4f96c3bed520e"
"builtin-baseline": "856505bb767458c99d8e3c3ed441f59a058d3687"
}