Initial commit

This commit is contained in:
Michal 2026-01-11 18:57:42 +04:00 • committed by GitHub
commit 3dd53cf457
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
105 changed files with 35670 additions and 0 deletions

View file

@ -0,0 +1,38 @@
add_definitions(
-D_LINUX
-DPOSIX
-DLINUX
-DGNUC
-DCOMPILER_GCC
-DPLATFORM_64BITS
-D_FILE_OFFSET_BITS=64
-D_GLIBCXX_USE_CXX11_ABI=0
)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Dstrnicmp=strncasecmp -D_snprintf=snprintf")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-uninitialized -Wno-switch -Wno-unused")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-non-virtual-dtor -Wno-overloaded-virtual")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-conversion-null -Wno-write-strings")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-offsetof -Wno-reorder")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=stringop-overflow")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpmath=sse -msse -fno-strict-aliasing")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-threadsafe-statics -v -fvisibility=default")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc -static-libstdc++")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--exclude-libs=libprotobuf.a")
set(LINK_LIBRARIES
${SOURCESDK_LIB}/linux64/libtier0.so
${SOURCESDK_LIB}/linux64/tier1.a
${SOURCESDK_LIB}/linux64/interfaces.a
${SOURCESDK_LIB}/linux64/mathlib.a
spdlog
Protobufs
distorm
funchook-static
)

View file

@ -0,0 +1,5 @@
"Metamod Plugin"
{
"alias" "NadeKingChallenges"
"file" "addons/NadeKingChallenges/bin/${PROJECT_VDF_PLATFORM}/NadeKingChallenges"
}

View file

@ -0,0 +1,10 @@
if (WIN32)
set(PROJECT_VDF_PLATFORM "win64")
else()
set(PROJECT_VDF_PLATFORM "linuxsteamrt64")
endif()
configure_file(
${CMAKE_CURRENT_LIST_DIR}/TemplatePlugin.vdf.in
${PROJECT_SOURCE_DIR}/configs/addons/metamod/TemplatePlugin.vdf
)

64
makefiles/protobuf.cmake Normal file
View file

@ -0,0 +1,64 @@
# Credit for this protobuf generation cmake file goes to Poggicek.
# Based on their work at https://github.com/Poggicek/StickerInspect
set(PROTO_TARGETS
${CSGO_PROTO_DIR}/network_connection.proto
${CSGO_PROTO_DIR}/networkbasetypes.proto
${CSGO_PROTO_DIR}/cs_gameevents.proto
${CSGO_PROTO_DIR}/cs_usercmd.proto
${CSGO_PROTO_DIR}/base_gcmessages.proto
${CSGO_PROTO_DIR}/econ_gcmessages.proto
${CSGO_PROTO_DIR}/engine_gcmessages.proto
${CSGO_PROTO_DIR}/gcsdk_gcmessages.proto
${CSGO_PROTO_DIR}/gcsystemmsgs.proto
${CSGO_PROTO_DIR}/cstrike15_gcmessages.proto
${CSGO_PROTO_DIR}/cstrike15_usermessages.proto
${CSGO_PROTO_DIR}/netmessages.proto
${CSGO_PROTO_DIR}/steammessages.proto
${CSGO_PROTO_DIR}/usercmd.proto
${CSGO_PROTO_DIR}/usermessages.proto
${CSGO_PROTO_DIR}/gameevents.proto
${CSGO_PROTO_DIR}/clientmessages.proto
${CSGO_PROTO_DIR}/te.proto
)
if(UNIX)
set(PROTOC_EXECUTABLE ${SOURCESDK_DIR}/devtools/bin/linux/protoc)
elseif(WIN32)
set(PROTOC_EXECUTABLE ${SOURCESDK_DIR}/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 ${SOURCESDK_DIR}/thirdparty/protobuf-3.21.8/src --proto_path=${CSGO_PROTO_DIR} ${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 ${SOURCESDK_DIR}/thirdparty/protobuf-3.21.8/src
)
if(WIN32)
target_link_libraries(Protobufs PUBLIC ${SOURCESDK_DIR}/lib/public/win64/2015/libprotobuf.lib)
elseif(UNIX)
target_link_libraries(Protobufs PUBLIC ${SOURCESDK_DIR}/lib/linux64/release/libprotobuf.a)
endif()
set_target_properties(Protobufs PROPERTIES LINKER_LANGUAGE CXX)
set_target_properties(Protobufs PROPERTIES FOLDER SDK)

67
makefiles/shared.cmake Normal file
View file

@ -0,0 +1,67 @@
if (UNIX AND NOT APPLE)
set(LINUX TRUE)
endif ()
if (WIN32 AND NOT MSVC)
message(FATAL "MSVC restricted.")
endif ()
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING
"Only do Release and Debug"
FORCE
)
set(CMAKE_CXX_STANDARD 20)
if (LINUX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
endif ()
set(CMAKE_STATIC_LIBRARY_PREFIX "")
set(SOURCESDK ${SOURCESDK_DIR}/${BRANCH})
set(SOURCESDK_LIB ${SOURCESDK}/lib)
add_definitions(-DMETA_IS_SOURCE2 -D_ITERATOR_DEBUG_LEVEL=0)
if (DEFINED ENV{GITHUB_SHA_SHORT})
add_definitions(-DGITHUB_SHA="$ENV{GITHUB_SHA_SHORT}")
else ()
add_definitions(-DGITHUB_SHA="Local")
endif ()
if (DEFINED ENV{SEMVER})
add_definitions(-DSEMVER="$ENV{SEMVER}")
else ()
add_definitions(-DSEMVER="Local")
endif ()
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
add_compile_definitions(_GLIBCXX_USE_CXX11_ABI=0)
endif ()
include_directories(
${CMAKE_SOURCE_DIR}
${SOURCESDK}
${SOURCESDK}/thirdparty/protobuf-3.21.8/src
${SOURCESDK}/common
${SOURCESDK}/game/shared
${SOURCESDK}/game/server
${SOURCESDK}/public
${SOURCESDK}/public/engine
${SOURCESDK}/public/mathlib
${SOURCESDK}/public/tier0
${SOURCESDK}/public/tier1
${SOURCESDK}/public/entity2
${SOURCESDK}/public/game/server
${SOURCESDK}/public/schemasystem
${METAMOD_DIR}/core
${METAMOD_DIR}/core/sourcehook
vendor/funchook/include
vendor/spdlog/include
vendor/nlohmann
vendor
)
include(${CMAKE_CURRENT_LIST_DIR}/metamod/configure_metamod.cmake)

View file

@ -0,0 +1,20 @@
add_definitions(
-DCOMPILER_MSVC -DCOMPILER_MSVC64 -D_WIN32 -D_WINDOWS -D_ALLOW_KEYWORD_MACROS -D__STDC_LIMIT_MACROS
-D_CRT_SECURE_NO_WARNINGS=1 -D_CRT_SECURE_NO_DEPRECATE=1 -D_CRT_NONSTDC_NO_DEPRECATE=1
)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4819 /wd4828 /wd5033 /permissive- /utf-8 /wd4005 /MP")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /OPT:REF /OPT:ICF")
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libcmt")
set(LINK_LIBRARIES
${SOURCESDK_LIB}/public/win64/tier0.lib
${SOURCESDK_LIB}/public/win64/tier1.lib
${SOURCESDK_LIB}/public/win64/interfaces.lib
${SOURCESDK_LIB}/public/win64/mathlib.lib
spdlog
Protobufs
distorm
funchook-static
)