1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2024-11-22 17:39:53 +03:00

Merge PR #769: CMake: add support for Windows (Visual C++ 2017 toolset)

This commit is contained in:
Davide Beatrici 2018-10-24 21:43:45 +02:00 committed by GitHub
commit ef6b15bda2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 443 additions and 190 deletions

View File

@ -2,11 +2,13 @@ version: '{build}'
image: image:
- Visual Studio 2015 - Visual Studio 2015
- Visual Studio 2017
- Ubuntu1604 - Ubuntu1604
- Ubuntu1804 - Ubuntu1804
skip_branch_with_pr: true configuration: Release
skip_branch_with_pr: true
clone_depth: 1 clone_depth: 1
init: init:
@ -14,20 +16,58 @@ init:
install: git submodule update --init --recursive install: git submodule update --init --recursive
build_script: for:
- cmd: >- -
src\BuildAll.cmd matrix:
exit %errorlevel% only:
- sh: >- - image: Visual Studio 2015
./configure && make package -C tmp build_script:
- src\BuildAll.cmd
sudo dpkg -i build/softether-vpn*.deb - exit %errorlevel%
artifacts:
sudo systemctl restart softether-vpnserver - path: output\pkg\*\*
name: Windows
artifacts: -
- path: output\pkg\*\* matrix:
name: Windows only:
- image: Visual Studio 2017
- path: build/*.deb init:
name: Ubuntu - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
before_build:
- configure
build_script:
- nmake
after_build:
- 7z a "%APPVEYOR_BUILD_FOLDER%\build\%APPVEYOR_PROJECT_NAME%_%APPVEYOR_BUILD_VERSION%_Windows_x64_%CONFIGURATION%.zip" "%APPVEYOR_BUILD_FOLDER%\build\*.exe"
- 7z a "%APPVEYOR_BUILD_FOLDER%\build\%APPVEYOR_PROJECT_NAME%_%APPVEYOR_BUILD_VERSION%_Windows_x64_%CONFIGURATION%.zip" "%APPVEYOR_BUILD_FOLDER%\build\hamcore.se2"
artifacts:
- path: build\%APPVEYOR_PROJECT_NAME%_%APPVEYOR_BUILD_VERSION%_Windows_x64_%CONFIGURATION%.zip
name: Windows
-
matrix:
only:
- image: Ubuntu1604
before_build:
- ./configure
build_script:
- make package -C tmp
after_build:
- sudo dpkg -i build/softether-vpn*.deb
- sudo systemctl restart softether-vpnserver
artifacts:
- path: build/*.deb
name: Ubuntu
-
matrix:
only:
- image: Ubuntu1804
before_build:
- ./configure
build_script:
- make package -C tmp
after_build:
- sudo dpkg -i build/softether-vpn*.deb
- sudo systemctl restart softether-vpnserver
artifacts:
- path: build/*.deb
name: Ubuntu

7
.gitmodules vendored
View File

@ -1,3 +1,6 @@
[submodule "src/Mayaqua/cpu_features"] [submodule "src/Mayaqua/3rdparty/cpu_features"]
path = src/Mayaqua/cpu_features path = src/Mayaqua/3rdparty/cpu_features
url = https://github.com/google/cpu_features.git url = https://github.com/google/cpu_features.git
[submodule "src/Mayaqua/3rdparty/zlib"]
path = src/Mayaqua/3rdparty/zlib
url = https://github.com/madler/zlib.git

View File

@ -8,7 +8,7 @@ project(SoftEtherVPN
set(default_build_type "Release") set(default_build_type "Release")
# Check that submodules are present only if source was downloaded with git # Check that submodules are present only if source was downloaded with git
if(EXISTS "${SoftEtherVPN_SOURCE_DIR}/.git" AND NOT EXISTS "${SoftEtherVPN_SOURCE_DIR}/src/Mayaqua/cpu_features/CMakeLists.txt") if(EXISTS "${SoftEtherVPN_SOURCE_DIR}/.git" AND NOT EXISTS "${SoftEtherVPN_SOURCE_DIR}/src/Mayaqua/3rdparty/cpu_features/CMakeLists.txt")
message (FATAL_ERROR "Submodules are not initialized. Run\n\tgit submodule update --init --recursive") message (FATAL_ERROR "Submodules are not initialized. Run\n\tgit submodule update --init --recursive")
endif() endif()
@ -22,15 +22,17 @@ string(REGEX REPLACE "VERSION_MINOR ([0-9]+)" "\\1" CurrentBuild_MINOR ${temp})
string(REGEX MATCH "VERSION_BUILD ([0-9]+)" temp ${CurrentBuild}) string(REGEX MATCH "VERSION_BUILD ([0-9]+)" temp ${CurrentBuild})
string(REGEX REPLACE "VERSION_BUILD ([0-9]+)" "\\1" CurrentBuild_BUILD ${temp}) string(REGEX REPLACE "VERSION_BUILD ([0-9]+)" "\\1" CurrentBuild_BUILD ${temp})
if (NOT ${PROJECT_VERSION} VERSION_EQUAL "${CurrentBuild_MAJOR}.${CurrentBuild_MINOR}.${CurrentBuild_BUILD}") if(NOT ${PROJECT_VERSION} VERSION_EQUAL "${CurrentBuild_MAJOR}.${CurrentBuild_MINOR}.${CurrentBuild_BUILD}")
message (FATAL_ERROR "PROJECT_VERSION does not match to src/CurrentBuild.txt") message (FATAL_ERROR "PROJECT_VERSION does not match to src/CurrentBuild.txt")
endif() endif()
include(GNUInstallDirs) if(UNIX)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") include(GNUInstallDirs)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
include(CheckIncludeFile) include(CheckIncludeFile)
Check_Include_File(sys/auxv.h HAVE_SYS_AUXV) Check_Include_File(sys/auxv.h HAVE_SYS_AUXV)
endif()
configure_file("${SoftEtherVPN_SOURCE_DIR}/AUTHORS.TXT" "${SoftEtherVPN_SOURCE_DIR}/src/bin/hamcore/authors.txt" COPYONLY) configure_file("${SoftEtherVPN_SOURCE_DIR}/AUTHORS.TXT" "${SoftEtherVPN_SOURCE_DIR}/src/bin/hamcore/authors.txt" COPYONLY)
@ -39,31 +41,32 @@ set(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
add_subdirectory(src) add_subdirectory(src)
# Packaging if(UNIX)
set(CPACK_COMPONENTS_ALL common vpnserver vpnclient vpnbridge vpncmd) # Packaging
set(CPACK_PACKAGE_DIRECTORY ${BUILD_DIRECTORY}) set(CPACK_COMPONENTS_ALL common vpnserver vpnclient vpnbridge vpncmd)
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) set(CPACK_PACKAGE_DIRECTORY ${BUILD_DIRECTORY})
set(CPACK_PACKAGE_VENDOR "SoftEther") set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
set(CPACK_PACKAGE_NAME "softether") set(CPACK_PACKAGE_VENDOR "SoftEther")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${SoftEtherVPN_SOURCE_DIR}/description") set(CPACK_PACKAGE_NAME "softether")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "SoftEther VPN is an open-source cross-platform multi-protocol VPN program, created as an academic project in the University of Tsukuba.") set(CPACK_PACKAGE_DESCRIPTION_FILE "${SoftEtherVPN_SOURCE_DIR}/description")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "SoftEther VPN is an open-source cross-platform multi-protocol VPN program, created as an academic project in the University of Tsukuba.")
# DEB # DEB
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CPACK_DEBIAN_PACKAGE_DEBUG ON)
endif()
if(CMAKE_BUILD_TYPE STREQUAL "Debug") set(CPACK_DEB_COMPONENT_INSTALL ON)
set(CPACK_DEBIAN_PACKAGE_DEBUG ON) set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
set(CPACK_DEBIAN_PACKAGE_SECTION "net")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Unknown")
# RPM
set(CPACK_RPM_COMPONENT_INSTALL ON)
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
set(CPACK_RPM_PACKAGE_GROUP "Applications/Internet")
set(CPACK_RPM_PACKAGE_LICENSE "GPLv2")
include(CPack)
endif() endif()
set(CPACK_DEB_COMPONENT_INSTALL ON)
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
set(CPACK_DEBIAN_PACKAGE_SECTION "net")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Unknown")
# RPM
set(CPACK_RPM_COMPONENT_INSTALL ON)
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
set(CPACK_RPM_PACKAGE_GROUP "Applications/Internet")
set(CPACK_RPM_PACKAGE_LICENSE "GPLv2")
include(CPack)

33
configure.cmd Normal file
View File

@ -0,0 +1,33 @@
@echo off
echo ---------------------------------------------------------------------
echo SoftEther VPN for Windows
echo.
echo Copyright (c) SoftEther VPN Project at University of Tsukuba, Japan.
echo Copyright (c) Daiyuu Nobori. All Rights Reserved.
echo.
echo This program is free software; you can redistribute it and/or
echo modify it under the terms of the GNU General Public License
echo version 2 as published by the Free Software Foundation.
echo.
echo Read and understand README.TXT, LICENSE.TXT and WARNING.TXT before use.
echo ---------------------------------------------------------------------
echo.
echo Welcome to the corner-cutting configure script !
echo.
if not exist "tmp" (
mkdir tmp
)
cd tmp
cmake -DCMAKE_BUILD_TYPE=Release -G "NMake Makefiles" ..
if %errorlevel% == 0 (
echo.
echo The Makefile is generated. Run 'nmake' to build SoftEther VPN.
) else (
cd ..
)

View File

@ -1,18 +1,20 @@
# Creates wrapper scripts and installs them in the user's binaries directory, which is usually "/usr/local/bin". if(UNIX)
# This is required because symlinks use the folder they are in as working directory. # Creates wrapper scripts and installs them in the user's binaries directory, which is usually "/usr/local/bin".
macro(install_wrapper_script component target) # This is required because symlinks use the folder they are in as working directory.
get_filename_component(file_name ${target} NAME) macro(install_wrapper_script component target)
get_filename_component(file_name ${target} NAME)
file(WRITE ${CMAKE_SOURCE_DIR}/tmp/script/${file_name} "#!/bin/sh\n") file(WRITE ${CMAKE_SOURCE_DIR}/tmp/script/${file_name} "#!/bin/sh\n")
file(APPEND ${CMAKE_SOURCE_DIR}/tmp/script/${file_name} "${target} \"$@\"\n") file(APPEND ${CMAKE_SOURCE_DIR}/tmp/script/${file_name} "${target} \"$@\"\n")
file(APPEND ${CMAKE_SOURCE_DIR}/tmp/script/${file_name} "exit $?\n") file(APPEND ${CMAKE_SOURCE_DIR}/tmp/script/${file_name} "exit $?\n")
install(FILES ${CMAKE_SOURCE_DIR}/tmp/script/${file_name} install(FILES ${CMAKE_SOURCE_DIR}/tmp/script/${file_name}
COMPONENT ${component} COMPONENT ${component}
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} DESTINATION ${CMAKE_INSTALL_FULL_BINDIR}
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
) )
endmacro(install_wrapper_script) endmacro(install_wrapper_script)
endif()
if(CMAKE_BUILD_TYPE STREQUAL "Debug") if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-D_DEBUG -DDEBUG) add_definitions(-D_DEBUG -DDEBUG)
@ -23,7 +25,10 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release")
endif() endif()
if(CMAKE_SIZEOF_VOID_P EQUAL 8) if(CMAKE_SIZEOF_VOID_P EQUAL 8)
add_definitions(-DCPU_64) set(COMPILER_ARCHITECTURE "x64")
add_definitions(-DCPU_64)
else()
set(COMPILER_ARCHITECTURE "x86")
endif() endif()
add_definitions(-D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_SAFE -DTHREADSAFE -D_FILE_OFFSET_BITS=64) add_definitions(-D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_SAFE -DTHREADSAFE -D_FILE_OFFSET_BITS=64)
@ -32,7 +37,7 @@ add_definitions(-D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_S
include_directories(.) include_directories(.)
if(WIN32) if(WIN32)
message(FATAL_ERROR "Windows compilation via CMake is currently not supported.") add_definitions(-DWIN32 -D_WINDOWS -D_CRT_SECURE_NO_WARNINGS)
endif() endif()
if(UNIX) if(UNIX)
@ -103,11 +108,25 @@ add_custom_target(hamcore-archive-build
VERBATIM VERBATIM
) )
# Print message after installing the targets if(WIN32)
install(CODE "message(\"\n----------------------------------------------------------------------------------------------------------------------------\")") # PenCore
install(CODE "message(\"Build completed successfully.\n\")") add_subdirectory(PenCore)
install(CODE "message(\"Execute 'vpnserver start' to run the SoftEther VPN Server background service.\")") add_dependencies(hamcore-archive-build PenCore)
install(CODE "message(\"Execute 'vpnbridge start' to run the SoftEther VPN Bridge background service.\")")
install(CODE "message(\"Execute 'vpnclient start' to run the SoftEther VPN Client background service.\")") # vpnsmgr
install(CODE "message(\"Execute 'vpncmd' to run the SoftEther VPN Command-Line Utility to configure VPN Server, VPN Bridge or VPN Client.\")") add_subdirectory(vpnsmgr)
install(CODE "message(\"----------------------------------------------------------------------------------------------------------------------------\n\")")
# vpncmgr
add_subdirectory(vpncmgr)
endif()
if(UNIX)
# Print message after installing the targets
install(CODE "message(\"\n----------------------------------------------------------------------------------------------------------------------------\")")
install(CODE "message(\"Build completed successfully.\n\")")
install(CODE "message(\"Execute 'vpnserver start' to run the SoftEther VPN Server background service.\")")
install(CODE "message(\"Execute 'vpnbridge start' to run the SoftEther VPN Bridge background service.\")")
install(CODE "message(\"Execute 'vpnclient start' to run the SoftEther VPN Client background service.\")")
install(CODE "message(\"Execute 'vpncmd' to run the SoftEther VPN Command-Line Utility to configure VPN Server, VPN Bridge or VPN Client.\")")
install(CODE "message(\"----------------------------------------------------------------------------------------------------------------------------\n\")")
endif()

View File

@ -1,7 +1,16 @@
file(GLOB SOURCES_CEDAR "*.c") file(GLOB SOURCES_CEDAR "*.c")
file(GLOB HEADERS_CEDAR "*.h") file(GLOB HEADERS_CEDAR "*.h")
add_library(cedar SHARED ${SOURCES_CEDAR} ${HEADERS_CEDAR}) if(WIN32)
enable_language(CXX)
file(GLOB SOURCES_CEDAR_CPP "*.cpp")
endif()
if(WIN32)
add_library(cedar STATIC ${SOURCES_CEDAR} ${SOURCES_CEDAR_CPP} ${HEADERS_CEDAR})
else()
add_library(cedar SHARED ${SOURCES_CEDAR} ${SOURCES_CEDAR_CPP} ${HEADERS_CEDAR})
endif()
set_target_properties(cedar set_target_properties(cedar
PROPERTIES PROPERTIES
@ -10,13 +19,19 @@ set_target_properties(cedar
RUNTIME_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" RUNTIME_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}"
) )
find_library(LIB_READLINE readline) if(WIN32)
find_package(Curses REQUIRED) target_include_directories(cedar PRIVATE winpcap)
endif()
target_link_libraries(cedar PRIVATE ${LIB_READLINE} ${CURSES_LIBRARIES}) if(UNIX)
find_library(LIB_READLINE readline)
find_package(Curses REQUIRED)
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") target_link_libraries(cedar PRIVATE ${LIB_READLINE} ${CURSES_LIBRARIES})
target_link_libraries(cedar PRIVATE mayaqua pcap)
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
target_link_libraries(cedar PRIVATE mayaqua pcap)
endif()
endif() endif()
# Version # Version
@ -55,8 +70,10 @@ message(STATUS "Build time: ${BUILD_HOUR}:${BUILD_MINUTE}:${BUILD_SECOND}")
add_definitions(-DBUILD_DATE_D=${BUILD_DAY} -DBUILD_DATE_M=${BUILD_MONTH} -DBUILD_DATE_Y=${BUILD_YEAR}) add_definitions(-DBUILD_DATE_D=${BUILD_DAY} -DBUILD_DATE_M=${BUILD_MONTH} -DBUILD_DATE_Y=${BUILD_YEAR})
add_definitions(-DBUILD_DATE_HO=${BUILD_HOUR} -DBUILD_DATE_MI=${BUILD_MINUTE} -DBUILD_DATE_SE=${BUILD_SECOND}) add_definitions(-DBUILD_DATE_HO=${BUILD_HOUR} -DBUILD_DATE_MI=${BUILD_MINUTE} -DBUILD_DATE_SE=${BUILD_SECOND})
install(TARGETS cedar if(UNIX)
COMPONENT "common" install(TARGETS cedar
DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT "common"
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ DESTINATION "${CMAKE_INSTALL_LIBDIR}"
) PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
endif()

1
src/Mayaqua/3rdparty/zlib vendored Submodule

@ -0,0 +1 @@
Subproject commit cacf7f1d4e3d44d871b605da3b647f07d718623f

View File

@ -1,7 +1,11 @@
file(GLOB SOURCES_MAYAQUA "*.c") file(GLOB SOURCES_MAYAQUA "*.c")
file(GLOB HEADERS_MAYAQUA "*.h") file(GLOB HEADERS_MAYAQUA "*.h")
add_library(mayaqua SHARED ${SOURCES_MAYAQUA} ${HEADERS_MAYAQUA}) if(WIN32)
add_library(mayaqua STATIC ${SOURCES_MAYAQUA} ${HEADERS_MAYAQUA})
else()
add_library(mayaqua SHARED ${SOURCES_MAYAQUA} ${HEADERS_MAYAQUA})
endif()
target_include_directories(mayaqua PUBLIC .) target_include_directories(mayaqua PUBLIC .)
@ -12,43 +16,72 @@ set_target_properties(mayaqua
RUNTIME_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" RUNTIME_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}"
) )
find_package(OpenSSL REQUIRED) if(WIN32)
find_package(Threads REQUIRED) add_subdirectory(3rdparty/zlib)
find_package(ZLIB REQUIRED)
# In some cases libiconv is not included in libc target_include_directories(mayaqua PRIVATE win32_inc)
find_library(LIB_ICONV iconv) target_include_directories(mayaqua PRIVATE 3rdparty/zlib)
if(HAVE_SYS_AUXV) if(${COMPILER_ARCHITECTURE} STREQUAL "x64")
add_subdirectory(cpu_features) find_library(LIB_SSL
set_property(TARGET cpu_features PROPERTY POSITION_INDEPENDENT_CODE ON) NAMES libssl ssleay32
HINTS "${CMAKE_SOURCE_DIR}/src/BuildFiles/Library/vs2017/x64_${CMAKE_BUILD_TYPE}"
)
find_library(LIB_CRYPTO
NAMES libcrypto libeay32
HINTS "${CMAKE_SOURCE_DIR}/src/BuildFiles/Library/vs2017/x64_${CMAKE_BUILD_TYPE}"
)
else()
find_library(LIB_SSL
NAMES libssl ssleay32
HINTS "${CMAKE_SOURCE_DIR}/src/BuildFiles/Library/vs2017/Win32_${CMAKE_BUILD_TYPE}"
)
find_library(LIB_CRYPTO
NAMES libcrypto libeay32
HINTS "${CMAKE_SOURCE_DIR}/src/BuildFiles/Library/vs2017/Win32_${CMAKE_BUILD_TYPE}"
)
endif()
target_link_libraries(mayaqua PRIVATE zlibstatic ${LIB_SSL} ${LIB_CRYPTO})
endif() endif()
target_include_directories(mayaqua PRIVATE cpu_features/include) if(UNIX)
find_package(OpenSSL REQUIRED)
find_package(Threads REQUIRED)
find_package(ZLIB REQUIRED)
target_link_libraries(mayaqua PRIVATE OpenSSL::SSL OpenSSL::Crypto Threads::Threads ZLIB::ZLIB) # In some cases libiconv is not included in libc
find_library(LIB_ICONV iconv)
if(HAVE_SYS_AUXV) find_library(LIB_RT rt)
target_link_libraries(mayaqua PRIVATE cpu_features)
else() target_link_libraries(mayaqua PRIVATE OpenSSL::SSL OpenSSL::Crypto Threads::Threads ZLIB::ZLIB)
add_definitions(-DSKIP_CPU_FEATURES)
if(HAVE_SYS_AUXV)
add_subdirectory(3rdparty/cpu_features)
set_property(TARGET cpu_features PROPERTY POSITION_INDEPENDENT_CODE ON)
target_link_libraries(mayaqua PRIVATE cpu_features)
else()
add_definitions(-DSKIP_CPU_FEATURES)
endif()
if(LIB_RT)
target_link_libraries(mayaqua PRIVATE rt)
endif()
if(LIB_ICONV)
target_link_libraries(mayaqua PRIVATE ${LIB_ICONV})
endif()
if(${CMAKE_SYSTEM_NAME} STREQUAL "SunOS")
target_link_libraries(mayaqua PRIVATE nsl socket)
endif()
install(TARGETS mayaqua
COMPONENT "common"
DESTINATION "${CMAKE_INSTALL_LIBDIR}"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
endif() endif()
find_library(LIB_RT rt)
if(LIB_RT)
target_link_libraries(mayaqua PRIVATE ${LIB_RT})
endif()
if(LIB_ICONV)
target_link_libraries(mayaqua PRIVATE ${LIB_ICONV})
endif()
if(${CMAKE_SYSTEM_NAME} STREQUAL "SunOS")
target_link_libraries(mayaqua PRIVATE nsl socket)
endif()
install(TARGETS mayaqua
COMPONENT "common"
DESTINATION "${CMAKE_INSTALL_LIBDIR}"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)

View File

@ -0,0 +1,14 @@
if(NOT WIN32)
message(FATAL_ERROR "PenCore is needed only on Windows.")
endif()
add_library(PenCore SHARED pencore.c pencore.rc)
set_target_properties(PenCore
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/bin/hamcore"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/bin/hamcore"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/bin/hamcore"
)
target_link_libraries(PenCore cedar mayaqua)

View File

@ -164,7 +164,11 @@ int main(int argc, char *argv[])
Print("\nProcessing...\n"); Print("\nProcessing...\n");
#ifdef WIN32
BuildHamcore(dst_filename, src_dir, false);
#else
BuildHamcore(dst_filename, src_dir, true); BuildHamcore(dst_filename, src_dir, true);
#endif
Print("\nDone.\n"); Print("\nDone.\n");
} }

View File

@ -1,4 +1,10 @@
add_executable(vpnbridge vpnbridge.c) set(VPNBRIDGE_SOURCES vpnbridge.c)
if(WIN32)
set(VPNBRIDGE_SOURCES ${VPNBRIDGE_SOURCES} vpnbridge.rc)
endif()
add_executable(vpnbridge ${VPNBRIDGE_SOURCES})
set_target_properties(vpnbridge set_target_properties(vpnbridge
PROPERTIES PROPERTIES
@ -9,25 +15,27 @@ set_target_properties(vpnbridge
target_link_libraries(vpnbridge cedar mayaqua) target_link_libraries(vpnbridge cedar mayaqua)
# Copy binary and "hamcore.se2" to /usr/lib(exec)/softether/, install launch script and systemd service if(UNIX)
install(TARGETS vpnbridge # Copy binary and "hamcore.se2" to /usr/lib(exec)/softether/, install launch script and systemd service
COMPONENT "vpnbridge" install(TARGETS vpnbridge
DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/softether/vpnbridge"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
install(FILES "${BUILD_DIRECTORY}/hamcore.se2"
COMPONENT "vpnbridge"
DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/softether/vpnbridge"
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
install_wrapper_script("vpnbridge" "${CMAKE_INSTALL_FULL_LIBEXECDIR}/softether/vpnbridge/vpnbridge")
if(EXISTS "/lib/systemd/system")
configure_file(${CMAKE_SOURCE_DIR}/systemd/softether-vpnbridge.service ${CMAKE_BINARY_DIR}/systemd/softether-vpnbridge.service)
install(FILES ${CMAKE_BINARY_DIR}/systemd/softether-vpnbridge.service
COMPONENT "vpnbridge" COMPONENT "vpnbridge"
DESTINATION "/lib/systemd/system" DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/softether/vpnbridge"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
install(FILES "${BUILD_DIRECTORY}/hamcore.se2"
COMPONENT "vpnbridge"
DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/softether/vpnbridge"
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
) )
install_wrapper_script("vpnbridge" "${CMAKE_INSTALL_FULL_LIBEXECDIR}/softether/vpnbridge/vpnbridge")
if(EXISTS "/lib/systemd/system")
configure_file(${CMAKE_SOURCE_DIR}/systemd/softether-vpnbridge.service ${CMAKE_BINARY_DIR}/systemd/softether-vpnbridge.service)
install(FILES ${CMAKE_BINARY_DIR}/systemd/softether-vpnbridge.service
COMPONENT "vpnbridge"
DESTINATION "/lib/systemd/system"
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
endif()
endif() endif()

View File

@ -1,4 +1,10 @@
add_executable(vpnclient vpncsvc.c) set(VPNCLIENT_SOURCES vpncsvc.c vpncsvc.h)
if(WIN32)
set(VPNCLIENT_SOURCES ${VPNCLIENT_SOURCES} vpnclient.rc)
endif()
add_executable(vpnclient ${VPNCLIENT_SOURCES})
set_target_properties(vpnclient set_target_properties(vpnclient
PROPERTIES PROPERTIES
@ -9,25 +15,27 @@ set_target_properties(vpnclient
target_link_libraries(vpnclient cedar mayaqua) target_link_libraries(vpnclient cedar mayaqua)
# Copy binary and "hamcore.se2" to /usr/lib(exec)/softether/, install launch script and systemd service if(UNIX)
install(TARGETS vpnclient # Copy binary and "hamcore.se2" to /usr/lib(exec)/softether/, install launch script and systemd service
COMPONENT "vpnclient" install(TARGETS vpnclient
DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/softether/vpnclient"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
install(FILES "${BUILD_DIRECTORY}/hamcore.se2"
COMPONENT "vpnclient"
DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/softether/vpnclient"
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
install_wrapper_script("vpnclient" "${CMAKE_INSTALL_FULL_LIBEXECDIR}/softether/vpnclient/vpnclient")
if(EXISTS "/lib/systemd/system")
configure_file(${CMAKE_SOURCE_DIR}/systemd/softether-vpnclient.service ${CMAKE_BINARY_DIR}/systemd/softether-vpnclient.service)
install(FILES ${CMAKE_BINARY_DIR}/systemd/softether-vpnclient.service
COMPONENT "vpnclient" COMPONENT "vpnclient"
DESTINATION "/lib/systemd/system" DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/softether/vpnclient"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
install(FILES "${BUILD_DIRECTORY}/hamcore.se2"
COMPONENT "vpnclient"
DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/softether/vpnclient"
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
) )
install_wrapper_script("vpnclient" "${CMAKE_INSTALL_FULL_LIBEXECDIR}/softether/vpnclient/vpnclient")
if(EXISTS "/lib/systemd/system")
configure_file(${CMAKE_SOURCE_DIR}/systemd/softether-vpnclient.service ${CMAKE_BINARY_DIR}/systemd/softether-vpnclient.service)
install(FILES ${CMAKE_BINARY_DIR}/systemd/softether-vpnclient.service
COMPONENT "vpnclient"
DESTINATION "/lib/systemd/system"
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
endif()
endif() endif()

View File

@ -1,4 +1,10 @@
add_executable(vpncmd vpncmd.c) set(VPNCMD_SOURCES vpncmd.c)
if(WIN32)
set(VPNCMD_SOURCES ${VPNCMD_SOURCES} vpncmd.rc)
endif()
add_executable(vpncmd ${VPNCMD_SOURCES})
set_target_properties(vpncmd set_target_properties(vpncmd
PROPERTIES PROPERTIES
@ -9,17 +15,19 @@ set_target_properties(vpncmd
target_link_libraries(vpncmd cedar mayaqua) target_link_libraries(vpncmd cedar mayaqua)
# Copy binary and "hamcore.se2" to /usr/lib(exec)/softether/, install launch script if(UNIX)
install(TARGETS vpncmd # Copy binary and "hamcore.se2" to /usr/lib(exec)/softether/, install launch script
COMPONENT "vpncmd" install(TARGETS vpncmd
DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/softether/vpncmd" COMPONENT "vpncmd"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/softether/vpncmd"
) PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
install(FILES "${BUILD_DIRECTORY}/hamcore.se2" install(FILES "${BUILD_DIRECTORY}/hamcore.se2"
COMPONENT "vpncmd" COMPONENT "vpncmd"
DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/softether/vpncmd" DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/softether/vpncmd"
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
) )
install_wrapper_script("vpncmd" "${CMAKE_INSTALL_FULL_LIBEXECDIR}/softether/vpncmd/vpncmd") install_wrapper_script("vpncmd" "${CMAKE_INSTALL_FULL_LIBEXECDIR}/softether/vpncmd/vpncmd")
endif()

View File

@ -0,0 +1,22 @@
if(NOT WIN32)
message(FATAL_ERROR "VPN Client Manager is available only for Windows.")
endif()
set(VPNCMGR_SOURCES vpncmgr.c vpncmgr.rc)
if(${COMPILER_ARCHITECTURE} STREQUAL "x64")
set(VPNCMGR_SOURCES ${VPNCMGR_SOURCES} ${CMAKE_SOURCE_DIR}/src/BuildFiles/Manifests/x64_user.manifest)
else()
set(VPNCMGR_SOURCES ${VPNCMGR_SOURCES} ${CMAKE_SOURCE_DIR}/src/BuildFiles/Manifests/x86_user.manifest)
endif()
add_executable(vpncmgr WIN32 ${VPNCMGR_SOURCES})
set_target_properties(vpncmgr
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}"
LIBRARY_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}"
RUNTIME_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}"
)
target_link_libraries(vpncmgr cedar mayaqua)

View File

@ -1,4 +1,10 @@
add_executable(vpnserver vpnserver.c) set(VPNSERVER_SOURCES vpnserver.c)
if(WIN32)
set(VPNSERVER_SOURCES ${VPNSERVER_SOURCES} vpnserver.rc)
endif()
add_executable(vpnserver ${VPNSERVER_SOURCES})
set_target_properties(vpnserver set_target_properties(vpnserver
PROPERTIES PROPERTIES
@ -9,25 +15,27 @@ set_target_properties(vpnserver
target_link_libraries(vpnserver cedar mayaqua) target_link_libraries(vpnserver cedar mayaqua)
# Copy binary and "hamcore.se2" to /usr/lib(exec)/softether/, install launch script and systemd service if(UNIX)
install(TARGETS vpnserver # Copy binary and "hamcore.se2" to /usr/lib(exec)/softether/, install launch script and systemd service
COMPONENT "vpnserver" install(TARGETS vpnserver
DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/softether/vpnserver"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
install(FILES "${BUILD_DIRECTORY}/hamcore.se2"
COMPONENT "vpnserver"
DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/softether/vpnserver"
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
install_wrapper_script("vpnserver" "${CMAKE_INSTALL_FULL_LIBEXECDIR}/softether/vpnserver/vpnserver")
if(EXISTS "/lib/systemd/system")
configure_file(${CMAKE_SOURCE_DIR}/systemd/softether-vpnserver.service ${CMAKE_BINARY_DIR}/systemd/softether-vpnserver.service)
install(FILES ${CMAKE_BINARY_DIR}/systemd/softether-vpnserver.service
COMPONENT "vpnserver" COMPONENT "vpnserver"
DESTINATION "/lib/systemd/system" DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/softether/vpnserver"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
install(FILES "${BUILD_DIRECTORY}/hamcore.se2"
COMPONENT "vpnserver"
DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/softether/vpnserver"
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
) )
install_wrapper_script("vpnserver" "${CMAKE_INSTALL_FULL_LIBEXECDIR}/softether/vpnserver/vpnserver")
if(EXISTS "/lib/systemd/system")
configure_file(${CMAKE_SOURCE_DIR}/systemd/softether-vpnserver.service ${CMAKE_BINARY_DIR}/systemd/softether-vpnserver.service)
install(FILES ${CMAKE_BINARY_DIR}/systemd/softether-vpnserver.service
COMPONENT "vpnserver"
DESTINATION "/lib/systemd/system"
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
endif()
endif() endif()

View File

@ -0,0 +1,22 @@
if(NOT WIN32)
message(FATAL_ERROR "VPN Server Manager is available only for Windows.")
endif()
set(VPNSMGR_SOURCES vpnsmgr.c vpnsmgr.rc)
if(${COMPILER_ARCHITECTURE} STREQUAL "x64")
set(VPNSMGR_SOURCES ${VPNSMGR_SOURCES} ${CMAKE_SOURCE_DIR}/src/BuildFiles/Manifests/x64_user.manifest)
else()
set(VPNSMGR_SOURCES ${VPNSMGR_SOURCES} ${CMAKE_SOURCE_DIR}/src/BuildFiles/Manifests/x86_user.manifest)
endif()
add_executable(vpnsmgr WIN32 ${VPNSMGR_SOURCES})
set_target_properties(vpnsmgr
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}"
LIBRARY_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}"
RUNTIME_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}"
)
target_link_libraries(vpnsmgr cedar mayaqua)

View File

@ -1,4 +1,14 @@
add_executable(vpntest vpntest.c vpntest.h) set(VPNTEST_SOURCES vpntest.c vpntest.h)
if(WIN32)
if(${COMPILER_ARCHITECTURE} STREQUAL "x64")
set(VPNTEST_SOURCES ${VPNTEST_SOURCES} ${CMAKE_SOURCE_DIR}/src/BuildFiles/Manifests/x64_user.manifest)
else()
set(VPNTEST_SOURCES ${VPNTEST_SOURCES} ${CMAKE_SOURCE_DIR}/src/BuildFiles/Manifests/x86_user.manifest)
endif()
endif()
add_executable(vpntest ${VPNTEST_SOURCES})
set_target_properties(vpntest set_target_properties(vpntest
PROPERTIES PROPERTIES