mirror of
https://github.com/levogevo/ffmpeg-builder.git
synced 2026-07-21 21:45:21 +00:00
add libbluray,libjxl
This commit is contained in:
+3
-2
@@ -449,7 +449,8 @@ get_date() {
|
|||||||
|
|
||||||
get_remote_head() {
|
get_remote_head() {
|
||||||
local url="$1"
|
local url="$1"
|
||||||
# ${build} is magically populated from get_build_conf
|
local build="$2"
|
||||||
|
local ver="$3"
|
||||||
local remoteCommitFile="${TMP_DIR}/${build}-remote-head.txt"
|
local remoteCommitFile="${TMP_DIR}/${build}-remote-head.txt"
|
||||||
local date="$(get_date)"
|
local date="$(get_date)"
|
||||||
# want to cache the remote head for faster retrieval
|
# want to cache the remote head for faster retrieval
|
||||||
@@ -463,7 +464,7 @@ get_remote_head() {
|
|||||||
remoteHEAD="${prevCommit}"
|
remoteHEAD="${prevCommit}"
|
||||||
else
|
else
|
||||||
IFS=$' \t' read -r remoteHEAD _ <<< \
|
IFS=$' \t' read -r remoteHEAD _ <<< \
|
||||||
"$(git ls-remote "${url}" HEAD)"
|
"$(git ls-remote "${url}" "${ver}")"
|
||||||
echo "${date} ${build} ${remoteHEAD}" >"${remoteCommitFile}"
|
echo "${date} ${build} ${remoteHEAD}" >"${remoteCommitFile}"
|
||||||
fi
|
fi
|
||||||
echo "${remoteHEAD}"
|
echo "${remoteHEAD}"
|
||||||
|
|||||||
+85
-29
@@ -29,6 +29,8 @@ set_compile_opts() {
|
|||||||
PGO_FLAG
|
PGO_FLAG
|
||||||
LIB_SUFF
|
LIB_SUFF
|
||||||
BUILD_TYPE
|
BUILD_TYPE
|
||||||
|
NO_BUILD_TYPE
|
||||||
|
SHARED
|
||||||
)
|
)
|
||||||
unset "${BUILD_ENV_NAMES[@]}"
|
unset "${BUILD_ENV_NAMES[@]}"
|
||||||
export "${EXPORTED_ENV_NAMES[@]}"
|
export "${EXPORTED_ENV_NAMES[@]}"
|
||||||
@@ -228,15 +230,9 @@ fi' >"${compilerDir}/which"
|
|||||||
# static/shared linking
|
# static/shared linking
|
||||||
if [[ ${STATIC} == 'ON' ]]; then
|
if [[ ${STATIC} == 'ON' ]]; then
|
||||||
BUILD_TYPE=static
|
BUILD_TYPE=static
|
||||||
CONFIGURE_FLAGS+=(
|
NO_BUILD_TYPE=shared
|
||||||
'--enable-static'
|
SHARED=OFF
|
||||||
'--disable-shared'
|
|
||||||
)
|
|
||||||
MESON_FLAGS+=('--default-library=static')
|
MESON_FLAGS+=('--default-library=static')
|
||||||
CMAKE_FLAGS+=(
|
|
||||||
"-DENABLE_SHARED=OFF"
|
|
||||||
"-DBUILD_SHARED_LIBS=OFF"
|
|
||||||
)
|
|
||||||
# darwin does not support -static
|
# darwin does not support -static
|
||||||
if is_darwin; then
|
if is_darwin; then
|
||||||
FFMPEG_EXTRA_FLAGS+=("--extra-ldflags=${LDFLAGS_ARR[*]}")
|
FFMPEG_EXTRA_FLAGS+=("--extra-ldflags=${LDFLAGS_ARR[*]}")
|
||||||
@@ -244,14 +240,11 @@ fi' >"${compilerDir}/which"
|
|||||||
FFMPEG_EXTRA_FLAGS+=("--extra-ldflags=${LDFLAGS_ARR[*]} -static")
|
FFMPEG_EXTRA_FLAGS+=("--extra-ldflags=${LDFLAGS_ARR[*]} -static")
|
||||||
fi
|
fi
|
||||||
FFMPEG_EXTRA_FLAGS+=("--pkg-config-flags=--static")
|
FFMPEG_EXTRA_FLAGS+=("--pkg-config-flags=--static")
|
||||||
# remove shared libraries for static builds
|
|
||||||
USE_LIB_SUFF="${STATIC_LIB_SUFF}"
|
|
||||||
DEL_LIB_SUFF="${SHARED_LIB_SUFF}"
|
|
||||||
else
|
else
|
||||||
BUILD_TYPE=shared
|
BUILD_TYPE=shared
|
||||||
|
NO_BUILD_TYPE=static
|
||||||
|
SHARED=ON
|
||||||
CMAKE_FLAGS+=(
|
CMAKE_FLAGS+=(
|
||||||
"-DENABLE_SHARED=ON"
|
|
||||||
"-DBUILD_SHARED_LIBS=ON"
|
|
||||||
"-DCMAKE_INSTALL_RPATH=${LIBDIR}"
|
"-DCMAKE_INSTALL_RPATH=${LIBDIR}"
|
||||||
"-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON"
|
"-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON"
|
||||||
)
|
)
|
||||||
@@ -263,15 +256,18 @@ fi' >"${compilerDir}/which"
|
|||||||
fi
|
fi
|
||||||
FFMPEG_EXTRA_FLAGS+=("--extra-ldflags=${LDFLAGS_ARR[*]}")
|
FFMPEG_EXTRA_FLAGS+=("--extra-ldflags=${LDFLAGS_ARR[*]}")
|
||||||
LDFLAGS_ARR+=("-Wl,-rpath,${LIBDIR}")
|
LDFLAGS_ARR+=("-Wl,-rpath,${LIBDIR}")
|
||||||
CONFIGURE_FLAGS+=(
|
|
||||||
'--enable-shared'
|
|
||||||
'--disable-static'
|
|
||||||
)
|
|
||||||
FFMPEG_EXTRA_FLAGS+=('--enable-rpath')
|
FFMPEG_EXTRA_FLAGS+=('--enable-rpath')
|
||||||
# remove static libraries for shared builds
|
|
||||||
USE_LIB_SUFF="${SHARED_LIB_SUFF}"
|
|
||||||
DEL_LIB_SUFF="${STATIC_LIB_SUFF}"
|
|
||||||
fi
|
fi
|
||||||
|
CMAKE_FLAGS+=(
|
||||||
|
"-DENABLE_SHARED=${SHARED}"
|
||||||
|
"-DBUILD_SHARED_LIBS=${SHARED}"
|
||||||
|
)
|
||||||
|
CONFIGURE_FLAGS+=(
|
||||||
|
"--enable-${BUILD_TYPE}"
|
||||||
|
"--disable-${NO_BUILD_TYPE}"
|
||||||
|
)
|
||||||
|
declare -gn USE_LIB_SUFF="${BUILD_TYPE^^}_LIB_SUFF"
|
||||||
|
declare -gn DEL_LIB_SUFF="${NO_BUILD_TYPE^^}_LIB_SUFF"
|
||||||
|
|
||||||
# architecture/cpu compile flags
|
# architecture/cpu compile flags
|
||||||
# arm prefers -mcpu over -march for native builds
|
# arm prefers -mcpu over -march for native builds
|
||||||
@@ -340,7 +336,7 @@ libsvtav1_hdr 4.0.1 tar.gz https://github.com/juliobbv-p/svt-av1-h
|
|||||||
libsvtav1_psy 3.0.2-B tar.gz https://github.com/BlueSwordM/svt-av1-psyex/archive/refs/tags/v${ver}.${ext} dovi_tool,hdr10plus_tool,cpuinfo
|
libsvtav1_psy 3.0.2-B tar.gz https://github.com/BlueSwordM/svt-av1-psyex/archive/refs/tags/v${ver}.${ext} dovi_tool,hdr10plus_tool,cpuinfo
|
||||||
hdr10plus_tool 1.7.2 tar.gz https://github.com/quietvoid/hdr10plus_tool/archive/refs/tags/${ver}.${ext}
|
hdr10plus_tool 1.7.2 tar.gz https://github.com/quietvoid/hdr10plus_tool/archive/refs/tags/${ver}.${ext}
|
||||||
dovi_tool 2.3.1 tar.gz https://github.com/quietvoid/dovi_tool/archive/refs/tags/${ver}.${ext}
|
dovi_tool 2.3.1 tar.gz https://github.com/quietvoid/dovi_tool/archive/refs/tags/${ver}.${ext}
|
||||||
cpuinfo latest git https://github.com/pytorch/cpuinfo/
|
cpuinfo main git https://github.com/pytorch/cpuinfo/
|
||||||
|
|
||||||
libsvtav1 4.0.1 tar.gz https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v${ver}/SVT-AV1-v${ver}.${ext}
|
libsvtav1 4.0.1 tar.gz https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v${ver}/SVT-AV1-v${ver}.${ext}
|
||||||
librav1e 0.8.1 tar.gz https://github.com/xiph/rav1e/archive/refs/tags/v${ver}.${ext}
|
librav1e 0.8.1 tar.gz https://github.com/xiph/rav1e/archive/refs/tags/v${ver}.${ext}
|
||||||
@@ -348,13 +344,18 @@ libaom 3.13.1 tar.gz https://storage.googleapis.com/aom-rele
|
|||||||
libvmaf 3.0.0 tar.gz https://github.com/Netflix/vmaf/archive/refs/tags/v${ver}.${ext}
|
libvmaf 3.0.0 tar.gz https://github.com/Netflix/vmaf/archive/refs/tags/v${ver}.${ext}
|
||||||
libopus 1.6 tar.gz https://github.com/xiph/opus/archive/refs/tags/v${ver}.${ext}
|
libopus 1.6 tar.gz https://github.com/xiph/opus/archive/refs/tags/v${ver}.${ext}
|
||||||
libdav1d 1.5.3 tar.xz https://downloads.videolan.org/videolan/dav1d/${ver}/dav1d-${ver}.${ext}
|
libdav1d 1.5.3 tar.xz https://downloads.videolan.org/videolan/dav1d/${ver}/dav1d-${ver}.${ext}
|
||||||
libx264 latest git https://code.videolan.org/videolan/x264.git
|
libx264 master git https://code.videolan.org/videolan/x264.git
|
||||||
libmp3lame 3.100 tar.gz https://pilotfiber.dl.sourceforge.net/project/lame/lame/${ver}/lame-${ver}.${ext}
|
libmp3lame 3.100 tar.gz https://pilotfiber.dl.sourceforge.net/project/lame/lame/${ver}/lame-${ver}.${ext}
|
||||||
libvpx 1.16.0 tar.gz https://github.com/webmproject/libvpx/archive/refs/tags/v${ver}.${ext}
|
libvpx 1.16.0 tar.gz https://github.com/webmproject/libvpx/archive/refs/tags/v${ver}.${ext}
|
||||||
|
libbluray 1.4.0 tar.xz https://download.videolan.org/pub/videolan/libbluray/${ver}/libbluray-${ver}.${ext} libfontconfig,libfreetype,libxml2
|
||||||
|
libsnappy 1.2.2 tar.gz https://github.com/google/snappy/archive/refs/tags/${ver}.${ext}
|
||||||
|
libssh 0.11.1 tar.gz https://github.com/canonical/libssh/archive/refs/tags/libssh-${ver}.${ext} libcrypto
|
||||||
|
libcrypto 3.6.1 tar.gz https://github.com/openssl/openssl/archive/refs/tags/openssl-${ver}.${ext} brotli,zlib,zstd
|
||||||
|
|
||||||
libvorbis 1.3.7 tar.xz https://github.com/xiph/vorbis/releases/download/v${ver}/libvorbis-${ver}.${ext} libogg,cmake3
|
libvorbis 1.3.7 tar.xz https://github.com/xiph/vorbis/releases/download/v${ver}/libvorbis-${ver}.${ext} libogg,cmake3
|
||||||
libogg 1.3.6 tar.xz https://github.com/xiph/ogg/releases/download/v${ver}/libogg-${ver}.${ext}
|
libogg 1.3.6 tar.xz https://github.com/xiph/ogg/releases/download/v${ver}/libogg-${ver}.${ext}
|
||||||
|
|
||||||
|
libjxl v0.11.2 git https://github.com/libjxl/libjxl brotli,libpng
|
||||||
libopenjpeg 2.5.4 tar.gz https://github.com/uclouvain/openjpeg/archive/refs/tags/v${ver}.${ext} libtiff,lcms2
|
libopenjpeg 2.5.4 tar.gz https://github.com/uclouvain/openjpeg/archive/refs/tags/v${ver}.${ext} libtiff,lcms2
|
||||||
lcms2 2.18 tar.gz https://github.com/mm2/Little-CMS/archive/refs/tags/lcms${ver}.${ext} libtiff,libjpeg
|
lcms2 2.18 tar.gz https://github.com/mm2/Little-CMS/archive/refs/tags/lcms${ver}.${ext} libtiff,libjpeg
|
||||||
libtiff 4.7.1 tar.gz https://github.com/libsdl-org/libtiff/archive/refs/tags/v${ver}.${ext} libwebp,libdeflate,xz,zstd
|
libtiff 4.7.1 tar.gz https://github.com/libsdl-org/libtiff/archive/refs/tags/v${ver}.${ext} libwebp,libdeflate,xz,zstd
|
||||||
@@ -384,7 +385,7 @@ libunibreak 6.1 tar.gz https://github.com/adah1972/libunibreak
|
|||||||
libxml2 2.15.1 tar.gz https://github.com/GNOME/libxml2/archive/refs/tags/v${ver}.${ext}
|
libxml2 2.15.1 tar.gz https://github.com/GNOME/libxml2/archive/refs/tags/v${ver}.${ext}
|
||||||
xz 5.8.2 tar.xz https://github.com/tukaani-project/xz/releases/download/v${ver}/xz-${ver}.${ext}
|
xz 5.8.2 tar.xz https://github.com/tukaani-project/xz/releases/download/v${ver}/xz-${ver}.${ext}
|
||||||
libfribidi 1.0.16 tar.xz https://github.com/fribidi/fribidi/releases/download/v${ver}/fribidi-${ver}.${ext}
|
libfribidi 1.0.16 tar.xz https://github.com/fribidi/fribidi/releases/download/v${ver}/fribidi-${ver}.${ext}
|
||||||
bzip latest git https://github.com/libarchive/bzip2.git
|
bzip master git https://github.com/libarchive/bzip2.git
|
||||||
brotli 1.2.0 tar.gz https://github.com/google/brotli/archive/refs/tags/v${ver}.${ext}
|
brotli 1.2.0 tar.gz https://github.com/google/brotli/archive/refs/tags/v${ver}.${ext}
|
||||||
expat 2.7.3 tar.xz https://github.com/libexpat/libexpat/releases/download/R_${ver//./_}/expat-${ver}.${ext}
|
expat 2.7.3 tar.xz https://github.com/libexpat/libexpat/releases/download/R_${ver//./_}/expat-${ver}.${ext}
|
||||||
|
|
||||||
@@ -447,11 +448,9 @@ supmover 2.4.3 tar.gz https://github.com/MonoS/SupMover/archi
|
|||||||
# shellcheck disable=SC2206
|
# shellcheck disable=SC2206
|
||||||
deps=(${deps//,/ })
|
deps=(${deps//,/ })
|
||||||
fi
|
fi
|
||||||
# set version based off of remote head
|
# set extracted directory
|
||||||
# and set extracted directory
|
|
||||||
if [[ ${ext} == 'git' ]]; then
|
if [[ ${ext} == 'git' ]]; then
|
||||||
ver="$(get_remote_head "${url}")"
|
extractedDir="${BUILD_DIR}/${build}-${ext}-${ver}"
|
||||||
extractedDir="${BUILD_DIR}/${build}-${ext}"
|
|
||||||
else
|
else
|
||||||
extractedDir="${BUILD_DIR}/${build}-v${ver}"
|
extractedDir="${BUILD_DIR}/${build}-v${ver}"
|
||||||
fi
|
fi
|
||||||
@@ -521,12 +520,15 @@ download_release() {
|
|||||||
else
|
else
|
||||||
# for git downloads
|
# for git downloads
|
||||||
test -d "${download}" ||
|
test -d "${download}" ||
|
||||||
git clone --depth 1 --recursive "${url}" "${download}" || return 1
|
git clone \
|
||||||
|
--branch "${ver}" \
|
||||||
|
--depth 1 \
|
||||||
|
--recursive "${url}" "${download}" || return 1
|
||||||
(
|
(
|
||||||
cd "${download}" || exit 1
|
cd "${download}" || exit 1
|
||||||
local localHEAD remoteHEAD
|
local localHEAD remoteHEAD
|
||||||
localHEAD="$(git rev-parse HEAD)"
|
localHEAD="$(git rev-parse HEAD)"
|
||||||
remoteHEAD="$(get_remote_head "${url}")"
|
remoteHEAD="$(get_remote_head "${url}" "${build}" "${ver}")"
|
||||||
if [[ ${localHEAD} != "${remoteHEAD}" ]]; then
|
if [[ ${localHEAD} != "${remoteHEAD}" ]]; then
|
||||||
git stash
|
git stash
|
||||||
git pull --ff-only
|
git pull --ff-only
|
||||||
@@ -714,6 +716,11 @@ sanitize_sysroot_libs() {
|
|||||||
|
|
||||||
local libs=("$@")
|
local libs=("$@")
|
||||||
|
|
||||||
|
if [[ -z ${USE_LIB_SUFF} || -z ${DEL_LIB_SUFF} ]]; then
|
||||||
|
echo_fail "{USE,DEL}_LIB_SUFF not defined"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
for lib in "${libs[@]}"; do
|
for lib in "${libs[@]}"; do
|
||||||
local libPath="${LIBDIR}/${lib}"
|
local libPath="${LIBDIR}/${lib}"
|
||||||
local foundLib=false
|
local foundLib=false
|
||||||
@@ -1052,6 +1059,26 @@ build_expat() {
|
|||||||
sanitize_sysroot_libs libexpat || return 1
|
sanitize_sysroot_libs libexpat || return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
build_libsnappy() {
|
||||||
|
meta_cmake_build \
|
||||||
|
-DSNAPPY_BUILD_TESTS=OFF \
|
||||||
|
-DSNAPPY_BUILD_BENCHMARKS=OFF || return 1
|
||||||
|
sanitize_sysroot_libs libsnappy || return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
build_libssh() {
|
||||||
|
meta_cmake_build || return 1
|
||||||
|
sanitize_sysroot_libs libssh || return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
build_libjxl() {
|
||||||
|
meta_cmake_build \
|
||||||
|
-DJPEGXL_FORCE_SYSTEM_BROTLI=ON \
|
||||||
|
-DJPEGXL_BUNDLE_LIBPNG=OFF || return 1
|
||||||
|
sanitize_sysroot_libs \
|
||||||
|
libjxl libjxl_cms libjxl_extras_codec libjxl_threads || return 1
|
||||||
|
}
|
||||||
|
|
||||||
### MESON ###
|
### MESON ###
|
||||||
meta_meson_build() {
|
meta_meson_build() {
|
||||||
local addFlags=("$@")
|
local addFlags=("$@")
|
||||||
@@ -1169,6 +1196,12 @@ build_lcms2() {
|
|||||||
sanitize_sysroot_libs liblcms2 || return 1
|
sanitize_sysroot_libs liblcms2 || return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
build_libbluray() {
|
||||||
|
meta_meson_build \
|
||||||
|
-D enable_tools=false || return 1
|
||||||
|
sanitize_sysroot_libs libbluray || return 1
|
||||||
|
}
|
||||||
|
|
||||||
### PYTHON ###
|
### PYTHON ###
|
||||||
build_glad() {
|
build_glad() {
|
||||||
true
|
true
|
||||||
@@ -1270,6 +1303,29 @@ build_libass() {
|
|||||||
sanitize_sysroot_libs libass || return 1
|
sanitize_sysroot_libs libass || return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
build_libcrypto() {
|
||||||
|
local cryptoFlags=()
|
||||||
|
if [[ ${STATIC} == 'OFF' ]]; then
|
||||||
|
cryptoFlags+=(no-shared)
|
||||||
|
fi
|
||||||
|
|
||||||
|
cryptoFlags+=(
|
||||||
|
enable-{brotli,zlib,zstd}
|
||||||
|
--with-{brotli,zlib,zstd}-include="${PREFIX}/include"
|
||||||
|
--with-{brotli,zlib,zstd}-lib="${LIBDIR}"
|
||||||
|
)
|
||||||
|
|
||||||
|
cp Configure configure
|
||||||
|
(
|
||||||
|
unset CONFIGURE_FLAGS
|
||||||
|
meta_configure_build \
|
||||||
|
--prefix="${PREFIX}" \
|
||||||
|
--libdir=lib \
|
||||||
|
"${cryptoFlags[@]}"
|
||||||
|
) || return 1
|
||||||
|
sanitize_sysroot_libs libcrypto libssl || return 1
|
||||||
|
}
|
||||||
|
|
||||||
add_project_versioning_to_ffmpeg() {
|
add_project_versioning_to_ffmpeg() {
|
||||||
# embed this project's enables/versions
|
# embed this project's enables/versions
|
||||||
# into ffmpeg with FFMPEG_BUILDER_INFO
|
# into ffmpeg with FFMPEG_BUILDER_INFO
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
diff --git a/lib/threads/libjxl_threads.pc.in b/lib/threads/libjxl_threads.pc.in
|
||||||
|
index dfbaa3f..2c7bfe8 100644
|
||||||
|
--- a/lib/threads/libjxl_threads.pc.in
|
||||||
|
+++ b/lib/threads/libjxl_threads.pc.in
|
||||||
|
@@ -8,6 +8,6 @@ Description: JPEG XL multi-thread runner using std::threads.
|
||||||
|
Version: @JPEGXL_LIBRARY_VERSION@
|
||||||
|
@JPEGXL_REQUIRES_TYPE@: @JPEGXL_THREADS_LIBRARY_REQUIRES@
|
||||||
|
Libs: -L${libdir} -ljxl_threads
|
||||||
|
-Libs.private: -lm
|
||||||
|
+Libs.private: -lm @PKGCONFIG_CXX_LIB@
|
||||||
|
Cflags: -I${includedir}
|
||||||
|
Cflags.private: -DJXL_THREADS_STATIC_DEFINE
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
diff --git a/libssh.pc.cmake b/libssh.pc.cmake
|
||||||
|
index f288b94..438ca38 100644
|
||||||
|
--- a/libssh.pc.cmake
|
||||||
|
+++ b/libssh.pc.cmake
|
||||||
|
@@ -6,5 +6,5 @@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
|
||||||
|
Name: @PROJECT_NAME@
|
||||||
|
Description: The SSH Library
|
||||||
|
Version: @PROJECT_VERSION@
|
||||||
|
-Libs: -L${libdir} -lssh
|
||||||
|
+Libs: -L${libdir} -lssh -lcrypto -lz
|
||||||
|
Cflags: -I${includedir}
|
||||||
Reference in New Issue
Block a user