add support for MacOS with Apple Silicon M1

This commit is contained in:
Yafei Zhao 2021-09-23 15:40:02 +08:00
parent ae05ad04b3
commit 1608a9f041
6 changed files with 99 additions and 5 deletions

View File

@ -83,10 +83,16 @@ build:ios_fat --config=ios
build:ios_fat --ios_multi_cpus=armv7,arm64
build:ios_fat --watchos_cpus=armv7k
# MacOS configs.
build:darwin_x86_64 --apple_platform_type=macos
build:darwin_x86_64 --macos_minimum_os=10.12
build:darwin_x86_64 --cpu=darwin_x86_64
# MacOS Big Sur with Apple Silicon M1
build:darwin_arm64 --apple_platform_type=macos
build:darwin_arm64 --macos_minimum_os=10.16
build:darwin_arm64 --cpu=darwin_arm64
# This bazelrc file is meant to be written by a setup script.
try-import %workspace%/.configure.bazelrc

View File

@ -1 +1 @@
3.7.2
4.1.0

View File

@ -100,6 +100,71 @@ The source code is hosted in the
run code search using
[Google Open Source Code Search](https://cs.opensource.google/mediapipe/mediapipe).
### Build on MacOS
#### CPU: Apple Silicon M1
1. Build "hello_world":
```bash
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --cpu darwin_arm64 mediapipe/examples/desktop/hello_world:hello_world
```
and run:
```bash
export GLOG_logtostderr=1
bazel-bin/mediapipe/examples/desktop/hello_world/hello_world
```
2. Build all available examples under mediapipe/examples/desktop:
```bash
bash build_macos_desktop_examples.sh --cpu m1 -b
```
3. Build and run one example app (e.g. mediapipe/examples/desktop/face_detection):
```
bash build_macos_desktop_examples.sh --cpu m1 --app face_detection -r
```
#### CPU: x86_64
1. Build "hello_world":
```bash
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --cpu darwin_x86_64 mediapipe/examples/desktop/hello_world:hello_world
```
and run:
```bash
export GLOG_logtostderr=1
bazel-bin/mediapipe/examples/desktop/hello_world/hello_world
```
2. Build all available examples under mediapipe/examples/desktop:
```bash
bash build_macos_desktop_examples.sh --cpu x86_64 -b
```
3. Build and run one example app (e.g. mediapipe/examples/desktop/face_detection):
```
bash build_macos_desktop_examples.sh --cpu x86_64 --app face_detection -r
```
#### CPU: i386
1. Build "hello_world":
```bash
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --cpu darwin_i386 mediapipe/examples/desktop/hello_world:hello_world
```
and run:
```bash
export GLOG_logtostderr=1
bazel-bin/mediapipe/examples/desktop/hello_world/hello_world
```
2. Build all available examples under mediapipe/examples/desktop:
```bash
bash build_macos_desktop_examples.sh --cpu i386 -b
```
3. Build and run one example app (e.g. mediapipe/examples/desktop/face_detection):
```
bash build_macos_desktop_examples.sh --cpu i386 --app face_detection -r
```
## Publications
* [MediaPipe Holistic - Simultaneous Face, Hand and Pose Prediction, on Device](https://ai.googleblog.com/2020/12/mediapipe-holistic-simultaneous-face.html)

View File

@ -1,5 +1,17 @@
workspace(name = "mediapipe")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "bazel_skylib",
urls = [
"https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz",
"https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz",
],
sha256 = "1c531376ac7e5a180e0237938a2536de0c54d93f5c278634818e0efc952dd56c",
)
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
bazel_skylib_workspace()
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
@ -35,8 +47,8 @@ http_archive(
http_archive(
name = "rules_cc",
strip_prefix = "rules_cc-master",
urls = ["https://github.com/bazelbuild/rules_cc/archive/master.zip"],
strip_prefix = "rules_cc-main",
urls = ["https://github.com/bazelbuild/rules_cc/archive/main.zip"],
)
http_archive(

View File

@ -75,7 +75,8 @@ alias(
actual = select({
":macos_i386": ":macos_i386",
":macos_x86_64": ":macos_x86_64",
"//conditions:default": ":macos_i386", # Arbitrarily chosen from above.
":macos_arm64": ":macos_arm64",
"//conditions:default": ":macos_x86_64", # Arbitrarily chosen from above.
}),
visibility = ["//visibility:public"],
)
@ -119,6 +120,15 @@ config_setting(
visibility = ["//visibility:public"],
)
config_setting(
name = "macos_arm64",
values = {
"apple_platform_type": "macos",
"cpu": "darwin_arm64",
},
visibility = ["//visibility:public"],
)
[
config_setting(
name = arch,

View File

@ -26,7 +26,8 @@
#include "mediapipe/framework/port/status.h"
#ifdef __APPLE__
#define AUTORELEASEPOOL @autoreleasepool
// #define AUTORELEASEPOOL @autoreleasepool
#define AUTORELEASEPOOL
#else
#define AUTORELEASEPOOL
#endif // __APPLE__