|
| 1 | + |
| 2 | +generated_headers = [ |
| 3 | + "vcs_version.h", |
| 4 | +] |
| 5 | + |
| 6 | +headers = [ |
| 7 | + "compat/msvc/stdatomic.h", |
| 8 | + "compat/gcc/stdatomic.h", |
| 9 | + "compat/getopt.h", |
| 10 | + "common/dump.h", |
| 11 | + "common/frame.h", |
| 12 | + "common/bitdepth.h", |
| 13 | + "common/attributes.h", |
| 14 | + "common/validate.h", |
| 15 | + "common/intops.h", |
| 16 | + "dav1d/picture.h", |
| 17 | + "dav1d/version.h", |
| 18 | + "dav1d/data.h", |
| 19 | + "dav1d/headers.h", |
| 20 | + "dav1d/common.h", |
| 21 | + "dav1d/dav1d.h", |
| 22 | +] |
| 23 | + |
| 24 | +libs = [ |
| 25 | + "dav1d", |
| 26 | +] |
| 27 | + |
| 28 | +filegroup( |
| 29 | + name = "dav1d_sources", |
| 30 | + srcs = glob([ |
| 31 | + "dav1d/**/*" |
| 32 | + ]), |
| 33 | +) |
| 34 | + |
| 35 | +genrule( |
| 36 | + name = "dav1d_build", |
| 37 | + srcs = [ |
| 38 | + "build-dav1d-bazel.sh", |
| 39 | + "arm64-iPhoneSimulator.meson", |
| 40 | + ":dav1d_sources", |
| 41 | + "@meson_tar_gz//file", |
| 42 | + "@ninja-mac_zip//file", |
| 43 | + ], |
| 44 | + cmd_bash = |
| 45 | + """ |
| 46 | + set -ex |
| 47 | +
|
| 48 | + if [ "$(TARGET_CPU)" == "ios_arm64" ]; then |
| 49 | + BUILD_ARCH="arm64" |
| 50 | + elif [ "$(TARGET_CPU)" == "ios_sim_arm64" ]; then |
| 51 | + BUILD_ARCH="sim_arm64" |
| 52 | + else |
| 53 | + echo "Unsupported architecture $(TARGET_CPU)" |
| 54 | + fi |
| 55 | +
|
| 56 | + BUILD_DIR="$(RULEDIR)/build_$${BUILD_ARCH}" |
| 57 | + rm -rf "$$BUILD_DIR" |
| 58 | + mkdir -p "$$BUILD_DIR" |
| 59 | +
|
| 60 | + MESON_DIR="$$(pwd)/$$BUILD_DIR/meson" |
| 61 | + rm -rf "$$MESON_DIR" |
| 62 | + mkdir -p "$$MESON_DIR" |
| 63 | + tar -xzf "$(location @meson_tar_gz//file)" -C "$$MESON_DIR" |
| 64 | +
|
| 65 | + NINJA_DIR="$$(pwd)/$$BUILD_DIR/ninja" |
| 66 | + rm -rf "$$NINJA_DIR" |
| 67 | + mkdir -p "$$NINJA_DIR" |
| 68 | + unzip "$(location @ninja-mac_zip//file)" -d "$$NINJA_DIR" |
| 69 | +
|
| 70 | + cp $(location :build-dav1d-bazel.sh) "$$BUILD_DIR/" |
| 71 | + cp $(location :arm64-iPhoneSimulator.meson) "$$BUILD_DIR/" |
| 72 | +
|
| 73 | + SOURCE_PATH="third-party/dav1d/dav1d" |
| 74 | +
|
| 75 | + cp -R "$$SOURCE_PATH" "$$BUILD_DIR/" |
| 76 | +
|
| 77 | + mkdir -p "$$BUILD_DIR/Public/dav1d" |
| 78 | + mkdir -p "$$BUILD_DIR/Public/compat" |
| 79 | + mkdir -p "$$BUILD_DIR/Public/common" |
| 80 | +
|
| 81 | + PATH="$$PATH:$$MESON_DIR/meson-1.6.0:$$NINJA_DIR" sh $$BUILD_DIR/build-dav1d-bazel.sh $$BUILD_ARCH "$$BUILD_DIR" |
| 82 | + """ + |
| 83 | + "\n".join([ |
| 84 | + "cp -f \"$$BUILD_DIR/dav1d/build/include/{}\" \"$(location Public/{})\"".format(header, header) for header in generated_headers |
| 85 | + ]) + |
| 86 | + "\n" + |
| 87 | + "\n".join([ |
| 88 | + "cp -f \"$$BUILD_DIR/dav1d/include/{}\" \"$(location Public/{})\"".format(header, header) for header in headers |
| 89 | + ]) + |
| 90 | + "\n" + |
| 91 | + "\n".join([ |
| 92 | + "cp -f \"$$BUILD_DIR/dav1d/build/src/lib{}.a\" \"$(location Public/dav1d/lib/lib{}.a)\"".format(lib, lib) for lib in libs |
| 93 | + ]), |
| 94 | + outs = ["Public/" + x for x in generated_headers] + |
| 95 | + ["Public/" + x for x in headers] + |
| 96 | + ["Public/dav1d/lib/lib{}.a".format(x) for x in libs], |
| 97 | + visibility = [ |
| 98 | + "//visibility:public", |
| 99 | + ] |
| 100 | +) |
| 101 | + |
| 102 | +cc_library( |
| 103 | + name = "dav1d_lib", |
| 104 | + srcs = [":Public/dav1d/lib/lib" + x + ".a" for x in libs] |
| 105 | +) |
| 106 | + |
| 107 | +objc_library( |
| 108 | + name = "dav1d", |
| 109 | + module_name = "dav1d", |
| 110 | + enable_modules = True, |
| 111 | + hdrs = [":Public/" + x for x in generated_headers], |
| 112 | + includes = [ |
| 113 | + "Public", |
| 114 | + ], |
| 115 | + deps = [ |
| 116 | + ":dav1d_lib", |
| 117 | + ], |
| 118 | + visibility = [ |
| 119 | + "//visibility:public", |
| 120 | + ], |
| 121 | +) |
0 commit comments