WireGuard for MacOS (#248)
* WireGuard for MacOS * Fix openvpn block-outside-dns
This commit is contained in:
parent
ed5dc7cdfd
commit
35ecb8499d
118 changed files with 5150 additions and 3486 deletions
101
client/cmake/macos.cmake
Normal file
101
client/cmake/macos.cmake
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
message("MAC build")
|
||||
|
||||
set_target_properties(${PROJECT} PROPERTIES MACOSX_BUNDLE TRUE)
|
||||
set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE INTERNAL "" FORCE)
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.15)
|
||||
|
||||
|
||||
set(HEADERS ${HEADERS}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/ui/macos_util.h
|
||||
)
|
||||
|
||||
set(SOURCES ${SOURCES}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/ui/macos_util.mm
|
||||
)
|
||||
|
||||
set(ICON_FILE ${CMAKE_CURRENT_SOURCE_DIR}/images/app.icns)
|
||||
set(MACOSX_BUNDLE_ICON_FILE app.icns)
|
||||
set_source_files_properties(${ICON_FILE} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
||||
set(SOURCES ${SOURCES} ${ICON_FILE})
|
||||
|
||||
|
||||
|
||||
find_library(FW_SYSTEMCONFIG SystemConfiguration)
|
||||
find_library(FW_SERVICEMGMT ServiceManagement)
|
||||
find_library(FW_SECURITY Security)
|
||||
find_library(FW_COREWLAN CoreWLAN)
|
||||
find_library(FW_NETWORK Network)
|
||||
find_library(FW_USER_NOTIFICATIONS UserNotifications)
|
||||
|
||||
target_link_libraries(${PROJECT} PRIVATE ${FW_SYSTEMCONFIG})
|
||||
target_link_libraries(${PROJECT} PRIVATE ${FW_SERVICEMGMT})
|
||||
target_link_libraries(${PROJECT} PRIVATE ${FW_SECURITY})
|
||||
target_link_libraries(${PROJECT} PRIVATE ${FW_COREWLAN})
|
||||
target_link_libraries(${PROJECT} PRIVATE ${FW_NETWORK})
|
||||
target_link_libraries(${PROJECT} PRIVATE ${FW_USER_NOTIFICATIONS})
|
||||
|
||||
# Get SDK path
|
||||
execute_process(
|
||||
COMMAND sh -c "xcrun --sdk macosx --show-sdk-path"
|
||||
OUTPUT_VARIABLE OSX_SDK_PATH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
message("OSX_SDK_PATH is: ${OSX_SDK_PATH}")
|
||||
|
||||
# Build the Wireguard Go tunnel
|
||||
file(GLOB_RECURSE WIREGUARD_GO_DEPS ${CMAKE_CURRENT_SOURCE_DIR}/3rd/wireguard-go/*.go)
|
||||
set(WIREGUARD_GO_ENV
|
||||
GOCACHE=${CMAKE_BINARY_DIR}/go-cache
|
||||
CC=${CMAKE_C_COMPILER}
|
||||
CXX=${CMAKE_CXX_COMPILER}
|
||||
GOOS=darwin
|
||||
CGO_ENABLED=1
|
||||
GO111MODULE=on
|
||||
CGO_CFLAGS='-g -O3 -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET} -isysroot ${OSX_SDK_PATH}'
|
||||
CGO_LDFLAGS='-g -O3 -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET} -isysroot ${OSX_SDK_PATH}'
|
||||
)
|
||||
|
||||
if(NOT CMAKE_OSX_ARCHITECTURES)
|
||||
foreach(OSXARCH ${CMAKE_OSX_ARCHITECTURES})
|
||||
message("Build wg for OSXARCH: ${OSXARCH}")
|
||||
|
||||
string(REPLACE "x86_64" "amd64" GOARCH ${OSXARCH})
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/wireguard-go-${OSXARCH}
|
||||
COMMENT "Building wireguard-go for ${OSXARCH}"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/3rd/wireguard-go
|
||||
DEPENDS
|
||||
${WIREGUARD_GO_DEPS}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/3rd/wireguard-go/go.mod
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/3rd/wireguard-go/go.sum
|
||||
COMMAND ${CMAKE_COMMAND} -E env ${WIREGUARD_GO_ENV} GOARCH=${GOARCH}
|
||||
${GOLANG_BUILD_TOOL} build -buildmode exe -buildvcs=false -trimpath -v
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/wireguard-go-${OSXARCH}
|
||||
)
|
||||
list(APPEND WG_GO_ARCH_BUILDS ${CMAKE_CURRENT_BINARY_DIR}/wireguard-go-${OSXARCH}/wireguard)
|
||||
endforeach()
|
||||
|
||||
add_custom_target(build_wireguard_go
|
||||
COMMENT "Building wireguard-go"
|
||||
DEPENDS ${WG_GO_ARCH_BUILDS}
|
||||
COMMAND lipo -create -output ${CMAKE_CURRENT_BINARY_DIR}/wireguard-go ${WG_GO_ARCH_BUILDS}
|
||||
)
|
||||
else()
|
||||
# This only builds for the host architecture.
|
||||
add_custom_target(build_wireguard_go
|
||||
COMMENT "Building wireguard-go"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/3rd/wireguard-go
|
||||
DEPENDS
|
||||
${WIREGUARD_GO_DEPS}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/3rd/wireguard-go/go.mod
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/3rd/wireguard-go/go.sum
|
||||
COMMAND ${CMAKE_COMMAND} -E env ${WIREGUARD_GO_ENV}
|
||||
${GOLANG_BUILD_TOOL} build -buildmode exe -buildvcs=false -trimpath -v
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/wireguard-go
|
||||
)
|
||||
endif()
|
||||
add_dependencies(${PROJECT} build_wireguard_go)
|
||||
osx_bundle_files(${PROJECT}
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/wireguard-go
|
||||
DESTINATION MacOS/
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue