0
0
mirror of https://github.com/hufrea/byedpi.git synced 2025-07-06 05:54:02 +00:00

Main version read from source file.

Revision part of version read from git order number.
Version info block added to NSIS package.
This commit is contained in:
raspopov 2024-08-08 18:07:38 +03:00
parent 5464319124
commit 37d0c28832
No known key found for this signature in database
GPG Key ID: 2B35203E97E80E13

View File

@ -1,18 +1,42 @@
cmake_minimum_required( VERSION 3.5 ) cmake_minimum_required( VERSION 3.5 )
# Read version number
file( STRINGS main.c MAIN_VERSION_LINE REGEX "#define[ \t]+VERSION[ \t]+" LIMIT_COUNT 1 )
string( REGEX MATCH "([0-9\.]+)" MAIN_VERSION "${MAIN_VERSION_LINE}" )
if( NOT MAIN_VERSION )
message( FATAL_ERROR "Version not found!" )
endif()
# Prepend version by "0"
string( REGEX MATCHALL "([0-9]+)" MAIN_VERSION "${MAIN_VERSION}" )
list( LENGTH MAIN_VERSION _LENGTH )
while( ${_LENGTH} LESS 3 )
list( PREPEND MAIN_VERSION "0" )
list( LENGTH MAIN_VERSION _LENGTH )
endwhile()
string( JOIN "." MAIN_VERSION ${MAIN_VERSION} )
# Extract Git revision order number, used as last part of version
find_package( Git )
set( GIT_REVISION "0" )
if( Git_FOUND )
execute_process( COMMAND "${GIT_EXECUTABLE}" rev-list HEAD --count
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_REVISION
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()
project( ByeDPI project( ByeDPI
VERSION 12 VERSION "${MAIN_VERSION}.${GIT_REVISION}"
DESCRIPTION "Local SOCKS proxy server to bypass DPI (Deep Packet Inspection)." DESCRIPTION "Local SOCKS proxy server to bypass DPI (Deep Packet Inspection)."
HOMEPAGE_URL "https://github.com/hufrea/byedpi" HOMEPAGE_URL "https://github.com/hufrea/byedpi"
LANGUAGES C LANGUAGES C
) )
set( PROJECT_VENDOR "GitHub" ) set( PROJECT_VENDOR "hufrea" )
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY "$<CONFIG>" )
add_compile_options( -D_XOPEN_SOURCE=500 )
add_compile_definitions( _XOPEN_SOURCE=500 )
# Optimizations # Optimizations
add_compile_options( $<$<NOT:$<CONFIG:Debug>>:-O3> ) add_compile_options( $<$<NOT:$<CONFIG:Debug>>:-O3> )
# Link time optimizations # Link time optimizations
@ -23,60 +47,70 @@ add_link_options( $<$<NOT:$<CONFIG:Debug>>:-s> )
include_directories( . ) include_directories( . )
set( SOURCES set( SOURCES
packets.c packets.c
main.c main.c
conev.c conev.c
proxy.c proxy.c
desync.c desync.c
mpool.c mpool.c
extend.c extend.c
) )
if( WIN32 ) if( WIN32 )
list( APPEND SOURCES list( APPEND SOURCES
win_service.c win_service.c
) )
link_libraries( link_libraries(
ws2_32 ws2_32
mswsock mswsock
) )
endif() endif()
add_executable( ciadpi ${SOURCES} ) add_executable( ciadpi ${SOURCES} )
# Installer # Installer
set( CPACK_VERBATIM_VARIABLES ON ) set( CPACK_VERBATIM_VARIABLES ON )
set( CPACK_STRIP_FILES ON ) set( CPACK_STRIP_FILES ON )
set( CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF ) set( CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF )
set( CPACK_PACKAGE_NAME ${PROJECT_NAME} ) set( CPACK_PACKAGE_NAME ${PROJECT_NAME} )
set( CPACK_PACKAGE_VENDOR ${PROJECT_VENDOR} ) set( CPACK_PACKAGE_VENDOR ${PROJECT_VENDOR} )
set( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_NAME} ) set( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_NAME} )
set( CPACK_PACKAGE_DESCRIPTION ${PROJECT_DESCRIPTION} ) set( CPACK_PACKAGE_DESCRIPTION ${PROJECT_DESCRIPTION} )
set( CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME} ) set( CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME} )
set( CPACK_PACKAGE_CONTACT ${PROJECT_VENDOR} ) set( CPACK_PACKAGE_CONTACT ${PROJECT_VENDOR} )
set( CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE ) set( CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE )
include( GNUInstallDirs ) include( GNUInstallDirs )
if( WIN32 ) if( WIN32 )
# NSIS package - https://sourceforge.net/projects/nsis/ # NSIS package - https://sourceforge.net/projects/nsis/
list( APPEND CPACK_GENERATOR NSIS ) list( APPEND CPACK_GENERATOR NSIS )
set( CPACK_NSIS_MENU_LINKS set( CPACK_NSIS_MENU_LINKS
"readme.txt" "Read Me" "readme.txt" "Read Me"
"byedpi.bat" "Run standalone" "byedpi.bat" "Run standalone"
"proxy_reset.bat" "Proxy reset" "proxy_reset.bat" "Proxy reset"
"proxy_set.bat" "Proxy setup" "proxy_set.bat" "Proxy setup"
"service_delete.bat" "Service delete" "service_delete.bat" "Service delete"
"service_install.bat" "Service install and run" "service_install.bat" "Service install and run"
"service_restart.bat" "Service restart" "service_restart.bat" "Service restart"
) )
set( CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "ExecWait \"sc stop ${PROJECT_NAME}\"" ) file( WRITE "${CMAKE_BINARY_DIR}/ver.nsi" "VIProductVersion ${PROJECT_VERSION}\n" )
set( CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecWait \"$INSTDIR\\service_install.bat\"" ) file( APPEND "${CMAKE_BINARY_DIR}/ver.nsi" "VIAddVersionKey /LANG=0 \"ProductName\" \"${PROJECT_NAME}\"\n" )
set( CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "ExecWait \"$INSTDIR\\service_delete.bat\"" ) file( APPEND "${CMAKE_BINARY_DIR}/ver.nsi" "VIAddVersionKey /LANG=0 \"FileDescription\" \"${PROJECT_DESCRIPTION}\"\n" )
set( CMAKE_INSTALL_BINDIR . ) file( APPEND "${CMAKE_BINARY_DIR}/ver.nsi" "VIAddVersionKey /LANG=0 \"CompanyName\" \"${PROJECT_VENDOR}\"\n" )
set( CMAKE_INSTALL_DOCDIR . ) file( APPEND "${CMAKE_BINARY_DIR}/ver.nsi" "VIAddVersionKey /LANG=0 \"FileVersion\" \"${PROJECT_VERSION}\"\n" )
set( CPACK_NSIS_EXECUTABLE_PRE_ARGUMENTS "V0 ${CMAKE_BINARY_DIR}/ver.nsi" )
set( CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "ExecWait \"sc stop ${PROJECT_NAME}\"" )
set( CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecWait \"$INSTDIR\\service_install.bat\"" )
set( CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "ExecWait \"$INSTDIR\\service_delete.bat\"" )
set( CPACK_NSIS_CONTACT "${PROJECT_VENDOR}" )
set( CPACK_NSIS_HELP_LINK "${PROJECT_HOMEPAGE_URL}" )
set( CPACK_NSIS_URL_INFO_ABOUT "${PROJECT_HOMEPAGE_URL}" )
set( CPACK_NSIS_BRANDING_TEXT " " )
set( CMAKE_INSTALL_BINDIR . )
set( CMAKE_INSTALL_DOCDIR . )
else() else()
# Debian package # Debian package
list( APPEND CPACK_GENERATOR DEB ) list( APPEND CPACK_GENERATOR DEB )
endif() endif()
# Zip package # Zip package
@ -85,22 +119,22 @@ list( APPEND CPACK_GENERATOR ZIP )
include( CPack ) include( CPack )
install( TARGETS ciadpi install( TARGETS ciadpi
RUNTIME RUNTIME
) )
install( FILES install( FILES
readme.txt readme.txt
TYPE DOC TYPE DOC
) )
if( WIN32 ) if( WIN32 )
install( FILES install( FILES
dist/windows/byedpi.bat dist/windows/byedpi.bat
dist/windows/proxy_reset.bat dist/windows/proxy_reset.bat
dist/windows/proxy_set.bat dist/windows/proxy_set.bat
dist/windows/service_delete.bat dist/windows/service_delete.bat
dist/windows/service_install.bat dist/windows/service_install.bat
dist/windows/service_restart.bat dist/windows/service_restart.bat
TYPE BIN TYPE BIN
) )
endif() endif()