101 lines
3.8 KiB
CMake
101 lines
3.8 KiB
CMake
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/
|
|
)
|