From 8ab246ddded2043db8b3c098556a452fc1651df2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 15 Jun 2024 14:15:53 +1000 Subject: [PATCH] Build: fix linking FFMPEG & x265 on Linux --- build_files/build_environment/cmake/harvest.cmake | 1 + build_files/build_environment/cmake/x265.cmake | 10 ++++++---- build_files/cmake/platform/platform_unix.cmake | 4 +++- intern/libc_compat/libc_compat.c | 12 ++++++++++++ 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/build_files/build_environment/cmake/harvest.cmake b/build_files/build_environment/cmake/harvest.cmake index 4c080009210..eadbebd59bf 100644 --- a/build_files/build_environment/cmake/harvest.cmake +++ b/build_files/build_environment/cmake/harvest.cmake @@ -277,6 +277,7 @@ else() harvest(opus/lib ffmpeg/lib "*.a") harvest(vpx/lib ffmpeg/lib "*.a") harvest(x264/lib ffmpeg/lib "*.a") + harvest(x265/lib ffmpeg/lib "*.a") harvest(aom/lib ffmpeg/lib "*.a") harvest(webp/lib webp/lib "*.a") harvest(webp/include webp/include "*.h") diff --git a/build_files/build_environment/cmake/x265.cmake b/build_files/build_environment/cmake/x265.cmake index 1d3c2444c70..566e1c7f84c 100644 --- a/build_files/build_environment/cmake/x265.cmake +++ b/build_files/build_environment/cmake/x265.cmake @@ -55,9 +55,11 @@ set(X265_EXTRA_ARGS ) if(UNIX) + # Use the suffix `.part` so this library isn't included when installing, + # as the library which is merged is used instead. list(APPEND X265_EXTRA_ARGS - -DCMAKE_STATIC_LIBRARY_SUFFIX_C=_unmerged${LIB_SUFFIX}${LIBEXT} - -DCMAKE_STATIC_LIBRARY_SUFFIX_CXX=_unmerged${LIB_SUFFIX}${LIBEXT} + -DCMAKE_STATIC_LIBRARY_SUFFIX_C=_unmerged${LIB_SUFFIX}${LIBEXT}.part + -DCMAKE_STATIC_LIBRARY_SUFFIX_CXX=_unmerged${LIB_SUFFIX}${LIBEXT}.part ) endif() @@ -130,7 +132,7 @@ if(UNIX) set(_ar_cmake "${BUILD_DIR}/x265/tmp/x265_ar_script.cmake") file(WRITE ${_ar_stdin} "\ CREATE ${LIBDIR}/x265/lib/${LIB_PREFIX}x265${LIB_SUFFIX}${LIBEXT} -ADDLIB ${LIBDIR}/x265/lib/${LIB_PREFIX}x265${LIB_SUFFIX}_unmerged${LIBEXT} +ADDLIB ${LIBDIR}/x265/lib/${LIB_PREFIX}x265${LIB_SUFFIX}_unmerged${LIBEXT}.part ADDLIB ${LIBDIR}/x265_10/lib/${LIB_PREFIX}x265${LIB_SUFFIX}${LIBEXT} ADDLIB ${LIBDIR}/x265_12/lib/${LIB_PREFIX}x265${LIB_SUFFIX}${LIBEXT} SAVE @@ -159,7 +161,7 @@ execute_process( ExternalProject_Add_Step(external_x265 after_install COMMAND libtool -static -o ${LIBDIR}/x265/lib/${LIB_PREFIX}x265${LIB_SUFFIX}${LIBEXT} - ${LIBDIR}/x265/lib/${LIB_PREFIX}x265${LIB_SUFFIX}_unmerged${LIBEXT} + ${LIBDIR}/x265/lib/${LIB_PREFIX}x265${LIB_SUFFIX}_unmerged${LIBEXT}.part ${LIBDIR}/x265_10/lib/${LIB_PREFIX}x265${LIB_SUFFIX}${LIBEXT} ${LIBDIR}/x265_12/lib/${LIB_PREFIX}x265${LIB_SUFFIX}${LIBEXT} DEPENDEES install diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake index c92beb9e877..875495520cb 100644 --- a/build_files/cmake/platform/platform_unix.cmake +++ b/build_files/cmake/platform/platform_unix.cmake @@ -312,7 +312,9 @@ if(WITH_CODEC_FFMPEG) theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg vpx - x264) + x264 + x265 + ) if(DEFINED LIBDIR) if(EXISTS ${LIBDIR}/ffmpeg/lib/libaom.a) list(APPEND FFMPEG_FIND_COMPONENTS aom) diff --git a/intern/libc_compat/libc_compat.c b/intern/libc_compat/libc_compat.c index 85e73294e22..8b854eb391a 100644 --- a/intern/libc_compat/libc_compat.c +++ b/intern/libc_compat/libc_compat.c @@ -26,6 +26,7 @@ double __log2_finite(double x); double __log10_finite(double x); double __log_finite(double x); double __pow_finite(double x, double y); +double __atan2_finite(double x, double y); float __expf_finite(float x); float __exp2f_finite(float x); float __acosf_finite(float x); @@ -34,6 +35,7 @@ float __log2f_finite(float x); float __log10f_finite(float x); float __logf_finite(float x); float __powf_finite(float x, float y); +float __atan2f_finite(float x, float y); double __exp_finite(double x) { @@ -75,6 +77,11 @@ double __pow_finite(double x, double y) return pow(x, y); } +double __atan2_finite(double x, double y) +{ + return atan2(x, y); +} + float __expf_finite(float x) { return expf(x); @@ -115,6 +122,11 @@ float __powf_finite(float x, float y) return powf(x, y); } +float __atan2f_finite(float x, float y) +{ + return atan2f(x, y); +} + # endif /* __GLIBC_PREREQ(2, 31) */ # if __GLIBC_PREREQ(2, 34) && defined(WITH_LIBC_MALLOC_HOOK_WORKAROUND)