forked from Silverfish/proton-bridge
Other: macOS 11 support.
Other: added option to force build arch on macOS. Other: got rid of linker warnings when building go with macOS 11 compatibility.
This commit is contained in:
7
Makefile
7
Makefile
@ -21,12 +21,14 @@ SRC_SVG:=bridge.svg
|
|||||||
EXE_NAME:=proton-bridge
|
EXE_NAME:=proton-bridge
|
||||||
REVISION:=$(shell git rev-parse --short=10 HEAD)
|
REVISION:=$(shell git rev-parse --short=10 HEAD)
|
||||||
BUILD_TIME:=$(shell date +%FT%T%z)
|
BUILD_TIME:=$(shell date +%FT%T%z)
|
||||||
|
MACOS_MIN_VERSION=11.0
|
||||||
|
|
||||||
BUILD_FLAGS:=-tags='${BUILD_TAGS}'
|
BUILD_FLAGS:=-tags='${BUILD_TAGS}'
|
||||||
BUILD_FLAGS_LAUNCHER:=${BUILD_FLAGS}
|
BUILD_FLAGS_LAUNCHER:=${BUILD_FLAGS}
|
||||||
BUILD_FLAGS_GUI:=-tags='${BUILD_TAGS} build_qt'
|
BUILD_FLAGS_GUI:=-tags='${BUILD_TAGS} build_qt'
|
||||||
GO_LDFLAGS:=$(addprefix -X github.com/ProtonMail/proton-bridge/v2/internal/constants., Version=${APP_VERSION} Revision=${REVISION} BuildTime=${BUILD_TIME})
|
GO_LDFLAGS:=$(addprefix -X github.com/ProtonMail/proton-bridge/v2/internal/constants., Version=${APP_VERSION} Revision=${REVISION} BuildTime=${BUILD_TIME})
|
||||||
GO_LDFLAGS+=-X "github.com/ProtonMail/proton-bridge/v2/internal/constants.FullAppName=${APP_FULL_NAME}"
|
GO_LDFLAGS+=-X "github.com/ProtonMail/proton-bridge/v2/internal/constants.FullAppName=${APP_FULL_NAME}"
|
||||||
|
|
||||||
ifneq "${BUILD_LDFLAGS}" ""
|
ifneq "${BUILD_LDFLAGS}" ""
|
||||||
GO_LDFLAGS+=${BUILD_LDFLAGS}
|
GO_LDFLAGS+=${BUILD_LDFLAGS}
|
||||||
endif
|
endif
|
||||||
@ -39,7 +41,6 @@ endif
|
|||||||
BUILD_FLAGS+=-ldflags '${GO_LDFLAGS}'
|
BUILD_FLAGS+=-ldflags '${GO_LDFLAGS}'
|
||||||
BUILD_FLAGS_GUI+=-ldflags "${GO_LDFLAGS}"
|
BUILD_FLAGS_GUI+=-ldflags "${GO_LDFLAGS}"
|
||||||
BUILD_FLAGS_LAUNCHER+=-ldflags '${GO_LDFLAGS_LAUNCHER}'
|
BUILD_FLAGS_LAUNCHER+=-ldflags '${GO_LDFLAGS_LAUNCHER}'
|
||||||
|
|
||||||
DEPLOY_DIR:=cmd/${TARGET_CMD}/deploy
|
DEPLOY_DIR:=cmd/${TARGET_CMD}/deploy
|
||||||
DIRNAME:=$(shell basename ${CURDIR})
|
DIRNAME:=$(shell basename ${CURDIR})
|
||||||
|
|
||||||
@ -84,8 +85,8 @@ go-build=go build $(1) -o $(2) $(3)
|
|||||||
go-build-finalize=${go-build}
|
go-build-finalize=${go-build}
|
||||||
ifeq "${GOOS}-$(shell uname -m)" "darwin-arm64"
|
ifeq "${GOOS}-$(shell uname -m)" "darwin-arm64"
|
||||||
go-build-finalize= \
|
go-build-finalize= \
|
||||||
CGO_ENABLED=1 GOARCH=arm64 $(call go-build,$(1),$(2)_arm,$(3)) && \
|
MACOSX_DEPLOYMENT_TARGET=${MACOS_MIN_VERSION} CGO_ENABLED=1 CGO_CFLAGS="-mmacosx-version-min=${MACOS_MIN_VERSION}" GOARCH=arm64 $(call go-build,$(1),$(2)_arm,$(3)) && \
|
||||||
CGO_ENABLED=1 GOARCH=amd64 $(call go-build,$(1),$(2)_amd,$(3)) && \
|
MACOSX_DEPLOYMENT_TARGET=${MACOS_MIN_VERSION} CGO_ENABLED=1 CGO_CFLAGS="-mmacosx-version-min=${MACOS_MIN_VERSION}" GOARCH=amd64 $(call go-build,$(1),$(2)_amd,$(3)) && \
|
||||||
lipo -create -output $(2) $(2)_arm $(2)_amd && rm -f $(2)_arm $(2)_amd
|
lipo -create -output $(2) $(2)_arm $(2)_amd && rm -f $(2)_arm $(2)_amd
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@ -19,6 +19,9 @@
|
|||||||
include_guard()
|
include_guard()
|
||||||
|
|
||||||
|
|
||||||
|
set(CMAKE_OSX_DEPLOYMENT_TARGET 11.0)
|
||||||
|
|
||||||
|
|
||||||
if (NOT DEFINED BRIDGE_REPO_ROOT)
|
if (NOT DEFINED BRIDGE_REPO_ROOT)
|
||||||
message(FATAL_ERROR "BRIDGE_REPO_ROOT is not defined.")
|
message(FATAL_ERROR "BRIDGE_REPO_ROOT is not defined.")
|
||||||
endif()
|
endif()
|
||||||
@ -71,10 +74,10 @@ if (APPLE)
|
|||||||
|
|
||||||
if (CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
|
if (CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
|
||||||
message(STATUS "Building for Apple Silicon Mac computers")
|
message(STATUS "Building for Apple Silicon Mac computers")
|
||||||
set(VCPKG_TARGET_TRIPLET arm64-osx)
|
set(VCPKG_TARGET_TRIPLET arm64-osx-min-11-0)
|
||||||
elseif (CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64")
|
elseif (CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64")
|
||||||
message(STATUS "Building for Intel based Mac computers")
|
message(STATUS "Building for Intel based Mac computers")
|
||||||
set(VCPKG_TARGET_TRIPLET x64-osx)
|
set(VCPKG_TARGET_TRIPLET x64-osx-min-11-0)
|
||||||
else ()
|
else ()
|
||||||
message(FATAL_ERROR "Unknown value for CMAKE_OSX_ARCHITECTURE. Please use one of \"arm64\" and \"x86_64\". Multiple architectures are not supported.")
|
message(FATAL_ERROR "Unknown value for CMAKE_OSX_ARCHITECTURE. Please use one of \"arm64\" and \"x86_64\". Multiple architectures are not supported.")
|
||||||
endif ()
|
endif ()
|
||||||
|
|||||||
@ -54,6 +54,7 @@ BRIDGE_APP_FULL_NAME=${BRIDGE_APP_FULL_NAME:-"Proton Mail Bridge"}
|
|||||||
BRIDGE_VENDOR=${BRIDGE_VENDOR:-"Proton AG"}
|
BRIDGE_VENDOR=${BRIDGE_VENDOR:-"Proton AG"}
|
||||||
BUILD_CONFIG=${BRIDGE_GUI_BUILD_CONFIG:-Debug}
|
BUILD_CONFIG=${BRIDGE_GUI_BUILD_CONFIG:-Debug}
|
||||||
BUILD_DIR=$(echo "./cmake-build-${BUILD_CONFIG}" | tr '[:upper:]' '[:lower:]')
|
BUILD_DIR=$(echo "./cmake-build-${BUILD_CONFIG}" | tr '[:upper:]' '[:lower:]')
|
||||||
|
VCPKG_OSX_DEPLOYMENT_TARGET=11.0
|
||||||
VCPKG_ROOT="${BRIDGE_REPO_ROOT}/extern/vcpkg"
|
VCPKG_ROOT="${BRIDGE_REPO_ROOT}/extern/vcpkg"
|
||||||
|
|
||||||
git submodule update --init --recursive ${VCPKG_ROOT}
|
git submodule update --init --recursive ${VCPKG_ROOT}
|
||||||
@ -70,10 +71,10 @@ check_exit "Failed to bootstrap vcpkg."
|
|||||||
|
|
||||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
if [[ "$(uname -m)" == "arm64" ]]; then
|
if [[ "$(uname -m)" == "arm64" ]]; then
|
||||||
${VCPKG_EXE} install grpc:arm64-osx --clean-after-build
|
${VCPKG_EXE} install grpc:arm64-osx-min-11-0 --overlay-triplets=vcpkg/triplets --clean-after-build
|
||||||
check_exit "Failed installing gRPC for macOS / Apple Silicon"
|
check_exit "Failed installing gRPC for macOS / Apple Silicon"
|
||||||
fi
|
fi
|
||||||
${VCPKG_EXE} install grpc:x64-osx --clean-after-build
|
${VCPKG_EXE} install grpc:x64-osx-min-11-0 --overlay-triplets=vcpkg/triplets --clean-after-build
|
||||||
check_exit "Failed installing gRPC for macOS / Intel x64"
|
check_exit "Failed installing gRPC for macOS / Intel x64"
|
||||||
elif [[ "$OSTYPE" == "linux"* ]]; then
|
elif [[ "$OSTYPE" == "linux"* ]]; then
|
||||||
${VCPKG_EXE} install grpc:x64-linux --clean-after-build
|
${VCPKG_EXE} install grpc:x64-linux --clean-after-build
|
||||||
@ -85,11 +86,17 @@ fi
|
|||||||
|
|
||||||
${VCPKG_EXE} upgrade --no-dry-run
|
${VCPKG_EXE} upgrade --no-dry-run
|
||||||
|
|
||||||
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
|
BRIDGE_CMAKE_MACOS_OPTS="-DCMAKE_OSX_ARCHITECTURES=${BRIDGE_MACOS_ARCH:-$(uname -m)}"
|
||||||
|
else
|
||||||
|
BRIDGE_CMAKE_MACOS_OPTS=""
|
||||||
|
fi
|
||||||
|
|
||||||
cmake \
|
cmake \
|
||||||
-DCMAKE_BUILD_TYPE="${BUILD_CONFIG}" \
|
-DCMAKE_BUILD_TYPE="${BUILD_CONFIG}" \
|
||||||
-DBRIDGE_APP_FULL_NAME="${BRIDGE_APP_FULL_NAME}" \
|
-DBRIDGE_APP_FULL_NAME="${BRIDGE_APP_FULL_NAME}" \
|
||||||
-DBRIDGE_VENDOR="${BRIDGE_VENDOR}" \
|
-DBRIDGE_VENDOR="${BRIDGE_VENDOR}" \
|
||||||
-DBRIDGE_APP_VERSION="${BRIDGE_APP_VERSION}" \
|
-DBRIDGE_APP_VERSION="${BRIDGE_APP_VERSION}" "${BRIDGE_CMAKE_MACOS_OPTS}" \
|
||||||
-G Ninja \
|
-G Ninja \
|
||||||
-S . \
|
-S . \
|
||||||
-B "${BUILD_DIR}"
|
-B "${BUILD_DIR}"
|
||||||
|
|||||||
@ -0,0 +1,8 @@
|
|||||||
|
set(VCPKG_TARGET_ARCHITECTURE arm64)
|
||||||
|
set(VCPKG_CRT_LINKAGE dynamic)
|
||||||
|
set(VCPKG_LIBRARY_LINKAGE static)
|
||||||
|
|
||||||
|
set(VCPKG_CMAKE_SYSTEM_NAME Darwin)
|
||||||
|
set(VCPKG_OSX_ARCHITECTURES arm64)
|
||||||
|
set(VCPKG_OSX_DEPLOYMENT_TARGET "11.0")
|
||||||
|
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
set(VCPKG_TARGET_ARCHITECTURE x64)
|
||||||
|
set(VCPKG_CRT_LINKAGE dynamic)
|
||||||
|
set(VCPKG_LIBRARY_LINKAGE static)
|
||||||
|
|
||||||
|
set(VCPKG_CMAKE_SYSTEM_NAME Darwin)
|
||||||
|
set(VCPKG_OSX_ARCHITECTURES x86_64)
|
||||||
|
set(VCPKG_OSX_DEPLOYMENT_TARGET "11.0")
|
||||||
@ -59,7 +59,7 @@ message(STATUS "protoc found ${PROTOC_EXE}")
|
|||||||
|
|
||||||
message(STATUS "grpc_cpp_plugin ${grpc_cpp_plugin}")
|
message(STATUS "grpc_cpp_plugin ${grpc_cpp_plugin}")
|
||||||
|
|
||||||
find_program(GRPC_CPP_PLUGIN grpc_cpp_plugin)
|
find_program(GRPC_CPP_PLUGIN grpc_cpp_plugin HINTS "${VCPKG_ROOT}/installed/arm64-osx/tools/grpc" "${VCPKG_ROOT}/installed/x64-osx/tools/grpc")
|
||||||
if (NOT GRPC_CPP_PLUGIN)
|
if (NOT GRPC_CPP_PLUGIN)
|
||||||
message(FATAL_ERROR "grpc_cpp_plugin exe could not be found. Please add it to your path. it should be located in \${VCPKG_ROOT}/installed/arm64-osx/tools/grpc")
|
message(FATAL_ERROR "grpc_cpp_plugin exe could not be found. Please add it to your path. it should be located in \${VCPKG_ROOT}/installed/arm64-osx/tools/grpc")
|
||||||
else ()
|
else ()
|
||||||
|
|||||||
Reference in New Issue
Block a user