Skip to content

Commit

Permalink
Merge pull request #1485 from citrus-it/x265
Browse files Browse the repository at this point in the history
x265: add aarch64, fix 8+10+12-bit support
  • Loading branch information
hadfl authored Jul 9, 2024
2 parents 38c3211 + 77e0a4c commit 6819c15
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 32 deletions.
85 changes: 53 additions & 32 deletions build/x265/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,20 @@ DESC+="into the H.265/MPEG-H HEVC compression format"

set_builddir $PROG-$VER/source

CONFIGURE_OPTS[i386]="
-DLIB_INSTALL_DIR=lib
"
CONFIGURE_OPTS[amd64]="
-DLIB_INSTALL_DIR=lib/amd64
CONFIGURE_OPTS[i386]=" -DLIB_INSTALL_DIR=${LIBDIRS[i386]}"
CONFIGURE_OPTS[amd64]=" -DLIB_INSTALL_DIR=${LIBDIRS[amd64]}"
CONFIGURE_OPTS[aarch64]="
-DLIB_INSTALL_DIR=${LIBDIRS[aarch64]}
-DCROSS_COMPILE_ARM=ON
-DENABLE_ASSEMBLY=OFF
"
CONFIGURE_OPTS="
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=$PREFIX
"

LDFLAGS[amd64]+=" -R$PREFIX/lib/amd64"
CXXFLAGS[aarch64]+=" -mno-outline-atomics"
LDFLAGS[amd64]+=" -R$PREFIX/${LIBDIRS[amd64]}"

fix_version() {
pushd $TMPDIR/$BUILDDIR >/dev/null
Expand All @@ -48,57 +50,76 @@ set(X265_LATEST_TAG \"$VER\")
popd >/dev/null
}

save_function build64 _build64
build64() {
[ -d "$TMPDIR/_deproot" ] || mkdir -p $TMPDIR/_deproot \
|| logerr "mkdir _deproot failed"
post_install() {
typeset arch=$arch

[ -n "$INSTALL_TARG" ] || return
typeset src=$DESTDIR/$PREFIX/lib/$arch/libx265.a
[ -f "$src" ] || src=$DESTDIR/$PREFIX/lib/libx265.a
$MKDIR -p $TMPDIR/_deproot/
$CP $src $TMPDIR/_deproot/$INSTALL_TARG.a \
|| logerr "Installation of $INSTALL_TARG.a failed"
}

run_build() {
typeset args="$@"

# We only need to build the 10 and 12 bit variants for 64-bit, so
# temporarily switch to 64-bit only.
save_variable BUILDARCH
set_arch 64 default

save_buildenv
save_builddir __x265_save__

note -n "-- Building $PROG 10bit"
save_variable BUILDDIR
BUILDDIR+="/10bit"
logcmd mkdir -p $TMPDIR/$BUILDDIR || logerr "mkdir failed"
CONFIGURE_OPTS[amd64]+="
append_builddir "10bit"
CONFIGURE_OPTS[$BUILDARCH]+="
-DHIGH_BIT_DEPTH=ON
-DEXPORT_C_API=OFF
-DENABLE_SHARED=OFF
-DENABLE_CLI=OFF
"
_build64
logcmd cp -f $TMPDIR/$BUILDDIR/libx265.a $TMPDIR/_deproot/libx265_main10.a \
|| logerr "cp libx265.a failed"
restore_variable BUILDDIR
INSTALL_TARG=libx265_main10 build $args

note -n "-- Building $PROG 12bit"
save_variable BUILDDIR
BUILDDIR+="/12bit"
logcmd mkdir -p $TMPDIR/$BUILDDIR || logerr "mkdir failed"
CONFIGURE_OPTS[amd64]+="
-DMAIN12=ON
"
_build64
logcmd cp -f $TMPDIR/$BUILDDIR/libx265.a $TMPDIR/_deproot/libx265_main12.a \
|| logerr "cp libx265.a failed"
restore_variable BUILDDIR
restore_builddir __x265_save__
append_builddir "12bit"
CONFIGURE_OPTS[$BUILDARCH]+=" -DMAIN12=ON"
INSTALL_TARG=libx265_main12 build $args

restore_builddir __x265_save__
restore_buildenv
unset INSTALL_TARG

note -n "-- Building $PROG 8bit"
CONFIGURE_OPTS[amd64]+="
CONFIGURE_OPTS[$BUILDARCH]+="
-DEXTRA_LIB=x265_main10.a;x265_main12.a
-DEXTRA_LINK_FLAGS=-L$TMPDIR/_deproot
-DLINKED_10BIT=ON -DLINKED_12BIT=ON
"
_build64

restore_variable BUILDARCH

note -n "-- Building $PROG 8bit"
build $args

# Check that we have been built with the 10- and 12-bit support that we
# need.
if ! is_cross; then
set_arch 64
LD_LIBRARY_PATH=$DESTDIR/$PREFIX/${LIBDIRS[$BUILDARCH]} \
$DESTDIR/$PREFIX/bin/$PROG --version 2>&1 \
| $FGREP -s '8bit+10bit+12bit' \
|| logerr 'Final library depth support is lacking'
fi
}

init
download_source $PROG $VER
patch_source
fix_version
prep_build cmake+ninja
build -noctf # C++
run_build -noctf # C++
strip_install
make_package
clean_up
Expand Down
1 change: 1 addition & 0 deletions doc/baseline.aarch64
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ extra.omnios ooce/multimedia/dav1d
extra.omnios ooce/multimedia/ffmpeg
extra.omnios ooce/multimedia/minidlna
extra.omnios ooce/multimedia/x264
extra.omnios ooce/multimedia/x265
extra.omnios ooce/network/irssi
extra.omnios ooce/network/nsd
extra.omnios ooce/network/openldap
Expand Down
1 change: 1 addition & 0 deletions doc/pkglist.aarch64
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ ooce/util/dtc
ooce/util/u-boot
ooce/library/libsodium
ooce/security/oath-toolkit
ooce/multimedia/x265
###############################################################################
.SYSROOT
ooce/audio/flac
Expand Down
10 changes: 10 additions & 0 deletions lib/functions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1026,6 +1026,16 @@ append_builddir() {
EXTRACTED_SRC+="/$1"
}

save_builddir() {
save_variable BUILDDIR $*
save_variable EXTRACTED_SRC $*
}

restore_builddir() {
restore_variable BUILDDIR $*
restore_variable EXTRACTED_SRC $*
}

set_patchdir() {
PATCHDIR="$1"
}
Expand Down

0 comments on commit 6819c15

Please sign in to comment.