You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

98 lines
3.1 KiB

CMAKE_MINIMUM_REQUIRED(VERSION 3.11)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
include(Hardening)
include(VersionFromGit)
PROJECT(GoodbyeDPI)
set(CMAKE_USE_RELATIVE_PATHS TRUE)
set(PACKAGE_NAME "GoodbyeDPI" CACHE STRING "Program name")
set(PACKAGE_VERSION ${VERSION})
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
getVersionFromGit(GoodbyeDPI "v0.1.5")
if(${CMAKE_SYSTEM_NAME} MATCHES "Darvin")
set(MACOS TRUE)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(LINUX TRUE)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
set(FREEBSD TRUE)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(WINDOWS TRUE)
endif()
set(Source_dir "${CMAKE_CURRENT_SOURCE_DIR}/src")
set(Utils_dir "${CMAKE_CURRENT_SOURCE_DIR}/src/utils")
set(CMake_Misc_Dir "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
file(GLOB_RECURSE SRCFILES "${Source_dir}/*.c" "${Source_dir}/*.cpp")
find_package(WinDivert REQUIRED)
include_directories(GoodbyeDPI "${WinDivert_INCLUDE_DIR}")
#making resource file
set(rc_script_name "goodbyedpi-rc.rc")
set(rc_script "${Source_dir}/${rc_script_name}")
set(rc_script_proto "${CMake_Misc_Dir}/${rc_script_name}.in")
set(license_file "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
file(READ ${license_file} LICENSE_TEXT)
string(REPLACE "\"" "\"\"" LICENSE_TEXT ${LICENSE_TEXT})
string(REPLACE "\r\n" "\n" LICENSE_TEXT ${LICENSE_TEXT})
string(REPLACE "\n" "\\r\\n" LICENSE_TEXT ${LICENSE_TEXT})
message(STATUS "generating resources: ${rc_script_proto} -> ${rc_script}")
configure_file(${rc_script_proto} ${rc_script})
file(GLOB_RECURSE resource_files "${Source_dir}/*.rc" "${Source_dir}/*.ico")
if(MSVC_IDE)
file(GLOB_RECURSE HDRFILES "${Source_dir}/*.h")
endif()
# config.h
set(CONFIG_FILENAME "config.h")
set(CONFIG_FILE "${Source_dir}/${CONFIG_FILENAME}")
mark_as_advanced(CONFIG_FILE)
set(CONFIG_FILE_PROTO "${CMake_Misc_Dir}/${CONFIG_FILENAME}.in")
set(GoodbyeDPI_SERVICE_NAME "${PACKAGE_NAME}" CACHE STRING "Service name")
set(GoodbyeDPI_HOST_MAXLEN 253 CACHE INTEGER "Max length of a host")
set(GoodbyeDPI_MAX_FILTERS 4 CACHE INTEGER "Max length of a host")
set(GoodbyeDPI_MAX_PACKET_SIZE 9016 CACHE INTEGER "Max length of a host")
set(GoodbyeDPI_DEBUG ${GoodbyeDPI_DEBUG} CACHE BOOL "Enable debug output")
mark_as_advanced(GoodbyeDPI_SERVICE_NAME, GoodbyeDPI_HOST_MAXLEN)
message(STATUS "generating config: ${CONFIG_FILE_PROTO} -> ${CONFIG_FILE}")
configure_file(${CONFIG_FILE_PROTO} ${CONFIG_FILE})
add_executable(GoodbyeDPI "${SRCFILES}" "${HDRFILES}" "${resource_files}")
target_link_libraries(GoodbyeDPI "${WinDivert_LIBRARY_PATH}")
harden(GoodbyeDPI)
if(MINGW)
target_link_libraries(GoodbyeDPI "wsock32" "ws2_32" "ssp")
elseif(MSVC)
else()
message(FATAL_ERROR "The compiler is not supported")
endif()
set(RESOURCE_FILES
resourcefile.txt
appresourcedir/appres.txt
)
if(MSVC_IDE)
source_group("res" FILES ${resource_files})
endif()
if(MSVC)
set_source_files_properties(${SRCFILES} PROPERTIES LANGUAGE CXX)
else(MSVC)
#set_source_files_properties(${SRCFILES} PROPERTIES LANGUAGE CXX)
endif(MSVC)
#target_compile_features(GoodbyeDPI PUBLIC cxx_decltype_auto)