-
Notifications
You must be signed in to change notification settings - Fork 143
Expand file tree
/
Copy pathmacos-daemon.cmake
More file actions
89 lines (79 loc) · 4.16 KB
/
macos-daemon.cmake
File metadata and controls
89 lines (79 loc) · 4.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
qt_add_executable(daemon MANUAL_FINALIZATION)
set_target_properties(daemon PROPERTIES
OUTPUT_NAME "${BUILD_OSX_APP_IDENTIFIER}.daemon"
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${BUILD_OSX_APP_IDENTIFIER}.daemon"
XCODE_ATTRIBUTE_MARKETING_VERSION "${CMAKE_PROJECT_VERSION}"
XCODE_GENERATE_SCHEME TRUE
)
mz_target_handle_warnings(daemon)
find_library(FW_FOUNDATION Foundation)
find_library(FW_NETWORK Network)
find_library(FW_SECURITY Security)
find_library(FW_SYSTEMCONFIG SystemConfiguration)
target_link_libraries(daemon PRIVATE ${FW_FOUNDATION} ${FW_NETWORK} ${FW_SECURITY} ${FW_SYSTEMCONFIG})
target_link_libraries(daemon PRIVATE Qt6::Core Qt6::Network)
target_link_libraries(daemon PRIVATE mzutils)
# VPN client include paths
target_include_directories(daemon PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_definitions(daemon PRIVATE "$<$<CONFIG:Debug>:MZ_DEBUG>")
target_compile_definitions(daemon PRIVATE "MZ_$<UPPER_CASE:${MZ_PLATFORM_NAME}>")
target_sources(daemon PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/daemon/daemon.cpp
${CMAKE_CURRENT_SOURCE_DIR}/daemon/daemon.h
${CMAKE_CURRENT_SOURCE_DIR}/daemon/daemonaccesscontrol.cpp
${CMAKE_CURRENT_SOURCE_DIR}/daemon/daemonaccesscontrol.h
${CMAKE_CURRENT_SOURCE_DIR}/daemon/daemonerrors.h
${CMAKE_CURRENT_SOURCE_DIR}/daemon/daemonlocalserverconnection.cpp
${CMAKE_CURRENT_SOURCE_DIR}/daemon/daemonlocalserverconnection.h
${CMAKE_CURRENT_SOURCE_DIR}/daemon/dnsutils.h
${CMAKE_CURRENT_SOURCE_DIR}/daemon/iputils.h
${CMAKE_CURRENT_SOURCE_DIR}/daemon/wireguardutils.h
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/dnsutilsmacos.cpp
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/dnsutilsmacos.h
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/iputilsmacos.cpp
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/iputilsmacos.h
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/macosdaemon.cpp
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/macosdaemon.h
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/macosdaemonmain.cpp
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/macosdaemonserver.cpp
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/macosdaemonserver.h
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/macosdnsmanager.cpp
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/macosdnsmanager.h
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/macosroutemonitor.cpp
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/macosroutemonitor.h
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/wgsessionmacos.cpp
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/wgsessionmacos.h
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/wgsessionworker.cpp
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/wgsessionworker.h
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/wgutilsmacos.cpp
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/wgutilsmacos.h
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/xpcdaemonserver.h
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/daemon/xpcdaemonserver.mm
${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/xpcdaemonprotocol.h
)
# Build and link boringtun
add_rust_library(boringtun
PACKAGE_DIR ${CMAKE_SOURCE_DIR}/3rdparty/boringtun/boringtun
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}
FEATURES ffi-bindings
CRATE_NAME boringtun
)
target_include_directories(daemon PRIVATE ${CMAKE_SOURCE_DIR}/3rdparty/boringtun/boringtun/src)
target_link_libraries(daemon PRIVATE boringtun)
# Embed the daemon property list.
configure_file(${CMAKE_SOURCE_DIR}/macos/app/daemon.plist.in daemon.plist)
if(XCODE)
set_target_properties(daemon PROPERTIES
XCODE_ATTRIBUTE_INFOPLIST_FILE ${CMAKE_CURRENT_BINARY_DIR}/daemon.plist
XCODE_ATTRIBUTE_CREATE_INFOPLIST_SECTION_IN_BINARY YES
)
else()
target_link_options(daemon PRIVATE
LINKER:-sectcreate,__TEXT,__info_plist,${CMAKE_CURRENT_BINARY_DIR}/daemon.plist
)
endif()
osx_codesign_target(daemon)
qt_finalize_target(daemon)