mirror of
https://github.com/rehlds/resemiclip.git
synced 2024-12-25 06:05:49 +03:00
Add workflows/build.yml
This commit is contained in:
parent
c94d5dfe43
commit
33c4062e31
133
.github/workflows/build.yml
vendored
Normal file
133
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,133 @@
|
||||
name: C/C++ CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
|
||||
pull_request:
|
||||
types: [opened, reopened, synchronize]
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
windows:
|
||||
name: 'Windows'
|
||||
runs-on: windows-2019
|
||||
|
||||
env:
|
||||
solution: 'msvc/resemiclip.sln'
|
||||
buildPlatform: 'Win32'
|
||||
buildRelease: 'Release'
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup MSBuild
|
||||
uses: microsoft/setup-msbuild@v1.1.3
|
||||
with:
|
||||
vs-version: '16.8'
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
msbuild ${{ env.solution }} -p:Configuration="${{ env.buildRelease }}" /t:Clean,Build /p:Platform=${{ env.buildPlatform }} /p:PlatformToolset=v140_xp /p:XPDeprecationWarning=false
|
||||
|
||||
- name: Copy Binary files
|
||||
run: |
|
||||
mkdir publish\addons\resemiclip
|
||||
move msvc\${{ env.buildRelease }}\resemiclip_mm.dll publish\addons\resemiclip\resemiclip_mm.dll
|
||||
|
||||
- name: Deploy artifacts
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
with:
|
||||
name: win32
|
||||
path: publish/*
|
||||
|
||||
linux:
|
||||
name: 'Linux'
|
||||
runs-on: ubuntu-latest
|
||||
container: s1lentq/linux86buildtools:latest
|
||||
outputs:
|
||||
app-version: ${{ steps.app-version.outputs.version }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Build using Intel C++ Compiler 19.0
|
||||
run: |
|
||||
rm -rf build && CC=icc CXX=icpc cmake -B build && cmake --build build -j8
|
||||
|
||||
- name: Reading appversion.h
|
||||
id: app-version
|
||||
run: |
|
||||
if [ -e "version/appversion.h" ]; then
|
||||
APP_VERSION=$(cat "version/appversion.h" | grep -wi '#define APP_VERSION_STRD' | sed -e 's/#define APP_VERSION_STRD[ \t\r\n\v\f]\+\(.*\)/\1/i' -e 's/\r//g')
|
||||
if [ $? -ne 0 ]; then
|
||||
APP_VERSION=""
|
||||
else
|
||||
# Remove quotes
|
||||
APP_VERSION=$(echo $APP_VERSION | xargs)
|
||||
fi
|
||||
fi
|
||||
echo "version=${APP_VERSION}" >> "$GITHUB_OUTPUT"
|
||||
shell: bash
|
||||
|
||||
- name: Prepare Config files
|
||||
run: |
|
||||
mkdir -p publish/addons/resemiclip
|
||||
rsync -a dist/ publish/addons/resemiclip/
|
||||
|
||||
- name: Copy Binary files
|
||||
run: |
|
||||
mv build/resemiclip_mm_i386.so publish/addons/resemiclip/resemiclip_mm_i386.so
|
||||
|
||||
- name: Deploy artifacts
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
id: upload-job
|
||||
with:
|
||||
name: linux32
|
||||
path: publish/*
|
||||
|
||||
publish:
|
||||
name: 'Publish'
|
||||
runs-on: ubuntu-latest
|
||||
needs: [windows, linux]
|
||||
|
||||
steps:
|
||||
- name: Deploying linux artifacts
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: linux32
|
||||
|
||||
- name: Deploying windows artifacts
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: win32
|
||||
|
||||
- name: Packaging binaries
|
||||
id: packaging-job
|
||||
if: |
|
||||
github.event_name == 'release' &&
|
||||
github.event.action == 'published' &&
|
||||
startsWith(github.ref, 'refs/tags/')
|
||||
run: |
|
||||
7z a -tzip resemiclip-${{ needs.linux.outputs.app-version }}.zip addons/
|
||||
|
||||
- name: Publish artifacts
|
||||
uses: softprops/action-gh-release@v1
|
||||
id: publish-job
|
||||
if: |
|
||||
startsWith(github.ref, 'refs/tags/') &&
|
||||
steps.packaging-job.outcome == 'success'
|
||||
with:
|
||||
files: |
|
||||
*.zip
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.API_TOKEN }}
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,5 +1,6 @@
|
||||
.idea
|
||||
*.iml
|
||||
/build
|
||||
**/msvc/ipch
|
||||
**/msvc/Debug*
|
||||
**/msvc/Release*
|
||||
@ -13,3 +14,4 @@
|
||||
**/msvc/*.txt
|
||||
**/msvc/*.db
|
||||
**/*.log
|
||||
**/version/appversion.h
|
||||
|
170
CMakeLists.txt
Normal file
170
CMakeLists.txt
Normal file
@ -0,0 +1,170 @@
|
||||
#----------------------------------------
|
||||
# 1. Preparing build:
|
||||
# rm -rf build
|
||||
# mkdir build && cd build
|
||||
#
|
||||
# 2. Select compiler and build it
|
||||
# - Compile with Clang:
|
||||
# CC="clang" CXX="clang++" cmake ..
|
||||
# make
|
||||
#
|
||||
# - Compile with Intel C++ Compiler:
|
||||
# CC="icc" CXX="icpc" cmake ..
|
||||
# make
|
||||
#
|
||||
# - Compile with GCC Compiler:
|
||||
# cmake ..
|
||||
# make
|
||||
#----------------------------------------
|
||||
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
project(resemiclip CXX)
|
||||
|
||||
option(DEBUG "Build with debug information." OFF)
|
||||
option(USE_STATIC_LIBSTDC "Enables static linking libstdc++." OFF)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
# Avoid -fPIC option
|
||||
set(CMAKE_SHARED_LIBRARY_CXX_FLAGS "")
|
||||
|
||||
set(COMPILE_FLAGS "-m32 -U_FORTIFY_SOURCE")
|
||||
set(LINK_FLAGS "-m32 -s")
|
||||
|
||||
set(COMPILE_FLAGS "${COMPILE_FLAGS} -Wall -fno-exceptions -fno-builtin -Wno-unknown-pragmas")
|
||||
|
||||
# Remove noxref code and data
|
||||
set(COMPILE_FLAGS "${COMPILE_FLAGS} -ffunction-sections -fdata-sections")
|
||||
|
||||
if (DEBUG)
|
||||
set(COMPILE_FLAGS "${COMPILE_FLAGS} -g3 -O3 -ggdb")
|
||||
else()
|
||||
set(COMPILE_FLAGS "${COMPILE_FLAGS} -g0 -O3 -fno-stack-protector")
|
||||
endif()
|
||||
|
||||
# Check Intel C++ compiler
|
||||
if ("$ENV{CXX}" MATCHES "icpc")
|
||||
#
|
||||
# -fp-model=precise
|
||||
# ICC uses -fp-model fast=1 by default for more aggressive optimizations on floating-point calculations
|
||||
# https://software.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-guide-and-reference/top/compiler-reference/compiler-options/compiler-option-details/floating-point-options/fp-model-fp.html#fp-model-fp_GUID-99936BBA-1508-4E9F-AC09-FA98613CE2F5
|
||||
#
|
||||
set(COMPILE_FLAGS "${COMPILE_FLAGS} \
|
||||
-fp-model=precise\
|
||||
-Qoption,cpp,--treat_func_as_string_literal_cpp\
|
||||
-inline-forceinline\
|
||||
-no-ansi-alias")
|
||||
|
||||
set(LINK_FLAGS "${LINK_FLAGS} \
|
||||
-static-intel\
|
||||
-no-intel-extensions")
|
||||
|
||||
if (NOT DEBUG)
|
||||
set(COMPILE_FLAGS "${COMPILE_FLAGS} -ipo")
|
||||
set(LINK_FLAGS "${LINK_FLAGS} -ipo")
|
||||
endif()
|
||||
else()
|
||||
# Produce code optimized for the most common IA32/AMD64/EM64T processors.
|
||||
# As new processors are deployed in the marketplace, the behavior of this option will change.
|
||||
set(COMPILE_FLAGS "${COMPILE_FLAGS} \
|
||||
-mtune=generic -msse3\
|
||||
-Wno-write-strings\
|
||||
-fno-sized-deallocation -Wno-strict-aliasing")
|
||||
endif()
|
||||
|
||||
# GCC >= 8.3
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.0)
|
||||
set(COMPILE_FLAGS "${COMPILE_FLAGS} -fcf-protection=none")
|
||||
endif()
|
||||
|
||||
if (NOT DEBUG)
|
||||
set(LINK_FLAGS "${LINK_FLAGS} \
|
||||
-Wl,-gc-sections -Wl,--version-script=\"${PROJECT_SOURCE_DIR}/version_script.lds\"")
|
||||
endif()
|
||||
|
||||
set(PROJECT_SRC_DIR
|
||||
"${PROJECT_SOURCE_DIR}/"
|
||||
"${PROJECT_SOURCE_DIR}/src"
|
||||
"${PROJECT_SOURCE_DIR}/include"
|
||||
"${PROJECT_SOURCE_DIR}/version"
|
||||
)
|
||||
|
||||
set(PROJECT_CSSDK_DIR
|
||||
"${PROJECT_SOURCE_DIR}/cssdk/common"
|
||||
"${PROJECT_SOURCE_DIR}/cssdk/dlls"
|
||||
"${PROJECT_SOURCE_DIR}/cssdk/engine"
|
||||
"${PROJECT_SOURCE_DIR}/cssdk/game_shared"
|
||||
"${PROJECT_SOURCE_DIR}/cssdk/pm_shared"
|
||||
"${PROJECT_SOURCE_DIR}/cssdk/public"
|
||||
)
|
||||
|
||||
set(PROJECT_METAMOD_DIR
|
||||
"${PROJECT_SOURCE_DIR}/metamod"
|
||||
)
|
||||
|
||||
set(MAIN_SRCS
|
||||
"src/precompiled.cpp"
|
||||
"src/h_export.cpp"
|
||||
"src/gamedll_api.cpp"
|
||||
"src/engine_rehlds_api.cpp"
|
||||
"src/meta_api.cpp"
|
||||
"src/main.cpp"
|
||||
"src/config.cpp"
|
||||
)
|
||||
|
||||
set(PUBLIC_SRCS
|
||||
"cssdk/public/interface.cpp"
|
||||
)
|
||||
|
||||
add_library(resemiclip SHARED ${appversion.sh})
|
||||
|
||||
if (NOT TARGET appversion)
|
||||
add_custom_target(appversion DEPENDS COMMAND "${PROJECT_SOURCE_DIR}/version/appversion.sh" "${PROJECT_SOURCE_DIR}/")
|
||||
endif()
|
||||
|
||||
add_dependencies(resemiclip appversion)
|
||||
|
||||
target_include_directories(resemiclip PRIVATE
|
||||
${PROJECT_SRC_DIR}
|
||||
${PROJECT_CSSDK_DIR}
|
||||
${PROJECT_METAMOD_DIR}
|
||||
)
|
||||
|
||||
target_compile_definitions(resemiclip PRIVATE
|
||||
_LINUX
|
||||
LINUX
|
||||
NDEBUG
|
||||
_GLIBCXX_USE_CXX11_ABI=0
|
||||
HAVE_STRONG_TYPEDEF
|
||||
_stricmp=strcasecmp
|
||||
_strnicmp=strncasecmp
|
||||
_vsnprintf=vsnprintf
|
||||
_snprintf=snprintf
|
||||
)
|
||||
|
||||
target_sources(resemiclip PRIVATE
|
||||
${MAIN_SRCS}
|
||||
${PUBLIC_SRCS}
|
||||
)
|
||||
|
||||
target_link_libraries(resemiclip PRIVATE
|
||||
dl
|
||||
)
|
||||
|
||||
if (USE_STATIC_LIBSTDC)
|
||||
target_compile_definitions(resemiclip PRIVATE BUILD_STATIC_LIBSTDC)
|
||||
set(LINK_FLAGS "${LINK_FLAGS} -static-libgcc -static-libstdc++")
|
||||
endif()
|
||||
|
||||
set(LINK_FLAGS "${LINK_FLAGS} \
|
||||
-Wl,-rpath,'$ORIGIN/.' \
|
||||
-L${PROJECT_SOURCE_DIR}/lib/linux32")
|
||||
|
||||
set_target_properties(resemiclip PROPERTIES
|
||||
OUTPUT_NAME resemiclip_mm_i386
|
||||
PREFIX ""
|
||||
COMPILE_FLAGS ${COMPILE_FLAGS}
|
||||
LINK_FLAGS ${LINK_FLAGS}
|
||||
POSITION_INDEPENDENT_CODE OFF
|
||||
)
|
47
Makefile
47
Makefile
@ -1,47 +0,0 @@
|
||||
HLSDK = cssdk
|
||||
METAMOD = metamod
|
||||
M_INCLUDE = include
|
||||
|
||||
NAME = resemiclip
|
||||
|
||||
COMPILER = /opt/intel/bin/icpc
|
||||
|
||||
OBJECTS = src/precompiled.cpp src/h_export.cpp src/gamedll_api.cpp src/engine_rehlds_api.cpp \
|
||||
src/meta_api.cpp src/main.cpp src/config.cpp cssdk/public/interface.cpp
|
||||
|
||||
LINK = -static-intel -static-libgcc -no-intel-extensions
|
||||
|
||||
OPT_FLAGS = -O3 -msse3 -ipo -no-prec-div -fp-model fast=2 -funroll-loops -fomit-frame-pointer -fno-stack-protector
|
||||
|
||||
INCLUDE = -I. -I$(M_INCLUDE)/ -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine \
|
||||
-I$(HLSDK)/game_shared -I$(HLSDK)/pm_shared -I$(HLSDK)/public -I$(METAMOD)
|
||||
|
||||
BIN_DIR = Release
|
||||
CFLAGS = $(OPT_FLAGS)
|
||||
|
||||
CFLAGS += -g -DNDEBUG -Dlinux -D__linux__ -D__USE_GNU -D_vsnprintf=vsnprintf -std=c++0x -shared -wd147,274 -fasm-blocks -m32
|
||||
|
||||
OBJ_LINUX := $(OBJECTS:%.c=$(BIN_DIR)/%.o)
|
||||
|
||||
$(BIN_DIR)/%.o: %.c
|
||||
$(COMPILER) $(INCLUDE) $(CFLAGS) -o $@ -c $<
|
||||
|
||||
all:
|
||||
mkdir -p $(BIN_DIR)
|
||||
|
||||
$(MAKE) $(NAME) && strip -x $(BIN_DIR)/$(NAME)_mm_i386.so
|
||||
|
||||
$(NAME): $(OBJ_LINUX)
|
||||
$(COMPILER) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -o$(BIN_DIR)/$(NAME)_mm_i386.so
|
||||
|
||||
check:
|
||||
cppcheck $(INCLUDE) --quiet --max-configs=100 -D__linux__ -DNDEBUG .
|
||||
|
||||
debug:
|
||||
$(MAKE) all DEBUG=false
|
||||
|
||||
default: all
|
||||
|
||||
clean:
|
||||
rm -rf Release/*.o
|
||||
rm -rf Release/$(NAME)_mm_i386.so
|
60
build.sh
Executable file
60
build.sh
Executable file
@ -0,0 +1,60 @@
|
||||
#!/bin/bash
|
||||
|
||||
main()
|
||||
{
|
||||
CC=gcc
|
||||
CXX=g++
|
||||
|
||||
if [[ "$*" =~ "--help" ]]; then
|
||||
help
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
n=0
|
||||
args=()
|
||||
for i in "$@"
|
||||
do
|
||||
case $i in
|
||||
-j=*|--jobs=*)
|
||||
jobs="-j${i#*=}"
|
||||
shift
|
||||
;;
|
||||
-c=*|--compiler=*)
|
||||
C="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
args[$n]="$i"
|
||||
((++n))
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
case "$C" in
|
||||
("intel"|"icc") CC=icc CXX=icpc ;;
|
||||
("gcc"|"g++") CC=gcc CXX=g++ ;;
|
||||
("clang"|"llvm") CC=clang CXX=clang++ ;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
rm -rf build
|
||||
mkdir build
|
||||
pushd build &> /dev/null
|
||||
CC=$CC CXX=$CXX cmake ${args[@]} ..
|
||||
make ${jobs}
|
||||
popd > /dev/null
|
||||
}
|
||||
|
||||
help()
|
||||
{
|
||||
printf "Usage: ./build.sh <options>\n\n"
|
||||
printf " -c= | --compiler=<icc|gcc|clang> - Select preferred C/C++ compiler to build\n"
|
||||
printf " -j= | --jobs=<N> - Specifies the number of jobs (commands) to run simultaneously (For faster building)\n\n"
|
||||
}
|
||||
|
||||
# Initialize
|
||||
main $*
|
||||
|
||||
# Exit normally
|
||||
exit 0
|
@ -49,4 +49,11 @@
|
||||
|
||||
typedef unsigned int string_t; // from engine's pr_comp.h;
|
||||
|
||||
// From engine/server.h
|
||||
typedef enum sv_delta_s
|
||||
{
|
||||
sv_packet_nodelta,
|
||||
sv_packet_delta,
|
||||
} sv_delta_t;
|
||||
|
||||
#endif // MAINTYPES_H
|
||||
|
26
dist/config.ini
vendored
26
dist/config.ini
vendored
@ -1,18 +1,18 @@
|
||||
# Description
|
||||
#
|
||||
# semiclip 0|1 Выключить / Включить semiclip
|
||||
# team 0|1|2|3
|
||||
# - 0 Semiclip действует для всех
|
||||
# - 1 Semiclip действует только для T
|
||||
# - 2 Semiclip действует только для CT
|
||||
# - 3 Semiclip действут только для тиммейтов
|
||||
# semiclip 0|1 Turn Off / Turn On semiclip
|
||||
# team 0|1|2|3
|
||||
# - 0 Semiclip applies to everyone
|
||||
# - 1 Semiclip applies only to T (Terrorist team)
|
||||
# - 2 Semiclip applies only to CT (Counter-Terrorist team)
|
||||
# - 3 Semiclip applies only to teammates
|
||||
#
|
||||
# time 0|180 Сколько длится действие semiclip от начала раунда.
|
||||
# crouch 0|1 Автоматизация подсадок.
|
||||
# effects 0|1 Эффект прозрачности игрока зависит от расстоянии между игроками.
|
||||
# distance 64|250 На какой дистанции игрок может иметь прозрачность и действие semiclip.
|
||||
# transparency 0|255 Прозрачность игрока.
|
||||
# penetfire 0|1 Пропускать огонь по "прозрачным" союзникам.
|
||||
# time 0|180 How long does the semiclip effect last from the start of the round
|
||||
# crouch 0|1 Automation of crouching (players can jump onto a crouching player)
|
||||
# effects 0|1 Player transparency depends on the distance between players
|
||||
# distance 64|250 At what distance can a player have transparency and the semiclip effect
|
||||
# transparency 0|255 Player transparency
|
||||
# penetfire 0|1 Allow bullets to pass through "transparent" allies
|
||||
#
|
||||
|
||||
semiclip = 1;
|
||||
@ -22,4 +22,4 @@ crouch = 1;
|
||||
effects = 0;
|
||||
distance = 200;
|
||||
transparency = 120;
|
||||
penetfire = 0;
|
||||
penetfire = 0;
|
||||
|
@ -7,11 +7,6 @@ extern IRehldsApi* g_RehldsApi;
|
||||
extern IRehldsHookchains* g_RehldsHookchains;
|
||||
extern bool RehldsApi_Init();
|
||||
|
||||
typedef enum sv_delta_s {
|
||||
sv_packet_nodelta,
|
||||
sv_packet_delta
|
||||
} sv_delta_t;
|
||||
|
||||
typedef struct packet_entities_s {
|
||||
int num_entities;
|
||||
unsigned char flags[32];
|
||||
|
@ -3,6 +3,8 @@
|
||||
#include <extdll.h>
|
||||
#include <meta_api.h>
|
||||
|
||||
#include "version/appversion.h"
|
||||
|
||||
#include "cbase.h"
|
||||
#include "entity_state.h"
|
||||
#include "pm_defs.h"
|
||||
|
45
msvc/PostBuild.bat
Normal file
45
msvc/PostBuild.bat
Normal file
@ -0,0 +1,45 @@
|
||||
@echo OFF
|
||||
::
|
||||
:: Post-build auto-deploy script
|
||||
:: Create and fill PublishPath.txt file with path to deployment folder
|
||||
:: I.e. PublishPath.txt should contain one line with a folder path
|
||||
:: Call it so:
|
||||
:: IF EXIST "$(ProjectDir)PostBuild.bat" (CALL "$(ProjectDir)PostBuild.bat" "$(TargetDir)" "$(TargetName)" "$(TargetExt)" "$(ProjectDir)")
|
||||
::
|
||||
|
||||
SET targetDir=%~1
|
||||
SET targetDirPlay=%targetDir:Play=%
|
||||
|
||||
SET targetName=%~2
|
||||
SET targetExt=%~3
|
||||
SET projectDir=%~4
|
||||
SET destination=PublishPath
|
||||
|
||||
IF NOT "%targetDir%"=="%targetDirPlay%" (
|
||||
SET destination=PublishPath_play
|
||||
)
|
||||
|
||||
IF NOT EXIST "%projectDir%\%destination%.txt" (
|
||||
ECHO No deployment path specified. Create %destination%.txt near PostBuild.bat with paths on separate lines for auto deployment.
|
||||
exit /B 0
|
||||
)
|
||||
|
||||
FOR /f "tokens=* delims= usebackq" %%a IN ("%projectDir%\%destination%.txt") DO (
|
||||
ECHO Deploying to: %%a
|
||||
IF NOT "%%a" == "" (
|
||||
copy /Y "%targetDir%%targetName%%targetExt%" "%%a"
|
||||
IF NOT ERRORLEVEL 1 (
|
||||
IF EXIST "%targetDir%%targetName%.pdb" (
|
||||
copy /Y "%targetDir%%targetName%.pdb" "%%a"
|
||||
)
|
||||
) ELSE (
|
||||
ECHO PostBuild.bat ^(27^) : warning : Can't copy '%targetName%%targetExt%' to deploy path '%%a'
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
IF "%%a" == "" (
|
||||
ECHO No deployment path specified.
|
||||
)
|
||||
|
||||
exit /B 0
|
204
msvc/PreBuild.bat
Normal file
204
msvc/PreBuild.bat
Normal file
@ -0,0 +1,204 @@
|
||||
@setlocal enableextensions enabledelayedexpansion
|
||||
@echo off
|
||||
::
|
||||
:: Pre-build auto-versioning script
|
||||
::
|
||||
|
||||
set srcdir=%~1
|
||||
set repodir=%~2
|
||||
|
||||
set old_version=
|
||||
set version_major=0
|
||||
set version_minor=0
|
||||
set version_modifed=
|
||||
|
||||
set commitSHA=
|
||||
set commitURL=
|
||||
set commitCount=0
|
||||
set branch_name=master
|
||||
|
||||
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set "dt=%%a"
|
||||
set "YYYY=%dt:~0,4%"
|
||||
set "MM=%dt:~4,2%"
|
||||
set "DD=%dt:~6,2%"
|
||||
set "hour=%dt:~8,2%"
|
||||
set "min=%dt:~10,2%"
|
||||
set "sec=%dt:~12,2%"
|
||||
|
||||
::
|
||||
:: Remove leading zero from MM (e.g 09 > 9)
|
||||
for /f "tokens=* delims=0" %%I in ("%MM%") do set MM=%%I
|
||||
::
|
||||
|
||||
::
|
||||
:: Index into array to get month name
|
||||
::
|
||||
for /f "tokens=%MM%" %%I in ("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec") do set "month=%%I"
|
||||
|
||||
::
|
||||
:: Check for git.exe presence
|
||||
::
|
||||
CALL git.exe describe >NUL 2>&1
|
||||
set errlvl="%ERRORLEVEL%"
|
||||
|
||||
::
|
||||
:: Read old appversion.h, if present
|
||||
::
|
||||
IF EXIST "%srcdir%\appversion.h" (
|
||||
FOR /F "usebackq tokens=1,2,3" %%i in ("%srcdir%\appversion.h") do (
|
||||
IF %%i==#define (
|
||||
IF %%j==APP_VERSION (
|
||||
:: Remove quotes
|
||||
set v=%%k
|
||||
set old_version=!v:"=!
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
IF %errlvl% == "1" (
|
||||
echo can't locate git.exe - auto-versioning step won't be performed
|
||||
|
||||
:: if we haven't appversion.h, we need to create it
|
||||
IF NOT "%old_version%" == "" (
|
||||
set commitCount=0
|
||||
)
|
||||
)
|
||||
|
||||
::
|
||||
:: Read major, minor and maintenance version components from version.h
|
||||
::
|
||||
IF EXIST "%srcdir%\version.h" (
|
||||
FOR /F "usebackq tokens=1,2,3" %%i in ("%srcdir%\version.h") do (
|
||||
IF %%i==#define (
|
||||
IF %%j==VERSION_MAJOR set version_major=%%k
|
||||
IF %%j==VERSION_MINOR set version_minor=%%k
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
::
|
||||
:: Read revision and release date from it
|
||||
::
|
||||
IF NOT %errlvl% == "1" (
|
||||
:: Get current branch
|
||||
FOR /F "tokens=*" %%i IN ('"git -C "%repodir%\." rev-parse --abbrev-ref HEAD"') DO (
|
||||
set branch_name=%%i
|
||||
)
|
||||
|
||||
FOR /F "tokens=*" %%i IN ('"git -C "%repodir%\." rev-list --count !branch_name!"') DO (
|
||||
IF NOT [%%i] == [] (
|
||||
set commitCount=%%i
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
::
|
||||
:: Get remote url repository
|
||||
::
|
||||
IF NOT %errlvl% == "1" (
|
||||
|
||||
set branch_remote=origin
|
||||
:: Get remote name by current branch
|
||||
FOR /F "tokens=*" %%i IN ('"git -C "%repodir%\." config branch.!branch_name!.remote"') DO (
|
||||
set branch_remote=%%i
|
||||
)
|
||||
:: Get remote url
|
||||
FOR /F "tokens=2 delims=@" %%i IN ('"git -C "%repodir%\." config remote.!branch_remote!.url"') DO (
|
||||
set commitURL=%%i
|
||||
)
|
||||
:: Get commit id
|
||||
FOR /F "tokens=*" %%i IN ('"git -C "%repodir%\." rev-parse --verify HEAD"') DO (
|
||||
set shafull=%%i
|
||||
set commitSHA=!shafull:~0,+7!
|
||||
)
|
||||
|
||||
IF [!commitURL!] == [] (
|
||||
|
||||
FOR /F "tokens=1" %%i IN ('"git -C "%repodir%\." config remote.!branch_remote!.url"') DO (
|
||||
set commitURL=%%i
|
||||
)
|
||||
|
||||
:: strip .git
|
||||
if "x!commitURL:~-4!"=="x.git" (
|
||||
set commitURL=!commitURL:~0,-4!
|
||||
)
|
||||
|
||||
:: append extra string
|
||||
If NOT "!commitURL!"=="!commitURL:bitbucket.org=!" (
|
||||
set commitURL=!commitURL!/commits/
|
||||
) ELSE (
|
||||
set commitURL=!commitURL!/commit/
|
||||
)
|
||||
|
||||
) ELSE (
|
||||
:: strip .git
|
||||
if "x!commitURL:~-4!"=="x.git" (
|
||||
set commitURL=!commitURL:~0,-4!
|
||||
)
|
||||
:: replace : to /
|
||||
set commitURL=!commitURL::=/!
|
||||
|
||||
:: append extra string
|
||||
If NOT "!commitURL!"=="!commitURL:bitbucket.org=!" (
|
||||
set commitURL=https://!commitURL!/commits/
|
||||
) ELSE (
|
||||
set commitURL=https://!commitURL!/commit/
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
::
|
||||
:: Detect local modifications
|
||||
::
|
||||
set localChanged=0
|
||||
IF NOT %errlvl% == "1" (
|
||||
FOR /F "tokens=*" %%i IN ('"git -C "%repodir%\." ls-files -m"') DO (
|
||||
set localChanged=1
|
||||
)
|
||||
)
|
||||
|
||||
IF [%localChanged%]==[1] (
|
||||
set version_modifed=+m
|
||||
)
|
||||
|
||||
::
|
||||
:: Now form full version string like 1.0.0.1
|
||||
::
|
||||
|
||||
set new_version=%version_major%.%version_minor%.%commitCount%%version_modifed%
|
||||
|
||||
::
|
||||
:: Update appversion.h if version has changed or modifications/mixed revisions detected
|
||||
::
|
||||
IF NOT "%new_version%"=="%old_version%" goto _update
|
||||
goto _exit
|
||||
|
||||
:_update
|
||||
echo Updating appversion.h, new version is "%new_version%", the old one was %old_version%
|
||||
|
||||
echo #ifndef __APPVERSION_H__>"%srcdir%\appversion.h"
|
||||
echo #define __APPVERSION_H__>>"%srcdir%\appversion.h"
|
||||
echo.>>"%srcdir%\appversion.h"
|
||||
echo // >>"%srcdir%\appversion.h"
|
||||
echo // This file is generated automatically.>>"%srcdir%\appversion.h"
|
||||
echo // Don't edit it.>>"%srcdir%\appversion.h"
|
||||
echo // >>"%srcdir%\appversion.h"
|
||||
echo.>>"%srcdir%\appversion.h"
|
||||
echo // Version defines>>"%srcdir%\appversion.h"
|
||||
echo #define APP_VERSION "%new_version%">>"%srcdir%\appversion.h"
|
||||
|
||||
echo.>>"%srcdir%\appversion.h"
|
||||
echo #define APP_COMMIT_DATE "%month% %DD% %YYYY%">>"%srcdir%\appversion.h"
|
||||
echo #define APP_COMMIT_TIME "%hour%:%min%:%sec%">>"%srcdir%\appversion.h"
|
||||
|
||||
echo.>>"%srcdir%\appversion.h"
|
||||
echo #define APP_COMMIT_SHA "%commitSHA%">>"%srcdir%\appversion.h"
|
||||
echo #define APP_COMMIT_URL "%commitURL%">>"%srcdir%\appversion.h"
|
||||
echo.>>"%srcdir%\appversion.h"
|
||||
|
||||
echo #endif //__APPVERSION_H__>>"%srcdir%\appversion.h"
|
||||
echo.>>"%srcdir%\appversion.h"
|
||||
|
||||
:_exit
|
||||
exit /B 0
|
@ -113,7 +113,6 @@
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>
|
||||
</LinkIncremental>
|
||||
<PostBuildEventUseInBuild>false</PostBuildEventUseInBuild>
|
||||
<TargetName>$(ProjectName)_mm</TargetName>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
@ -123,7 +122,7 @@
|
||||
<WarningLevel>TurnOffAllWarnings</WarningLevel>
|
||||
<Optimization>Full</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..\include\;..\metamod\;..\cssdk\common\;..\cssdk\dlls\;..\cssdk\engine\;..\cssdk\pm_shared\;..\cssdk\game_shared\;..\cssdk\public\</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\;..\include\;..\metamod\;..\cssdk\common\;..\cssdk\dlls\;..\cssdk\engine\;..\cssdk\pm_shared\;..\cssdk\game_shared\;..\cssdk\public\</AdditionalIncludeDirectories>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
@ -145,11 +144,25 @@
|
||||
<CustomBuildStep>
|
||||
</CustomBuildStep>
|
||||
<CustomBuildStep>
|
||||
<Outputs>subversion.always.run</Outputs>
|
||||
<Outputs>build.always.run</Outputs>
|
||||
</CustomBuildStep>
|
||||
<CustomBuildStep>
|
||||
<Inputs>subversion.always.run</Inputs>
|
||||
<Inputs>build.always.run</Inputs>
|
||||
<Command>echo Empty Action</Command>
|
||||
<Message>Force build to run Pre-Build event</Message>
|
||||
</CustomBuildStep>
|
||||
<PreBuildEvent>
|
||||
<Command>IF EXIST "$(ProjectDir)PreBuild.bat" (CALL "$(ProjectDir)PreBuild.bat" "$(ProjectDir)..\version\" "$(ProjectDir)..\")</Command>
|
||||
</PreBuildEvent>
|
||||
<PreBuildEvent>
|
||||
<Message>Setup version from Git revision</Message>
|
||||
</PreBuildEvent>
|
||||
<PostBuildEvent>
|
||||
<Command>IF EXIST "$(ProjectDir)PostBuild.bat" (CALL "$(ProjectDir)PostBuild.bat" "$(TargetDir)" "$(TargetName)" "$(TargetExt)" "$(ProjectDir)")</Command>
|
||||
</PostBuildEvent>
|
||||
<PostBuildEvent>
|
||||
<Message>Automatic deployment script</Message>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
@ -159,7 +172,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>false</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..\include\;..\metamod\;..\cssdk\common\;..\cssdk\dlls\;..\cssdk\engine\;..\cssdk\pm_shared\;..\cssdk\game_shared\;..\cssdk\public\</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\;..\include\;..\metamod\;..\cssdk\common\;..\cssdk\dlls\;..\cssdk\engine\;..\cssdk\pm_shared\;..\cssdk\game_shared\;..\cssdk\public\</AdditionalIncludeDirectories>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<StringPooling>false</StringPooling>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
@ -188,15 +201,29 @@
|
||||
<CustomBuildStep>
|
||||
</CustomBuildStep>
|
||||
<CustomBuildStep>
|
||||
<Outputs>subversion.always.run</Outputs>
|
||||
<Outputs>build.always.run</Outputs>
|
||||
</CustomBuildStep>
|
||||
<CustomBuildStep>
|
||||
<Inputs>subversion.always.run</Inputs>
|
||||
<Inputs>build.always.run</Inputs>
|
||||
<Command>echo Empty Action</Command>
|
||||
<Message>Force build to run Pre-Build event</Message>
|
||||
</CustomBuildStep>
|
||||
<PostBuildEvent>
|
||||
</PostBuildEvent>
|
||||
<PostBuildEvent>
|
||||
</PostBuildEvent>
|
||||
<PreBuildEvent>
|
||||
<Command>IF EXIST "$(ProjectDir)PreBuild.bat" (CALL "$(ProjectDir)PreBuild.bat" "$(ProjectDir)..\version\" "$(ProjectDir)..\")</Command>
|
||||
</PreBuildEvent>
|
||||
<PreBuildEvent>
|
||||
<Message>Setup version from Git revision</Message>
|
||||
</PreBuildEvent>
|
||||
<PostBuildEvent>
|
||||
<Command>IF EXIST "$(ProjectDir)PostBuild.bat" (CALL "$(ProjectDir)PostBuild.bat" "$(TargetDir)" "$(TargetName)" "$(TargetExt)" "$(ProjectDir)")</Command>
|
||||
</PostBuildEvent>
|
||||
<PostBuildEvent>
|
||||
<Message>Automatic deployment script</Message>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
@ -3,10 +3,10 @@
|
||||
plugin_info_t Plugin_info = {
|
||||
META_INTERFACE_VERSION,
|
||||
"ReSemiclip",
|
||||
"2.3.9",
|
||||
"13/02/17",
|
||||
"s1lent & Adidasman",
|
||||
"http://www.dedicated-server.ru/",
|
||||
APP_VERSION,
|
||||
APP_COMMIT_DATE,
|
||||
"s1lent",
|
||||
"https://github.com/s1lentq/resemiclip/",
|
||||
"ReSemiclip",
|
||||
PT_CHANGELEVEL,
|
||||
PT_ANYTIME
|
||||
|
153
version/appversion.sh
Executable file
153
version/appversion.sh
Executable file
@ -0,0 +1,153 @@
|
||||
#!/bin/bash
|
||||
|
||||
init()
|
||||
{
|
||||
SOURCE_DIR="$@"
|
||||
GIT_DIR=$SOURCE_DIR
|
||||
VERSION_FILE=$SOURCE_DIR/version/version.h
|
||||
APPVERSION_FILE=$SOURCE_DIR/version/appversion.h
|
||||
|
||||
if test -z "`git --version`"; then
|
||||
echo "Please install git client"
|
||||
echo "sudo apt-get install git"
|
||||
exit -1
|
||||
fi
|
||||
|
||||
# Read old version
|
||||
if [ -e "$APPVERSION_FILE" ]; then
|
||||
OLD_VERSION=$(cat "$APPVERSION_FILE" | grep -wi '#define APP_VERSION' | sed -e 's/#define APP_VERSION[ \t\r\n\v\f]\+\(.*\)/\1/i' -e 's/\r//g')
|
||||
if [ $? -ne 0 ]; then
|
||||
OLD_VERSION=""
|
||||
else
|
||||
# Remove quotes
|
||||
OLD_VERSION=$(echo $OLD_VERSION | xargs)
|
||||
fi
|
||||
fi
|
||||
|
||||
# Get major and minor information from version.h
|
||||
MAJOR=$(cat "$VERSION_FILE" | grep -wi 'VERSION_MAJOR' | sed -e 's/.*VERSION_MAJOR.*[^0-9]\([0-9][0-9]*\).*/\1/i' -e 's/\r//g')
|
||||
if [ $? -ne 0 -o "$MAJOR" = "" ]; then
|
||||
MAJOR=0
|
||||
fi
|
||||
|
||||
MINOR=$(cat "$VERSION_FILE" | grep -wi 'VERSION_MINOR' | sed -e 's/.*VERSION_MINOR.*[^0-9]\([0-9][0-9]*\).*/\1/i' -e 's/\r//g')
|
||||
if [ $? -ne 0 -o "$MINOR" = "" ]; then
|
||||
MINOR=0
|
||||
fi
|
||||
|
||||
BRANCH_NAME=$(git -C "$GIT_DIR/" rev-parse --abbrev-ref HEAD)
|
||||
if [ $? -ne 0 -o "$BRANCH_NAME" = "" ]; then
|
||||
BRANCH_NAME=master
|
||||
fi
|
||||
|
||||
COMMIT_COUNT=$(git -C "$GIT_DIR/" rev-list --count $BRANCH_NAME)
|
||||
if [ $? -ne 0 -o "$COMMIT_COUNT" = "" ]; then
|
||||
COMMIT_COUNT=0
|
||||
fi
|
||||
|
||||
#
|
||||
# Configure remote url repository
|
||||
#
|
||||
# Get remote name by current branch
|
||||
BRANCH_REMOTE=$(git -C "$GIT_DIR/" config branch.$BRANCH_NAME.remote)
|
||||
if [ $? -ne 0 -o "$BRANCH_REMOTE" = "" ]; then
|
||||
BRANCH_REMOTE=origin
|
||||
fi
|
||||
|
||||
# Get commit id
|
||||
COMMIT_SHA=$(git -C "$GIT_DIR/" rev-parse --verify HEAD)
|
||||
COMMIT_SHA=${COMMIT_SHA:0:7}
|
||||
|
||||
# Get remote url
|
||||
COMMIT_URL=$(git -C "$GIT_DIR/" config remote.$BRANCH_REMOTE.url)
|
||||
|
||||
URL_CONSTRUCT=0
|
||||
|
||||
if [[ "$COMMIT_URL" == *"git@"* ]]; then
|
||||
URL_CONSTRUCT=1
|
||||
|
||||
# Strip prefix 'git@'
|
||||
COMMIT_URL=${COMMIT_URL#git@}
|
||||
|
||||
# Strip postfix '.git'
|
||||
COMMIT_URL=${COMMIT_URL%.git}
|
||||
|
||||
# Replace ':' to '/'
|
||||
COMMIT_URL=${COMMIT_URL/:/\/}
|
||||
|
||||
elif [[ "$COMMIT_URL" == *"https://"* ]]; then
|
||||
URL_CONSTRUCT=1
|
||||
|
||||
# Strip prefix 'https://'
|
||||
COMMIT_URL=${COMMIT_URL#https://}
|
||||
|
||||
# Strip postfix '.git'
|
||||
COMMIT_URL=${COMMIT_URL%.git}
|
||||
fi
|
||||
|
||||
if test "$URL_CONSTRUCT" -eq 1; then
|
||||
# Append extra string
|
||||
if [[ "$COMMIT_URL" == *"bitbucket.org"* ]]; then
|
||||
COMMIT_URL=$(echo https://$COMMIT_URL/commits/)
|
||||
else
|
||||
COMMIT_URL=$(echo https://$COMMIT_URL/commit/)
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# Detect local modifications
|
||||
#
|
||||
if [ `git -C "$GIT_DIR/" ls-files -m | wc -l` = 0 ]; then
|
||||
MODIFIED=
|
||||
else
|
||||
MODIFIED=+m
|
||||
fi
|
||||
|
||||
NEW_VERSION="$MAJOR.$MINOR.$COMMIT_COUNT$MODIFIED"
|
||||
|
||||
# Update appversion.h if version has changed or modifications/mixed revisions detected
|
||||
if [ "$NEW_VERSION" != "$OLD_VERSION" ]; then
|
||||
update_appversion
|
||||
fi
|
||||
}
|
||||
|
||||
update_appversion()
|
||||
{
|
||||
day=$(date +%d)
|
||||
year=$(date +%Y)
|
||||
hours=$(date +%H:%M:%S)
|
||||
month=$(LANG=en_us_88591; date +"%b")
|
||||
|
||||
# Write appversion.h
|
||||
echo Updating appversion.h, new version is '"'$NEW_VERSION'"', the old one was $OLD_VERSION
|
||||
|
||||
echo -e "#ifndef __APPVERSION_H__\r">"$APPVERSION_FILE"
|
||||
echo -e "#define __APPVERSION_H__\r">>"$APPVERSION_FILE"
|
||||
echo -e "\r">>"$APPVERSION_FILE"
|
||||
echo -e "//\r">>"$APPVERSION_FILE"
|
||||
echo -e "// This file is generated automatically.\r">>"$APPVERSION_FILE"
|
||||
echo -e "// Don't edit it.\r">>"$APPVERSION_FILE"
|
||||
echo -e "//\r">>"$APPVERSION_FILE"
|
||||
echo -e "\r">>"$APPVERSION_FILE"
|
||||
echo -e "// Version defines\r">>"$APPVERSION_FILE"
|
||||
echo -e '#define APP_VERSION "'$NEW_VERSION'"\r'>>"$APPVERSION_FILE"
|
||||
|
||||
echo -e "#define APP_VERSION_C $MAJOR,$MINOR,$COMMIT_COUNT\r">>"$APPVERSION_FILE"
|
||||
echo -e '#define APP_VERSION_STRD "'$MAJOR.$MINOR.$COMMIT_COUNT'"\r'>>"$APPVERSION_FILE"
|
||||
echo -e "#define APP_VERSION_FLAGS 0x0L\r">>"$APPVERSION_FILE"
|
||||
echo -e "\r">>"$APPVERSION_FILE"
|
||||
echo -e '#define APP_COMMIT_DATE "'$month $day $year'"\r'>>"$APPVERSION_FILE"
|
||||
echo -e '#define APP_COMMIT_TIME "'$hours'"\r'>>"$APPVERSION_FILE"
|
||||
echo -e "\r">>"$APPVERSION_FILE"
|
||||
|
||||
echo -e '#define APP_COMMIT_SHA "'$COMMIT_SHA'"\r'>>"$APPVERSION_FILE"
|
||||
echo -e '#define APP_COMMIT_URL "'$COMMIT_URL'"\r'>>"$APPVERSION_FILE"
|
||||
echo -e "\r">>"$APPVERSION_FILE"
|
||||
echo -e "#endif //__APPVERSION_H__\r">>"$APPVERSION_FILE"
|
||||
}
|
||||
|
||||
# Initialise
|
||||
init $*
|
||||
|
||||
# Exit normally
|
||||
exit 0
|
10
version/version.h
Normal file
10
version/version.h
Normal file
@ -0,0 +1,10 @@
|
||||
/*
|
||||
* Version declaration dependency file
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define VERSION_MAJOR 2
|
||||
#define VERSION_MINOR 4
|
||||
#define VERSION_MAINTENANCE 0
|
16
version_script.lds
Normal file
16
version_script.lds
Normal file
@ -0,0 +1,16 @@
|
||||
RESEMICLIP_ABI_1.0 {
|
||||
global:
|
||||
GiveFnptrsToDll;
|
||||
Meta_Attach;
|
||||
Meta_Detach;
|
||||
Meta_Query;
|
||||
AMXX_Attach;
|
||||
AMXX_CheckGame;
|
||||
AMXX_Detach;
|
||||
AMXX_PluginsLoaded;
|
||||
AMXX_PluginsUnloaded;
|
||||
AMXX_PluginsUnloading;
|
||||
AMXX_Query;
|
||||
local:
|
||||
*;
|
||||
};
|
Loading…
Reference in New Issue
Block a user