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:
parent
5464319124
commit
37d0c28832
160
CMakeLists.txt
160
CMakeLists.txt
@ -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()
|
||||||
|
Loading…
Reference in New Issue
Block a user