build: complete HarmonyOS arm64 libmpv phase 1

This commit is contained in:
BoatingCloud committed 2026-08-28 19:08:53 +08:00
1 parent f178d38ce6
commit 75ed9dd2f4
34 files changed
+913 -151

No files matched your search

+29
View File
@@ -0,0 +1,29 @@
#!/bin/sh
set -eu
PROJECT_ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
HOST_ROOT=$PROJECT_ROOT/build/host-tools
VENV=$HOST_ROOT/venv
PKGCONF_SOURCE=$HOST_ROOT/pkgconf-source
PKGCONF_BUILD=$HOST_ROOT/pkgconf-build
PKGCONF_PREFIX=$HOST_ROOT/pkgconf
NINJA_DIR=/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony/native/build-tools/cmake/bin
mkdir -p "$HOST_ROOT"
test -x "$VENV/bin/python" || python3 -m venv "$VENV"
"$VENV/bin/python" -m pip install --disable-pip-version-check --quiet 'meson==1.9.0'
if test ! -d "$PKGCONF_SOURCE/.git"; then
git clone --branch pkgconf-3.0.6 --depth 1 https://github.com/pkgconf/pkgconf.git "$PKGCONF_SOURCE"
fi
PATH="$VENV/bin:$NINJA_DIR:$PATH"
export PATH
meson setup "$PKGCONF_BUILD" "$PKGCONF_SOURCE" --prefix "$PKGCONF_PREFIX" --buildtype release --wipe
meson compile -C "$PKGCONF_BUILD"
meson install -C "$PKGCONF_BUILD"
meson --version
"$PKGCONF_PREFIX/bin/pkgconf" --version
ninja --version
+16
View File
@@ -0,0 +1,16 @@
#!/bin/sh
set -eu
PROJECT_ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
"$PROJECT_ROOT/scripts/bootstrap-host-tools.sh"
"$PROJECT_ROOT/scripts/fetch-phase1-sources.sh"
"$PROJECT_ROOT/scripts/verify-toolchain.sh"
"$PROJECT_ROOT/scripts/prepare-sdk-dependencies.sh"
"$PROJECT_ROOT/scripts/build-openssl-ohos.sh"
"$PROJECT_ROOT/scripts/build-ffmpeg-ohos.sh"
"$PROJECT_ROOT/scripts/build-font-stack-ohos.sh"
"$PROJECT_ROOT/scripts/build-libplacebo-ohos.sh"
"$PROJECT_ROOT/scripts/build-mpv-ohos.sh"
"$PROJECT_ROOT/scripts/verify-ohos-prefix.sh"
+82
View File
@@ -0,0 +1,82 @@
#!/bin/sh
set -eu
. "$(dirname -- "$0")/setup-ohos-env.sh"
SOURCE=$OHOS_BUILD_ROOT/sources/ffmpeg
BUILD=$OHOS_BUILD_ROOT/build/ffmpeg
LOG_DIR=$OHOS_BUILD_ROOT/logs
JOBS=$(sysctl -n hw.ncpu)
test -f "$SOURCE/configure" || "$PROJECT_ROOT/scripts/fetch-phase1-sources.sh"
test -f "$PREFIX/lib/libssl.a" || "$PROJECT_ROOT/scripts/build-openssl-ohos.sh"
mkdir -p "$BUILD" "$LOG_DIR"
cd "$BUILD"
if ! "$SOURCE/configure" \
--prefix="$PREFIX" \
--enable-cross-compile \
--target-os=linux \
--arch=aarch64 \
--cc="$CC" \
--cxx="$CXX" \
--ar="$AR" \
--ranlib="$RANLIB" \
--strip="$STRIP" \
--nm="$NM" \
--sysroot="$OHOS_SYSROOT" \
--pkg-config="$PKG_CONFIG" \
--extra-cflags="--target=$TARGET -D__MUSL__ -fPIC" \
--extra-ldflags="--target=$TARGET -L$PREFIX/lib" \
--enable-pic \
--enable-static \
--disable-shared \
--disable-programs \
--disable-doc \
--disable-debug \
--disable-avdevice \
--disable-autodetect \
--enable-network \
--enable-openssl \
--enable-zlib \
--enable-ohcodec > "$LOG_DIR/ffmpeg-configure.log" 2>&1; then
tail -n 120 "$LOG_DIR/ffmpeg-configure.log" >&2
exit 1
fi
if ! make -j"$JOBS" > "$LOG_DIR/ffmpeg-build.log" 2>&1; then
tail -n 160 "$LOG_DIR/ffmpeg-build.log" >&2
exit 1
fi
make install > "$LOG_DIR/ffmpeg-install.log" 2>&1
"$PROJECT_ROOT/scripts/verify-static-archive.sh" \
"$PREFIX/lib/libavcodec.a" \
"$PREFIX/lib/libavfilter.a" \
"$PREFIX/lib/libavformat.a" \
"$PREFIX/lib/libavutil.a" \
"$PREFIX/lib/libswresample.a" \
"$PREFIX/lib/libswscale.a"
for library in libavcodec libavfilter libavformat libavutil libswresample libswscale; do
"$PKG_CONFIG" --modversion "$library"
done
for definition in \
CONFIG_H264_DECODER \
CONFIG_HEVC_DECODER \
CONFIG_H264_OH_DECODER \
CONFIG_HEVC_OH_DECODER \
CONFIG_MATROSKA_DEMUXER \
CONFIG_MOV_DEMUXER \
CONFIG_HTTP_PROTOCOL \
CONFIG_HTTPS_PROTOCOL \
CONFIG_TCP_PROTOCOL \
CONFIG_TLS_PROTOCOL; do
grep -q "^#define $definition 1$" "$BUILD/config_components.h" || {
printf 'Missing FFmpeg feature: %s\n' "$definition" >&2
exit 1
}
done
grep -q '^#define CONFIG_NETWORK 1$' "$BUILD/config.h"
grep -q '^#define CONFIG_OHCODEC 1$' "$BUILD/config.h"
+61
View File
@@ -0,0 +1,61 @@
#!/bin/sh
set -eu
. "$(dirname -- "$0")/setup-ohos-env.sh"
SOURCE_ROOT=$OHOS_BUILD_ROOT/sources
BUILD_ROOT=$OHOS_BUILD_ROOT/build
LOG_DIR=$OHOS_BUILD_ROOT/logs
test -f "$SOURCE_ROOT/freetype/meson.build" || "$PROJECT_ROOT/scripts/fetch-phase1-sources.sh"
mkdir -p "$BUILD_ROOT" "$LOG_DIR"
setup_build()
{
name=$1
shift
source_dir=$SOURCE_ROOT/$name
build_dir=$BUILD_ROOT/$name
if test -f "$build_dir/meson-private/coredata.dat"; then
meson setup "$build_dir" "$source_dir" --wipe "$@"
else
meson setup "$build_dir" "$source_dir" "$@"
fi
meson compile -C "$build_dir"
meson install -C "$build_dir"
}
setup_build freetype \
--cross-file "$CROSS_FILE" --prefix "$PREFIX" --buildtype release \
-Dzlib=system -Dharfbuzz=disabled -Dpng=disabled -Dbrotli=disabled \
-Dbzip2=disabled -Dtests=disabled > "$LOG_DIR/freetype.log" 2>&1
setup_build fribidi \
--cross-file "$CROSS_FILE" --prefix "$PREFIX" --buildtype release \
-Ddocs=false -Dbin=false -Dtests=false > "$LOG_DIR/fribidi.log" 2>&1
setup_build harfbuzz \
--cross-file "$CROSS_FILE" --prefix "$PREFIX" --buildtype release \
-Dglib=disabled -Dgobject=disabled -Dcairo=disabled -Dchafa=disabled \
-Dpng=disabled -Dzlib=disabled -Dicu=disabled -Dfreetype=enabled \
-Draster=disabled -Dvector=disabled -Dgpu=disabled -Dgpu_demo=disabled \
-Dsubset=disabled -Dtests=disabled -Dintrospection=disabled -Ddocs=disabled \
-Dutilities=disabled > "$LOG_DIR/harfbuzz.log" 2>&1
setup_build libass \
--cross-file "$CROSS_FILE" --prefix "$PREFIX" --buildtype release \
-Dfontconfig=disabled -Ddirectwrite=disabled -Dcoretext=disabled \
-Dasm=disabled -Dlibunibreak=disabled -Drequire-system-font-provider=false \
-Dtest=disabled -Dcompare=disabled -Dprofile=disabled -Dfuzz=disabled \
-Dcheckasm=disabled > "$LOG_DIR/libass.log" 2>&1
"$PROJECT_ROOT/scripts/verify-static-archive.sh" \
"$PREFIX/lib/libfreetype.a" \
"$PREFIX/lib/libfribidi.a" \
"$PREFIX/lib/libharfbuzz.a" \
"$PREFIX/lib/libass.a"
for library in freetype2 fribidi harfbuzz libass; do
printf '%s=' "$library"
"$PKG_CONFIG" --modversion "$library"
done
+36
View File
@@ -0,0 +1,36 @@
#!/bin/sh
set -eu
. "$(dirname -- "$0")/setup-ohos-env.sh"
SOURCE=$OHOS_BUILD_ROOT/sources/libplacebo
BUILD=$OHOS_BUILD_ROOT/build/libplacebo
LOG=$OHOS_BUILD_ROOT/logs/libplacebo.log
test -f "$SOURCE/meson.build" || "$PROJECT_ROOT/scripts/fetch-phase1-sources.sh"
mkdir -p "$OHOS_BUILD_ROOT/logs"
if test -f "$BUILD/meson-private/coredata.dat"; then
setup_mode=--wipe
else
setup_mode=
fi
if ! meson setup "$BUILD" "$SOURCE" $setup_mode \
--cross-file "$CROSS_FILE" --prefix "$PREFIX" --buildtype release \
-Dvulkan=disabled -Dopengl=disabled -Dd3d11=disabled \
-Dglslang=disabled -Dshaderc=disabled -Dlcms=disabled \
-Ddovi=disabled -Dlibdovi=disabled -Dunwind=disabled -Dxxhash=disabled \
-Ddemos=false -Dtests=false -Dbench=false -Dfuzz=false > "$LOG" 2>&1; then
tail -n 140 "$LOG" >&2
exit 1
fi
if ! meson compile -C "$BUILD" >> "$LOG" 2>&1; then
tail -n 180 "$LOG" >&2
exit 1
fi
meson install -C "$BUILD" >> "$LOG" 2>&1
"$PROJECT_ROOT/scripts/verify-static-archive.sh" "$PREFIX/lib/libplacebo.a"
"$PKG_CONFIG" --modversion libplacebo
"$PKG_CONFIG" --variable=pl_has_vulkan libplacebo
+40
View File
@@ -0,0 +1,40 @@
#!/bin/sh
set -eu
. "$(dirname -- "$0")/setup-ohos-env.sh"
BUILD=$OHOS_BUILD_ROOT/build/mpv
LOG=$OHOS_BUILD_ROOT/logs/mpv.log
mkdir -p "$OHOS_BUILD_ROOT/logs"
test -f "$PREFIX/lib/libavcodec.a" || "$PROJECT_ROOT/scripts/build-ffmpeg-ohos.sh"
test -f "$PREFIX/lib/libass.a" || "$PROJECT_ROOT/scripts/build-font-stack-ohos.sh"
test -f "$PREFIX/lib/libplacebo.a" || "$PROJECT_ROOT/scripts/build-libplacebo-ohos.sh"
if test -f "$BUILD/meson-private/coredata.dat"; then
setup_mode=--wipe
else
setup_mode=
fi
if ! meson setup "$BUILD" "$PROJECT_ROOT" $setup_mode \
--cross-file "$CROSS_FILE" --prefix "$PREFIX" --buildtype release \
-Ddefault_library=shared -Dauto_features=disabled \
-Dcplayer=false -Dlibmpv=true -Dtests=false -Dfuzzers=false \
-Dgpl=true -Dbuild-date=false -Dplain-gl=enabled -Dgl=enabled \
-Dzlib=enabled -Dvector=enabled -Dlua=disabled > "$LOG" 2>&1; then
tail -n 180 "$LOG" >&2
exit 1
fi
if ! meson compile -C "$BUILD" >> "$LOG" 2>&1; then
tail -n 220 "$LOG" >&2
exit 1
fi
meson install -C "$BUILD" >> "$LOG" 2>&1
LIBMPV=$BUILD/libmpv.so
test -f "$LIBMPV" || LIBMPV=$PREFIX/lib/libmpv.so
"$PROJECT_ROOT/scripts/verify-ohos-binary.sh" "$LIBMPV"
"$PROJECT_ROOT/scripts/verify-libmpv-symbols.sh" "$LIBMPV"
printf 'libmpv=%s\n' "$LIBMPV"
+32
View File
@@ -0,0 +1,32 @@
#!/bin/sh
set -eu
. "$(dirname -- "$0")/setup-ohos-env.sh"
SOURCE=$OHOS_BUILD_ROOT/sources/openssl
BUILD=$OHOS_BUILD_ROOT/build/openssl
LOG=$OHOS_BUILD_ROOT/logs/openssl.log
JOBS=$(sysctl -n hw.ncpu)
test -f "$SOURCE/Configure" || "$PROJECT_ROOT/scripts/fetch-phase1-sources.sh"
mkdir -p "$BUILD" "$PREFIX" "$OHOS_BUILD_ROOT/logs"
cd "$BUILD"
if ! CC="$CC --target=$TARGET --sysroot=$OHOS_SYSROOT -D__MUSL__ -fPIC" \
CXX="$CXX --target=$TARGET --sysroot=$OHOS_SYSROOT -D__MUSL__ -fPIC" \
AR="$AR" RANLIB="$RANLIB" \
perl "$SOURCE/Configure" linux-aarch64 \
no-shared no-tests no-apps no-docs no-module \
--prefix="$PREFIX" --openssldir=/etc/ssl --libdir=lib > "$LOG" 2>&1; then
tail -n 140 "$LOG" >&2
exit 1
fi
if ! make -j"$JOBS" >> "$LOG" 2>&1; then
tail -n 180 "$LOG" >&2
exit 1
fi
make install_sw >> "$LOG" 2>&1
"$PROJECT_ROOT/scripts/verify-static-archive.sh" "$PREFIX/lib/libcrypto.a" "$PREFIX/lib/libssl.a"
"$PKG_CONFIG" --modversion openssl
+33
View File
@@ -0,0 +1,33 @@
#!/bin/sh
set -eu
. "$(dirname -- "$0")/setup-ohos-env.sh"
SOURCE_ROOT=$OHOS_BUILD_ROOT/sources
mkdir -p "$SOURCE_ROOT"
fetch_ref()
{
name=$1
repository=$2
reference=$3
destination=$SOURCE_ROOT/$name
if test ! -d "$destination/.git"; then
mkdir -p "$destination"
git -C "$destination" init
git -C "$destination" remote add origin "$repository"
fi
git -C "$destination" fetch --depth 1 origin "$reference"
git -C "$destination" checkout --detach FETCH_HEAD
printf '%-12s %s %s\n' "$name" "$(git -C "$destination" rev-parse HEAD)" "$(git -C "$destination" describe --tags --always)"
}
fetch_ref openssl https://github.com/openssl/openssl.git openssl-3.6.4
fetch_ref ffmpeg https://git.ffmpeg.org/ffmpeg.git 3acec0a1af2dda0a0838689b8b8649e7deb080a0
fetch_ref freetype https://github.com/freetype/freetype.git VER-2-14-3
fetch_ref fribidi https://github.com/fribidi/fribidi.git v1.0.16
fetch_ref harfbuzz https://github.com/harfbuzz/harfbuzz.git 14.4.0
fetch_ref libass https://github.com/libass/libass.git 0.17.5
fetch_ref libplacebo https://code.videolan.org/videolan/libplacebo.git v7.360.1
git -C "$SOURCE_ROOT/libplacebo" submodule update --init --depth 1
+15
View File
@@ -0,0 +1,15 @@
#!/bin/sh
set -eu
PROJECT_ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
PREFIX=${PREFIX:-$PROJECT_ROOT/build/ohos-arm64/prefix}
PKGCONF=$PROJECT_ROOT/build/host-tools/pkgconf/bin/pkgconf
test -x "$PKGCONF" || { printf 'pkgconf is not bootstrapped: %s\n' "$PKGCONF" >&2; exit 1; }
PKG_CONFIG_DIR= \
PKG_CONFIG_PATH= \
PKG_CONFIG_LIBDIR="$PREFIX/lib/pkgconfig:$PREFIX/share/pkgconfig" \
PKG_CONFIG_SYSROOT_DIR= \
exec "$PKGCONF" "$@"
+22
View File
@@ -0,0 +1,22 @@
#!/bin/sh
set -eu
. "$(dirname -- "$0")/setup-ohos-env.sh"
PC_DIR=$PREFIX/lib/pkgconfig
mkdir -p "$PC_DIR"
printf '%s\n' \
"prefix=$OHOS_SYSROOT/usr" \
'exec_prefix=${prefix}' \
'libdir=${prefix}/lib/aarch64-linux-ohos' \
'includedir=${prefix}/include' \
'' \
'Name: zlib' \
'Description: OpenHarmony SDK zlib' \
'Version: 1.2.13' \
'Libs: -L${libdir} -lz' \
'Cflags: -I${includedir}' > "$PC_DIR/zlib.pc"
"$PKG_CONFIG" --modversion zlib
"$PKG_CONFIG" --libs --cflags zlib
+7
View File
@@ -0,0 +1,7 @@
#include <stdio.h>
int main(void)
{
puts("HarmonyOS C probe");
return 0;
}
+7
View File
@@ -0,0 +1,7 @@
#include <cstdio>
int main()
{
std::puts("HarmonyOS C++ probe");
return 0;
}
+47
View File
@@ -0,0 +1,47 @@
#!/bin/sh
set -eu
if test -f "$(pwd)/meson.build"; then
PROJECT_ROOT=$(pwd)
else
PROJECT_ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
fi
DEFAULT_OHOS_SDK=/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony
OHOS_SDK=${OHOS_SDK:-$DEFAULT_OHOS_SDK}
OHOS_NATIVE=$OHOS_SDK/native
OHOS_SYSROOT=$OHOS_NATIVE/sysroot
OHOS_TOOLCHAIN=$OHOS_NATIVE/llvm/bin
OHOS_BUILD_ROOT=${OHOS_BUILD_ROOT:-$PROJECT_ROOT/build/ohos-arm64}
PREFIX=${PREFIX:-$OHOS_BUILD_ROOT/prefix}
TARGET=aarch64-linux-ohos
for path in "$OHOS_SYSROOT" "$OHOS_TOOLCHAIN/clang" "$OHOS_TOOLCHAIN/clang++" \
"$OHOS_TOOLCHAIN/llvm-ar" "$OHOS_TOOLCHAIN/llvm-ranlib" \
"$OHOS_TOOLCHAIN/llvm-strip" "$OHOS_TOOLCHAIN/llvm-readelf"; do
test -e "$path" || { printf 'Missing OHOS toolchain path: %s\n' "$path" >&2; return 1 2>/dev/null || exit 1; }
done
CC=$OHOS_TOOLCHAIN/clang
CXX=$OHOS_TOOLCHAIN/clang++
AR=$OHOS_TOOLCHAIN/llvm-ar
RANLIB=$OHOS_TOOLCHAIN/llvm-ranlib
STRIP=$OHOS_TOOLCHAIN/llvm-strip
READELF=$OHOS_TOOLCHAIN/llvm-readelf
NM=$OHOS_TOOLCHAIN/llvm-nm
PKG_CONFIG=$PROJECT_ROOT/scripts/pkg-config-ohos.sh
CROSS_FILE=$PROJECT_ROOT/toolchains/ohos-api24-arm64.ini
OHOS_COMMON_FLAGS="--target=$TARGET --sysroot=$OHOS_SYSROOT -D__MUSL__"
PATH=$PROJECT_ROOT/build/host-tools/venv/bin:$OHOS_NATIVE/build-tools/cmake/bin:$PATH
PKG_CONFIG_DIR=
PKG_CONFIG_PATH=
PKG_CONFIG_LIBDIR=$PREFIX/lib/pkgconfig:$PREFIX/share/pkgconfig
PKG_CONFIG_SYSROOT_DIR=
unset CPATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH LIBRARY_PATH CMAKE_PREFIX_PATH
export PROJECT_ROOT OHOS_SDK OHOS_NATIVE OHOS_SYSROOT OHOS_TOOLCHAIN
export OHOS_BUILD_ROOT PREFIX TARGET CC CXX AR RANLIB STRIP READELF NM
export PKG_CONFIG CROSS_FILE OHOS_COMMON_FLAGS PATH
export PKG_CONFIG_DIR PKG_CONFIG_PATH PKG_CONFIG_LIBDIR PKG_CONFIG_SYSROOT_DIR
+25
View File
@@ -0,0 +1,25 @@
#!/bin/sh
set -eu
test "$#" -eq 1 || { printf 'Usage: %s LIBMPV\n' "$0" >&2; exit 2; }
. "$(dirname -- "$0")/setup-ohos-env.sh"
LIBMPV=$1
SYMBOLS=$($NM -D --defined-only "$LIBMPV")
for symbol in \
mpv_create \
mpv_initialize \
mpv_command \
mpv_set_property \
mpv_get_property \
mpv_render_context_create \
mpv_render_context_render \
mpv_render_context_set_update_callback \
mpv_render_context_free; do
printf '%s\n' "$SYMBOLS" | grep -Eq "[[:space:]]${symbol}$" || {
printf 'Missing libmpv symbol: %s\n' "$symbol" >&2
exit 1
}
printf '%s\n' "$symbol"
done
+16
View File
@@ -0,0 +1,16 @@
#!/bin/sh
set -eu
test "$#" -gt 0 || { printf 'Usage: %s FILE...\n' "$0" >&2; exit 2; }
. "$(dirname -- "$0")/setup-ohos-env.sh"
for artifact in "$@"; do
test -f "$artifact" || { printf 'Missing artifact: %s\n' "$artifact" >&2; exit 1; }
description=$(file "$artifact")
header=$($READELF -h "$artifact")
printf '%s\n%s\n' "$description" "$header"
printf '%s\n' "$description" | grep -q 'ELF 64-bit LSB'
printf '%s\n' "$header" | grep -q 'Machine:.*AArch64'
$READELF -d "$artifact" 2>/dev/null || true
done
+46
View File
@@ -0,0 +1,46 @@
#!/bin/sh
set -eu
. "$(dirname -- "$0")/setup-ohos-env.sh"
LIBMPV=$PREFIX/lib/libmpv.so.2.5.0
test -f "$LIBMPV" || { printf 'Missing libmpv: %s\n' "$LIBMPV" >&2; exit 1; }
archive_count=0
for archive in "$PREFIX"/lib/*.a; do
test -f "$archive" || continue
archive_count=$((archive_count + 1))
temp_dir=$(mktemp -d)
(
cd "$temp_dir"
"$AR" x "$archive"
object_count=$(find . -type f | wc -l | tr -d ' ')
machine_count=$(find . -type f -exec "$READELF" -h {} + 2>/dev/null | grep -c 'Machine:.*AArch64')
test "$object_count" -gt 0
test "$object_count" -eq "$machine_count" || {
printf 'Non-AArch64 archive member: %s (%s/%s)\n' "$archive" "$machine_count" "$object_count" >&2
exit 1
}
)
rm -r "$temp_dir"
done
test "$archive_count" -gt 0
if find "$PREFIX" -type f \( -name '*.pc' -o -name '*.cmake' -o -name '*.ninja' \) \
-exec grep -El '(^|[[:space:]])-[IL]/(opt/homebrew|usr/local)|\.dylib|[[:space:]]-framework[[:space:]]' {} + | grep -q .; then
printf 'Host library path found in target metadata\n' >&2
exit 1
fi
needed=$($READELF -d "$LIBMPV" | sed -n 's/.*Shared library: \[\([^]]*\)\].*/\1/p')
for library in $needed; do
case "$library" in
libc.so|libz.so|libnative_media_vdec.so|libnative_media_venc.so|libnative_media_codecbase.so|libnative_media_core.so|libnative_window.so) ;;
*) printf 'Unexpected dynamic dependency: %s\n' "$library" >&2; exit 1 ;;
esac
done
"$PROJECT_ROOT/scripts/verify-ohos-binary.sh" "$LIBMPV"
"$PROJECT_ROOT/scripts/verify-libmpv-symbols.sh" "$LIBMPV"
printf 'verified_archives=%s\n' "$archive_count"
printf 'dynamic_dependencies=%s\n' "$(printf '%s' "$needed" | tr '\n' ',')"
+23
View File
@@ -0,0 +1,23 @@
#!/bin/sh
set -eu
test "$#" -gt 0 || { printf 'Usage: %s ARCHIVE...\n' "$0" >&2; exit 2; }
. "$(dirname -- "$0")/setup-ohos-env.sh"
for archive in "$@"; do
test -f "$archive" || { printf 'Missing archive: %s\n' "$archive" >&2; exit 1; }
members=$($AR t "$archive")
member=$(printf '%s\n' "$members" | sed -n '1p')
test -n "$member" || { printf 'Empty archive: %s\n' "$archive" >&2; exit 1; }
temp_dir=$(mktemp -d)
(
cd "$temp_dir"
"$AR" x "$archive" "$member"
header=$($READELF -h "$member")
printf '%s: %s\n' "$archive" "$member"
printf '%s\n' "$header"
printf '%s\n' "$header" | grep -q 'Machine:.*AArch64'
)
rm -r "$temp_dir"
done
+14
View File
@@ -0,0 +1,14 @@
#!/bin/sh
set -eu
. "$(dirname -- "$0")/setup-ohos-env.sh"
PROBE_DIR=$OHOS_BUILD_ROOT/probes
mkdir -p "$PROBE_DIR"
"$CC" --target="$TARGET" --sysroot="$OHOS_SYSROOT" -D__MUSL__ \
"$PROJECT_ROOT/scripts/probes/hello.c" -o "$PROBE_DIR/hello-c"
"$CXX" --target="$TARGET" --sysroot="$OHOS_SYSROOT" -D__MUSL__ \
"$PROJECT_ROOT/scripts/probes/hello.cpp" -o "$PROBE_DIR/hello-cpp"
"$PROJECT_ROOT/scripts/verify-ohos-binary.sh" "$PROBE_DIR/hello-c" "$PROBE_DIR/hello-cpp"