load("//Config:buck_rule_macros.bzl", "static_library", "gen_header_targets", "merge_maps") headers = [ "mozjpeg/turbojpeg.h", "mozjpeg/jpeglib.h", "mozjpeg/jmorecfg.h", "mozjpeg/jconfig.h", ] libs = [ "jpeg", "turbojpeg" ] genrule( name = "libmozjpeg_build", srcs = glob([ "mozjpeg/**/*", ], exclude = ["mozjpeg/**/.*"]) + [ "build-mozjpeg-buck.sh", ], bash = """ set -ex mkdir -p "$OUT" mkdir -p "$OUT/Public/mozjpeg" mkdir -p "$OUT/Public/lib" CMAKE_DIR="$(location //third-party/cmake:cmake)/cmake-3.16.0" BUILD_ARCH="arm64" BUILD_DIR="$OUT/$BUILD_ARCH" rm -rf "$BUILD_DIR" mkdir -p "$BUILD_DIR" cp "$SRCDIR/build-mozjpeg-buck.sh" "$BUILD_DIR/" cp -R "$SRCDIR/mozjpeg" "$BUILD_DIR/" mkdir -p "$BUILD_DIR/Public/mozjpeg" PATH="$PATH:$CMAKE_DIR/bin" sh $BUILD_DIR/build-mozjpeg-buck.sh $BUILD_ARCH "$BUILD_DIR/mozjpeg" "$BUILD_DIR" cp $BUILD_DIR/mozjpeg/turbojpeg.h "$OUT/Public/mozjpeg/" cp $BUILD_DIR/mozjpeg/jpeglib.h "$OUT/Public/mozjpeg/" cp $BUILD_DIR/mozjpeg/jmorecfg.h "$OUT/Public/mozjpeg/" cp $BUILD_DIR/build/jconfig.h "$OUT/Public/mozjpeg/" BUILD_ARCH="armv7" BUILD_DIR="$OUT/$BUILD_ARCH" rm -rf "$BUILD_DIR" mkdir -p "$BUILD_DIR" cp "$SRCDIR/build-mozjpeg-buck.sh" "$BUILD_DIR/" cp -R "$SRCDIR/mozjpeg" "$BUILD_DIR/" mkdir -p "$BUILD_DIR/Public/mozjpeg" PATH="$PATH:$CMAKE_DIR/bin" sh $BUILD_DIR/build-mozjpeg-buck.sh $BUILD_ARCH "$BUILD_DIR/mozjpeg" "$BUILD_DIR" lipo -create $OUT/arm64/build/libjpeg.a $OUT/armv7/build/libjpeg.a -output $OUT/Public/lib/libjpeg.a lipo -create $OUT/arm64/build/libturbojpeg.a $OUT/armv7/build/libturbojpeg.a -output $OUT/Public/lib/libturbojpeg.a """, out = "libmozjpeg", visibility = [ "PUBLIC", ] ) mozjpeg_header_targets = gen_header_targets(headers, "libmozjpeg_header_", "", "libmozjpeg_build", "Public") apple_library( name = "mozjpeg_lib", exported_headers = mozjpeg_header_targets, visibility = [ "//third-party/mozjpeg:mozjpeg" ], header_namespace = "mozjpeg", linker_flags = [ "-L$(location :libmozjpeg_build)/Public/lib", "-ljpeg", "-lturbojpeg", ], exported_linker_flags = [ "-L$(location :libmozjpeg_build)/Public/lib", "-ljpeg", "-lturbojpeg", ], deps = [ ":libmozjpeg_build", ], ) static_library( name = "mozjpeg", exported_headers = mozjpeg_header_targets, deps = [ ":libmozjpeg_build", ":mozjpeg_lib", ], frameworks = [ "$SDKROOT/System/Library/Frameworks/Foundation.framework", ], )