
Botan cmake changes, cmake APPLE/IOS fixes, wireguard added, Currently removed openvpn implementation, once wireguard is stable then will add openVPN framework. Current progress is it is generating xcode project using mkdir build-ios /Users/shahzainali/Qt/6.4.1/ios/bin/qt-cmake . -B build-ios -GXcode Need to select team only for Network extension only. select AmneizaVPN to run. current issue is related to Botan.
105 lines
No EOL
4.8 KiB
CMake
105 lines
No EOL
4.8 KiB
CMake
enable_language(Swift)
|
|
|
|
add_executable(networkextension)
|
|
set_target_properties(networkextension PROPERTIES
|
|
OUTPUT_NAME "AmneziaVPNNetworkExtension"
|
|
XCODE_PRODUCT_TYPE com.apple.product-type.app-extension
|
|
BUNDLE_EXTENSION appex
|
|
MACOSX_BUNDLE ON
|
|
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in
|
|
MACOSX_BUNDLE_BUNDLE_NAME "AmneziaVPNNetworkExtension"
|
|
MACOSX_BUNDLE_BUNDLE_VERSION "${BUILD_ID}"
|
|
MACOSX_BUNDLE_COPYRIGHT "MPL-2.0"
|
|
MACOSX_BUNDLE_GUI_IDENTIFIER "${BUILD_IOS_APP_IDENTIFIER}.network-extension"
|
|
MACOSX_BUNDLE_INFO_STRING "MozillaVPNNetworkExtension"
|
|
MACOSX_BUNDLE_LONG_VERSION_STRING "${CMAKE_PROJECT_VERSION}-${BUILD_ID}"
|
|
MACOSX_BUNDLE_SHORT_VERSION_STRING "${CMAKE_PROJECT_VERSION}"
|
|
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${BUILD_IOS_APP_IDENTIFIER}.network-extension"
|
|
XCODE_ATTRIBUTE_SWIFT_VERSION "5.0"
|
|
XCODE_ATTRIBUTE_CLANG_ENABLE_MODULES "YES"
|
|
XCODE_ATTRIBUTE_SWIFT_OBJC_BRIDGING_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/WireGuardNetworkExtension-Bridging-Header.h"
|
|
XCODE_ATTRIBUTE_SWIFT_PRECOMPILE_BRIDGING_HEADER "NO"
|
|
XCODE_ATTRIBUTE_APPLICATION_EXTENSION_API_ONLY "YES"
|
|
XCODE_ATTRIBUTE_ENABLE_BITCODE "NO"
|
|
XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS ${CMAKE_CURRENT_SOURCE_DIR}/AmneziaVPNNetworkExtension.entitlements
|
|
)
|
|
|
|
find_library(FW_ASSETS_LIBRARY AssetsLibrary)
|
|
find_library(FW_MOBILE_CORE MobileCoreServices)
|
|
find_library(FW_UI_KIT UIKit)
|
|
|
|
target_link_libraries(networkextension PRIVATE ${FW_ASSETS_LIBRARY})
|
|
target_link_libraries(networkextension PRIVATE ${FW_MOBILE_CORE})
|
|
target_link_libraries(networkextension PRIVATE ${FW_UI_KIT})
|
|
|
|
target_compile_options(networkextension PRIVATE -DGROUP_ID=\"${BUILD_IOS_GROUP_IDENTIFIER}\")
|
|
target_compile_options(networkextension PRIVATE -DNETWORK_EXTENSION=1)
|
|
|
|
set(WG_APPLE_SOURCE_DIR ${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources)
|
|
|
|
target_sources(networkextension PRIVATE
|
|
${WG_APPLE_SOURCE_DIR}/WireGuardKit/WireGuardAdapter.swift
|
|
${WG_APPLE_SOURCE_DIR}/WireGuardKit/PacketTunnelSettingsGenerator.swift
|
|
${WG_APPLE_SOURCE_DIR}/WireGuardKit/DNSResolver.swift
|
|
${WG_APPLE_SOURCE_DIR}/WireGuardNetworkExtension/ErrorNotifier.swift
|
|
${WG_APPLE_SOURCE_DIR}/Shared/Keychain.swift
|
|
${WG_APPLE_SOURCE_DIR}/Shared/Model/TunnelConfiguration+WgQuickConfig.swift
|
|
${WG_APPLE_SOURCE_DIR}/Shared/Model/NETunnelProviderProtocol+Extension.swift
|
|
${WG_APPLE_SOURCE_DIR}/Shared/Model/String+ArrayConversion.swift
|
|
${WG_APPLE_SOURCE_DIR}/WireGuardKit/TunnelConfiguration.swift
|
|
${WG_APPLE_SOURCE_DIR}/WireGuardKit/IPAddressRange.swift
|
|
${WG_APPLE_SOURCE_DIR}/WireGuardKit/Endpoint.swift
|
|
${WG_APPLE_SOURCE_DIR}/WireGuardKit/DNSServer.swift
|
|
${WG_APPLE_SOURCE_DIR}/WireGuardKit/InterfaceConfiguration.swift
|
|
${WG_APPLE_SOURCE_DIR}/WireGuardKit/PeerConfiguration.swift
|
|
${WG_APPLE_SOURCE_DIR}/Shared/FileManager+Extension.swift
|
|
${WG_APPLE_SOURCE_DIR}/WireGuardKitC/x25519.c
|
|
${WG_APPLE_SOURCE_DIR}/WireGuardKit/Array+ConcurrentMap.swift
|
|
${WG_APPLE_SOURCE_DIR}/WireGuardKit/IPAddress+AddrInfo.swift
|
|
${WG_APPLE_SOURCE_DIR}/WireGuardKit/PrivateKey.swift
|
|
${CMAKE_SOURCE_DIR}/platforms/ios/iostunnel.swift
|
|
${CMAKE_SOURCE_DIR}/platforms/ios/iosglue.mm
|
|
${CMAKE_SOURCE_DIR}/platforms/ios/ioslogger.swift
|
|
)
|
|
|
|
## Build wireguard-go-version.h
|
|
execute_process(
|
|
COMMAND go list -m golang.zx2c4.com/wireguard
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources/WireGuardKitGo
|
|
OUTPUT_VARIABLE WG_VERSION_FULL
|
|
)
|
|
string(REGEX REPLACE ".*v\([0-9.]*\).*" "\\1" WG_VERSION_STRING 1.1.1)
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/wireguard-go-version.h.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/wireguard-go-version.h)
|
|
target_sources(networkextension PRIVATE
|
|
${CMAKE_CURRENT_BINARY_DIR}/wireguard-go-version.h)
|
|
|
|
target_include_directories(networkextension PRIVATE ${CMAKE_SOURCE_DIR})
|
|
target_include_directories(networkextension PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
## HACK: Build only the first architecture, this will break universal builds
|
|
## for now, but they are already broken for mobile, which uses the arch to
|
|
## determine iOS vs. simulator builds :)
|
|
if(NOT CMAKE_OSX_ARCHITECTURES)
|
|
set(OSXARCH arm64)
|
|
else()
|
|
list(GET CMAKE_OSX_ARCHITECTURES 0 OSXARCH)
|
|
endif()
|
|
|
|
## Build the wireguard go library
|
|
## TODO: The upstream makefile also makes an attempt to patch the golang runtime
|
|
## to provide the boot-time clock instead of an uptime clock. We should probably
|
|
## make an attempt to do the same, somehow?
|
|
include(${CMAKE_SOURCE_DIR}/src/cmake/golang.cmake)
|
|
if(OSXARCH STREQUAL "x86_64")
|
|
set(GOARCH amd64)
|
|
else()
|
|
set(GOARCH ${FIRST_OSX_ARCHITECTURE})
|
|
endif()
|
|
add_go_library(libwg-go ${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources/WireGuardKitGo/api-apple.go
|
|
GOOS ios
|
|
GOARCH ${GOARCH}
|
|
CGO_CFLAGS -arch ${OSXARCH}
|
|
CGO_LDFLAGS -arch ${OSXARCH}
|
|
)
|
|
target_link_libraries(networkextension PRIVATE libwg-go) |