Skip to content

Commit

Permalink
Cleanup Protobuf Generation (#562)
Browse files Browse the repository at this point in the history
  • Loading branch information
roflmuffin authored Aug 29, 2024
1 parent 10f472e commit bb38b1c
Show file tree
Hide file tree
Showing 36 changed files with 64 additions and 474,745 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ libraries/mono/

CMakeSettings.json

build-*/
build/
build_test/

Expand Down
26 changes: 4 additions & 22 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,17 @@ project(counterstrikesharp C CXX ASM)
include("makefiles/shared.cmake")

set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
#set(protobuf_BUILD_TESTS OFF)
#set(protobuf_BUILD_SHARED_LIBS)

add_subdirectory(libraries/spdlog)
add_subdirectory(libraries/dyncall)
add_subdirectory(libraries/funchook)
add_subdirectory(libraries/DynoHook)
# add_subdirectory(libraries/protobuf-lib)

set_property(TARGET dynohook PROPERTY DYNO_ARCH_X86 64)
set_property(TARGET funchook-static PROPERTY POSITION_INDEPENDENT_CODE ON)

include("makefiles/protobuf.cmake")

set(SOURCE_FILES
libraries/hl2sdk-cs2/public/tier0/memoverride.cpp
src/mm_plugin.cpp
Expand Down Expand Up @@ -105,30 +104,13 @@ set(SOURCE_FILES
src/core/recipientfilters.h
)

set(PROTO_GEN_CPP
src/protobuf/generated/network_connection.pb.cc
src/protobuf/generated/networkbasetypes.pb.cc
src/protobuf/generated/cs_gameevents.pb.cc
src/protobuf/generated/engine_gcmessages.pb.cc
src/protobuf/generated/gcsdk_gcmessages.pb.cc
src/protobuf/generated/cstrike15_gcmessages.pb.cc
src/protobuf/generated/cstrike15_usermessages.pb.cc
src/protobuf/generated/netmessages.pb.cc
src/protobuf/generated/steammessages.pb.cc
src/protobuf/generated/usermessages.pb.cc
src/protobuf/generated/gameevents.pb.cc
src/protobuf/generated/clientmessages.pb.cc
src/protobuf/generated/te.pb.cc
)

add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES} ${PROTO_GEN_CPP} ${NATIVES_SOURCES} ${CONVERSIONS_SOURCES} ${CONVERSIONS_HEADERS})
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES} ${NATIVES_SOURCES} ${CONVERSIONS_SOURCES} ${CONVERSIONS_HEADERS})

target_include_directories(
${PROJECT_NAME}
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_SOURCE_DIR}/src/core/cs2_sdk
${CMAKE_CURRENT_SOURCE_DIR}/src/protobuf/generated
)

if(LINUX)
Expand All @@ -146,7 +128,7 @@ elseif(WIN32)
endif()

# Libraries
target_link_libraries(${PROJECT_NAME} ${COUNTER_STRIKE_SHARP_LINK_LIBRARIES})
target_link_libraries(${PROJECT_NAME} ${COUNTER_STRIKE_SHARP_LINK_LIBRARIES} Protobufs)

add_custom_command(
TARGET ${PROJECT_NAME} PRE_BUILD
Expand Down
1 change: 0 additions & 1 deletion makefiles/linux.base.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--exclude-libs=l

set(
COUNTER_STRIKE_SHARP_LINK_LIBRARIES
${SOURCESDK_LIB}/linux64/release/libprotobuf.a
${SOURCESDK_LIB}/linux64/libtier0.so
${SOURCESDK_LIB}/linux64/tier1.a
${SOURCESDK_LIB}/linux64/interfaces.a
Expand Down
59 changes: 59 additions & 0 deletions makefiles/protobuf.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Credit for this protobuf generation cmake file goes to Poggicek.
# Based on their work at https://github.com/Poggicek/StickerInspect

set(PROTO_TARGETS
${PROJECT_SOURCE_DIR}/libraries/Protobufs/csgo/network_connection.proto
${PROJECT_SOURCE_DIR}/libraries/Protobufs/csgo/networkbasetypes.proto
${PROJECT_SOURCE_DIR}/libraries/Protobufs/csgo/cs_gameevents.proto
${PROJECT_SOURCE_DIR}/libraries/Protobufs/csgo/engine_gcmessages.proto
${PROJECT_SOURCE_DIR}/libraries/Protobufs/csgo/gcsdk_gcmessages.proto
${PROJECT_SOURCE_DIR}/libraries/Protobufs/csgo/cstrike15_gcmessages.proto
${PROJECT_SOURCE_DIR}/libraries/Protobufs/csgo/cstrike15_usermessages.proto
${PROJECT_SOURCE_DIR}/libraries/Protobufs/csgo/netmessages.proto
${PROJECT_SOURCE_DIR}/libraries/Protobufs/csgo/steammessages.proto
${PROJECT_SOURCE_DIR}/libraries/Protobufs/csgo/usermessages.proto
${PROJECT_SOURCE_DIR}/libraries/Protobufs/csgo/gameevents.proto
${PROJECT_SOURCE_DIR}/libraries/Protobufs/csgo/clientmessages.proto
${PROJECT_SOURCE_DIR}/libraries/Protobufs/csgo/te.proto
)

if(UNIX)
set(PROTOC_EXECUTABLE ${PROJECT_SOURCE_DIR}/libraries/hl2sdk-cs2/devtools/bin/linux/protoc)
elseif(WIN32)
set(PROTOC_EXECUTABLE ${PROJECT_SOURCE_DIR}/libraries/hl2sdk-cs2/devtools/bin/protoc.exe)
endif()

foreach(PROTO_TARGET ${PROTO_TARGETS})
get_filename_component(PROTO_FILENAME ${PROTO_TARGET} NAME_WLE)
list(APPEND PROTO_OUTPUT ${PROTO_FILENAME}.pb.cc ${PROTO_FILENAME}.pb.h)
list(APPEND PROTO_INPUT ${PROTO_FILENAME}.proto)
get_filename_component(PROTO_PATH ${PROTO_TARGET} DIRECTORY)
list(APPEND PROTO_PATHS "--proto_path=${PROTO_PATH}")
endforeach()

list(REMOVE_DUPLICATES PROTO_PATHS)
list(TRANSFORM PROTO_OUTPUT PREPEND ${CMAKE_CURRENT_BINARY_DIR}/protobufcompiler/)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/protobufcompiler)

add_custom_command(
OUTPUT ${PROTO_OUTPUT}
COMMAND "${PROTOC_EXECUTABLE}" -I ${PROJECT_SOURCE_DIR}/libraries/hl2sdk-cs2/thirdparty/protobuf-3.21.8/src --proto_path=${PROJECT_SOURCE_DIR}/libraries/Protobufs/csgo ${PROTO_PATHS} --cpp_out=${CMAKE_CURRENT_BINARY_DIR}/protobufcompiler ${PROTO_INPUT}
COMMENT "Generating protobuf file"
)

add_library(Protobufs STATIC
${PROTO_OUTPUT}
)

target_include_directories(Protobufs
PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/protobufcompiler
PUBLIC ${PROJECT_SOURCE_DIR}/libraries/hl2sdk-cs2/thirdparty/protobuf-3.21.8/src
)

if(WIN32)
target_link_libraries(Protobufs PUBLIC ${PROJECT_SOURCE_DIR}/libraries/hl2sdk-cs2/lib/public/win64/2015/libprotobuf.lib)
elseif(UNIX)
target_link_libraries(Protobufs PUBLIC ${PROJECT_SOURCE_DIR}/libraries/hl2sdk-cs2/lib/linux64/release/libprotobuf.a)
endif()
set_target_properties(Protobufs PROPERTIES LINKER_LANGUAGE CXX)
set_target_properties(Protobufs PROPERTIES FOLDER SDK)
2 changes: 0 additions & 2 deletions makefiles/shared.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,9 @@ include_directories(
${SOURCESDK}/public/schemasystem
${METAMOD_DIR}/core
${METAMOD_DIR}/core/sourcehook
libraries/Protobufs/csgo
libraries/dyncall/dynload
libraries/dyncall/dyncall
libraries/spdlog/include
# libraries/protobuf
libraries/tl
libraries/funchook/include
libraries/DynoHook/src
Expand Down
1 change: 0 additions & 1 deletion makefiles/windows.base.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /OPT
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libcmt")

set(COUNTER_STRIKE_SHARP_LINK_LIBRARIES
${SOURCESDK_LIB}/public/win64/2015/libprotobuf.lib
${SOURCESDK_LIB}/public/win64/tier0.lib
${SOURCESDK_LIB}/public/win64/tier1.lib
${SOURCESDK_LIB}/public/win64/interfaces.lib
Expand Down
Loading

0 comments on commit bb38b1c

Please sign in to comment.