mirror of https://github.com/OpenVPN/openvpn-gui
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.
172 lines
4.3 KiB
172 lines
4.3 KiB
option(CLI_OVPN3 "Build ${PROJECT_NAME} with OpenVPN3 support" OFF) |
|
|
|
cmake_minimum_required(VERSION 3.10) |
|
|
|
if(NOT VCPKG_MANIFEST_DIR) |
|
set(VCPKG_MANIFEST_DIR ${CMAKE_SOURCE_DIR}/vcpkg_manifests/openssl_3) |
|
endif() |
|
|
|
project(openvpn-gui C CXX) |
|
|
|
add_executable(${PROJECT_NAME} WIN32 |
|
access.c |
|
echo.c |
|
env_set.c |
|
localization.c |
|
main.c |
|
manage.c |
|
misc.c |
|
openvpn.c |
|
openvpn_config.c |
|
options.c |
|
passphrase.c |
|
proxy.c |
|
registry.c |
|
save_pass.c |
|
scripts.c |
|
service.c |
|
tray.c |
|
viewlog.c |
|
as.c |
|
pkcs11.c |
|
config_parser.c |
|
res/openvpn-gui-res.rc) |
|
|
|
find_package(OpenSSL REQUIRED) |
|
|
|
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG") |
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /guard:cf /Qspectre") |
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /guard:cf /DYNAMICBASE") |
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996 /wd4267 /wd4244") |
|
|
|
if(NOT (${CMAKE_C_COMPILER_ARCHITECTURE_ID} STREQUAL "ARM64")) |
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /CETCOMPAT") |
|
endif() |
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE |
|
OpenSSL::SSL |
|
Wtsapi32.lib |
|
Netapi32.lib |
|
ws2_32.lib |
|
Winhttp.lib |
|
Secur32.lib |
|
Comctl32.lib |
|
Crypt32.lib |
|
Shlwapi.lib |
|
Advapi32.lib |
|
Shell32.lib |
|
Gdi32.lib |
|
Comdlg32.lib |
|
Ole32.lib |
|
Cryptui.lib |
|
Wininet.lib) |
|
|
|
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) |
|
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO") |
|
set(CMAKE_RC_FLAGS "/D \"HAVE_CONFIG_H\" /D \"_MSC_VER\"") |
|
|
|
function(get_version_from_configure regex_arg ret) |
|
file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/configure.ac" VERSION_STR REGEX ${regex_arg}) |
|
string(REGEX MATCH ${regex_arg} VERSION_STR "${VERSION_STR}") |
|
set("${ret}" ${CMAKE_MATCH_1} PARENT_SCOPE) |
|
endfunction() |
|
|
|
get_version_from_configure("_GUI_VERSION_MAJOR\\], \\[([0-9]+)\\]" GUI_VERSION_MAJOR) |
|
get_version_from_configure("_GUI_VERSION_MINOR\\], \\[([0-9]+)\\]" GUI_VERSION_MINOR) |
|
|
|
configure_file(config-msvc.h.in config.h) |
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE |
|
_UNICODE |
|
UNICODE |
|
WIN32_LEAN_AND_MEAN |
|
HAVE_CONFIG_H) |
|
|
|
if (${CLI_OVPN3}) |
|
find_package(json-c REQUIRED) |
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE |
|
json-c::json-c) |
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE |
|
ENABLE_OVPN3) |
|
endif () |
|
|
|
if (NOT PROJECT_NAME_PLAP) |
|
set(PROJECT_NAME_PLAP "libopenvpn_plap") |
|
endif() |
|
|
|
add_library(${PROJECT_NAME_PLAP} SHARED |
|
localization.c |
|
manage.c |
|
misc.c |
|
openvpn.c |
|
openvpn_config.c |
|
options.c |
|
proxy.c |
|
pkcs11.c |
|
registry.c |
|
config_parser.c |
|
service.c |
|
plap/ui_glue.c |
|
plap/stub.c |
|
plap/plap_common.c |
|
plap/plap_provider.c |
|
plap/plap_connection.c |
|
plap/plap_dll.c |
|
plap/openvpn_plap.def |
|
plap/openvpn-plap-res.rc) |
|
|
|
target_link_libraries(${PROJECT_NAME_PLAP} PRIVATE |
|
ws2_32.lib |
|
Comctl32.lib |
|
Winhttp.lib |
|
Crypt32.lib |
|
Ole32.lib |
|
Shlwapi.lib |
|
Secur32.lib |
|
Gdi32.lib |
|
Cryptui.lib |
|
Rpcrt4.lib) |
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /MANIFEST:NO") |
|
target_include_directories(${PROJECT_NAME_PLAP} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}) |
|
target_compile_definitions(${PROJECT_NAME_PLAP} PRIVATE |
|
_UNICODE |
|
UNICODE |
|
WIN32_LEAN_AND_MEAN |
|
HAVE_CONFIG_H) |
|
|
|
if (NOT TEST_PLAP_EXE) |
|
set(TEST_PLAP_EXE "test_plap") |
|
endif() |
|
|
|
add_executable(${TEST_PLAP_EXE} |
|
plap/test_plap.cpp |
|
plap/plap_common.c) |
|
|
|
target_link_libraries(${TEST_PLAP_EXE} PRIVATE |
|
Rpcrt4 |
|
Ole32 |
|
Gdi32) |
|
|
|
target_include_directories(${TEST_PLAP_EXE} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}) |
|
target_compile_definitions(${TEST_PLAP_EXE} PRIVATE |
|
_UNICODE |
|
UNICODE |
|
WIN32_LEAN_AND_MEAN |
|
HAVE_CONFIG_H) |
|
|
|
if(MSVC) |
|
# work around msvc generator Debug/Release directory ugliness, doesn't apply for Ninja |
|
set_target_properties(${PROJECT_NAME} ${PROJECT_NAME_PLAP} ${TEST_PLAP_EXE} PROPERTIES |
|
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<0:> |
|
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<0:> |
|
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<0:>) |
|
endif(MSVC) |
|
|
|
set_target_properties(${TEST_PLAP_EXE} PROPERTIES |
|
LINK_FLAGS " /MANIFEST:EMBED /MANIFESTINPUT:${CMAKE_SOURCE_DIR}/plap/test-plap.manifest ")
|
|
|