diff options
author | Paul Zander <negril.nx+gentoo@gmail.com> | 2024-08-23 18:43:10 +0200 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2024-08-25 16:43:06 +0100 |
commit | 86fff0790dd62c7e91afbfecbf52ed9300a83e19 (patch) | |
tree | 628e659bb06a335fa21a6d3e0e533b0164999301 /media-libs | |
parent | media-libs/x265: drop 3.5-r2 (diff) | |
download | gentoo-86fff0790dd62c7e91afbfecbf52ed9300a83e19.tar.gz gentoo-86fff0790dd62c7e91afbfecbf52ed9300a83e19.tar.bz2 gentoo-86fff0790dd62c7e91afbfecbf52ed9300a83e19.zip |
media-libs/x265: add 3.5-r5, ebuild cleanup
Clean up cruft and duplicate code.
Split up patches so we can re-use them.
Silently disable tests on x86, x32 and arm32. They never worked, have no deps
and were failing before because the options was not visible.
Closes: https://bugs.gentoo.org/728748
Closes: https://bugs.gentoo.org/937416
Closes: https://bugs.gentoo.org/937750
Closes: https://bugs.gentoo.org/937753
Signed-off-by: Paul Zander <negril.nx+gentoo@gmail.com>
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'media-libs')
-rw-r--r-- | media-libs/x265/files/test-ns.patch | 55 | ||||
-rw-r--r-- | media-libs/x265/files/x265-3.5-r5-cpp-std.patch | 23 | ||||
-rw-r--r-- | media-libs/x265/files/x265-3.5-r5-gcc15.patch | 29 | ||||
-rw-r--r-- | media-libs/x265/files/x265-3.5-r5-test-ns_2.patch | 11 | ||||
-rw-r--r-- | media-libs/x265/files/x265-9999-test-ns.patch | 157 | ||||
-rw-r--r-- | media-libs/x265/metadata.xml | 1 | ||||
-rw-r--r-- | media-libs/x265/x265-3.5-r3.ebuild | 1 | ||||
-rw-r--r-- | media-libs/x265/x265-3.5-r4.ebuild | 1 | ||||
-rw-r--r-- | media-libs/x265/x265-3.5-r5.ebuild | 195 | ||||
-rw-r--r-- | media-libs/x265/x265-9999.ebuild | 195 |
10 files changed, 452 insertions, 216 deletions
diff --git a/media-libs/x265/files/test-ns.patch b/media-libs/x265/files/test-ns.patch index 898751a7ae2d..86cadade6a09 100644 --- a/media-libs/x265/files/test-ns.patch +++ b/media-libs/x265/files/test-ns.patch @@ -1,7 +1,5 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contained. -Index: source/common/param.h -=================================================================== --- source.orig/common/param.h +++ source/common/param.h @@ -53,6 +53,18 @@ int x265_param_default_preset(x265_param @@ -23,8 +21,6 @@ Index: source/common/param.h #define PARAM_NS X265_NS #endif } -Index: source/encoder/api.cpp -=================================================================== --- source.orig/encoder/api.cpp +++ source/encoder/api.cpp @@ -106,9 +106,9 @@ x265_encoder *x265_encoder_open(x265_par @@ -58,15 +54,6 @@ Index: source/encoder/api.cpp } x265_copy_params(&save, encoder->m_latestParam); int ret = encoder->reconfigureParam(encoder->m_latestParam, param_in); -@@ -604,7 +604,7 @@ fail: - *pi_nal = 0; - - if (numEncoded && encoder->m_param->csvLogLevel && encoder->m_outputCount >= encoder->m_latestParam->chunkStart) -- x265_csvlog_frame(encoder->m_param, pic_out); -+ PARAM_NS::x265_csvlog_frame(encoder->m_param, pic_out); - - if (numEncoded < 0) - encoder->m_aborted = true; @@ -637,7 +637,7 @@ void x265_vmaf_encoder_log(x265_encoder* encoder->fetchStats(&stats, sizeof(stats)); int padx = encoder->m_sps.conformanceWindow.rightOffset; @@ -76,15 +63,6 @@ Index: source/encoder/api.cpp } } #endif -@@ -651,7 +651,7 @@ void x265_encoder_log(x265_encoder* enc, - encoder->fetchStats(&stats, sizeof(stats)); - int padx = encoder->m_sps.conformanceWindow.rightOffset; - int pady = encoder->m_sps.conformanceWindow.bottomOffset; -- x265_csvlog_encode(encoder->m_param, &stats, padx, pady, argc, argv); -+ PARAM_NS::x265_csvlog_encode(encoder->m_param, &stats, padx, pady, argc, argv); - } - } - @@ -872,7 +872,7 @@ void x265_alloc_analysis_data(x265_param return; @@ -94,8 +72,6 @@ Index: source/encoder/api.cpp } void x265_free_analysis_data(x265_param *param, x265_analysis_data* analysis) -Index: source/encoder/encoder.cpp -=================================================================== --- source.orig/encoder/encoder.cpp +++ source/encoder/encoder.cpp @@ -186,8 +186,8 @@ void Encoder::create() @@ -127,15 +103,6 @@ Index: source/encoder/encoder.cpp X265_FREE(m_dupBuffer[i]); } -@@ -1592,7 +1592,7 @@ int Encoder::encode(const x265_picture* - if (m_exportedPic) - { - if (!m_param->bUseAnalysisFile && m_param->analysisSave) -- x265_free_analysis_data(m_param, &m_exportedPic->m_analysisData); -+ PARAM_NS::x265_free_analysis_data(m_param, &m_exportedPic->m_analysisData); - ATOMIC_DEC(&m_exportedPic->m_countRefEncoders); - m_exportedPic = NULL; - m_dpb->recycleUnreferenced(); @@ -1968,7 +1968,7 @@ int Encoder::encode(const x265_picture* /* Free up inputPic->analysisData since it has already been used */ @@ -280,8 +247,6 @@ Index: source/encoder/encoder.cpp m_aborted = true; \ return; \ }\ -Index: source/common/param.cpp -=================================================================== --- source.orig/common/param.cpp +++ source/common/param.cpp @@ -102,7 +102,7 @@ x265_param *x265_param_alloc() @@ -293,3 +258,23 @@ Index: source/common/param.cpp #ifdef SVT_HEVC x265_free(p->svtHevcParam); #endif +--- source.orig/encoder/api.cpp ++++ source/encoder/api.cpp +@@ -604,7 +604,7 @@ fail: + *pi_nal = 0; + + if (numEncoded && encoder->m_param->csvLogLevel && encoder->m_outputCount >= encoder->m_latestParam->chunkStart) +- x265_csvlog_frame(encoder->m_param, pic_out); ++ PARAM_NS::x265_csvlog_frame(encoder->m_param, pic_out); + + if (numEncoded < 0) + encoder->m_aborted = true; +@@ -651,7 +651,7 @@ void x265_encoder_log(x265_encoder* enc, + encoder->fetchStats(&stats, sizeof(stats)); + int padx = encoder->m_sps.conformanceWindow.rightOffset; + int pady = encoder->m_sps.conformanceWindow.bottomOffset; +- x265_csvlog_encode(encoder->m_param, &stats, padx, pady, argc, argv); ++ PARAM_NS::x265_csvlog_encode(encoder->m_param, &stats, padx, pady, argc, argv); + } + } + diff --git a/media-libs/x265/files/x265-3.5-r5-cpp-std.patch b/media-libs/x265/files/x265-3.5-r5-cpp-std.patch new file mode 100644 index 000000000000..99fbf9bd75de --- /dev/null +++ b/media-libs/x265/files/x265-3.5-r5-cpp-std.patch @@ -0,0 +1,23 @@ +From: Paul Zander <negril.nx+gentoo@gmail.com> +Date: Fri, 23 Aug 2024 14:31:40 +0200 +Subject: [PATCH] don't force old c++ standards + +Signed-off-by: Paul Zander <negril.nx+gentoo@gmail.com> + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -221,14 +221,6 @@ if(GCC) + if(NOT INTEL_CXX AND NOT CLANG AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.0) + add_definitions(-Wno-class-memaccess) + endif() +- if(ENABLE_HDR10_PLUS) +- if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.8") +- message(FATAL_ERROR "gcc version above 4.8 required to support hdr10plus") +- endif() +- add_definitions(-std=gnu++11) +- else() +- add_definitions(-std=gnu++98) +- endif() + if(ENABLE_PIC) + add_definitions(-fPIC) + endif(ENABLE_PIC) diff --git a/media-libs/x265/files/x265-3.5-r5-gcc15.patch b/media-libs/x265/files/x265-3.5-r5-gcc15.patch new file mode 100644 index 000000000000..6a474d3c192f --- /dev/null +++ b/media-libs/x265/files/x265-3.5-r5-gcc15.patch @@ -0,0 +1,29 @@ +From: Ted Rodgers <ted.d.rodgers@gmail.com> +Date: Fri, 23 Aug 2024 12:15:56 +0200 +Subject: [PATCH] Explicitly include <cstdint> + +GCC 15 will no longer include <cstdint> by default, resulting in build +failures in projects that do not explicitly include it. + +Error: +/var/tmp/portage/media-libs/x265-3.5-r4/work/x265_3.5/source/dynamicHDR10/json11/json11.cpp:101:32: error: ‘uint8_t’ does not name a type + 101 | } else if (static_cast<uint8_t>(ch) <= 0x1f) { + | ^~~~~~~ +/var/tmp/portage/media-libs/x265-3.5-r4/work/x265_3.5/source/dynamicHDR10/json11/json11.cpp:28:1: note: ‘uint8_t’ is defined in header ‘<cstdint>’; this is probably fixable by adding ‘#include <cstdint>’ + 27 | #include <limits> + +++ |+#include <cstdint> + 28 | + +See-also: https://gcc.gnu.org/pipermail/gcc-cvs/2024-August/407124.html +Signed-off-by: Paul Zander <negril.nx+gentoo@gmail.com> + +--- a/dynamicHDR10/json11/json11.cpp ++++ b/dynamicHDR10/json11/json11.cpp +@@ -25,6 +25,7 @@ + #include <cstdlib> + #include <cstdio> + #include <limits> ++#include <cstdint> + + #if _MSC_VER + #pragma warning(disable: 4510) //const member cannot be default initialized diff --git a/media-libs/x265/files/x265-3.5-r5-test-ns_2.patch b/media-libs/x265/files/x265-3.5-r5-test-ns_2.patch new file mode 100644 index 000000000000..eec119f7f923 --- /dev/null +++ b/media-libs/x265/files/x265-3.5-r5-test-ns_2.patch @@ -0,0 +1,11 @@ +--- source.orig/encoder/encoder.cpp ++++ source/encoder/encoder.cpp +@@ -1592,7 +1592,7 @@ int Encoder::encode(const x265_picture* + if (m_exportedPic) + { + if (!m_param->bUseAnalysisFile && m_param->analysisSave) +- x265_free_analysis_data(m_param, &m_exportedPic->m_analysisData); ++ PARAM_NS::x265_free_analysis_data(m_param, &m_exportedPic->m_analysisData); + ATOMIC_DEC(&m_exportedPic->m_countRefEncoders); + m_exportedPic = NULL; + m_dpb->recycleUnreferenced(); diff --git a/media-libs/x265/files/x265-9999-test-ns.patch b/media-libs/x265/files/x265-9999-test-ns.patch index ed3de18ae83e..35859c54455e 100644 --- a/media-libs/x265/files/x265-9999-test-ns.patch +++ b/media-libs/x265/files/x265-9999-test-ns.patch @@ -31,6 +31,25 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain #define PARAM_NS X265_NS #endif } +--- a/common/threadpool.cpp ++++ b/common/threadpool.cpp +@@ -25,6 +25,7 @@ + #include "common.h" + #include "threadpool.h" + #include "threading.h" ++#include "param.h" + + #include <new> + +@@ -314,7 +315,7 @@ ThreadPool* ThreadPool::allocThreadPools(x265_param* p, int& numPools, bool isTh + sprintf(nextCount, "%d", cpusPerNode[i]); + strcat(poolString, nextCount); + } +- x265_param_parse(p, "pools", poolString); ++ PARAM_NS::x265_param_parse(p, "pools", poolString); + } + #endif + if (p->numaPools && *p->numaPools) --- a/encoder/api.cpp +++ b/encoder/api.cpp @@ -106,9 +106,9 @@ x265_encoder *x265_encoder_open(x265_param *p) @@ -64,16 +83,16 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain } x265_copy_params(&save, encoder->m_latestParam); int ret = encoder->reconfigureParam(encoder->m_latestParam, param_in); -@@ -602,7 +602,7 @@ fail: - *pi_nal = 0; - +@@ -604,7 +604,7 @@ fail: if (numEncoded && encoder->m_param->csvLogLevel && encoder->m_outputCount >= encoder->m_latestParam->chunkStart) -- x265_csvlog_frame(encoder->m_param, pic_out); -+ PARAM_NS::x265_csvlog_frame(encoder->m_param, pic_out); + { + for (int layer = 0; layer < encoder->m_param->numLayers; layer++) +- x265_csvlog_frame(encoder->m_param, pic_out[layer]); ++ PARAM_NS::x265_csvlog_frame(encoder->m_param, pic_out[layer]); + } if (numEncoded < 0) - encoder->m_aborted = true; -@@ -643,7 +643,7 @@ void x265_vmaf_encoder_log(x265_encoder* enc, int argc, char **argv, x265_param +@@ -646,7 +646,7 @@ void x265_vmaf_encoder_log(x265_encoder* enc, int argc, char **argv, x265_param encoder->fetchStats(&stats, sizeof(stats)); int padx = encoder->m_sps.conformanceWindow.rightOffset; int pady = encoder->m_sps.conformanceWindow.bottomOffset; @@ -82,16 +101,16 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain } } #endif -@@ -657,7 +657,7 @@ void x265_encoder_log(x265_encoder* enc, int argc, char **argv) - encoder->fetchStats(&stats, sizeof(stats)); - int padx = encoder->m_sps.conformanceWindow.rightOffset; - int pady = encoder->m_sps.conformanceWindow.bottomOffset; -- x265_csvlog_encode(encoder->m_param, &stats, padx, pady, argc, argv); -+ PARAM_NS::x265_csvlog_encode(encoder->m_param, &stats, padx, pady, argc, argv); +@@ -662,7 +662,7 @@ void x265_encoder_log(x265_encoder* enc, int argc, char **argv) + for (int layer = 0; layer < encoder->m_param->numLayers; layer++) + { + encoder->fetchStats(stats, sizeof(stats[layer]), layer); +- x265_csvlog_encode(encoder->m_param, &stats[0], padx, pady, argc, argv); ++ PARAM_NS::x265_csvlog_encode(encoder->m_param, &stats[0], padx, pady, argc, argv); + } } } - -@@ -878,7 +878,7 @@ void x265_alloc_analysis_data(x265_param *param, x265_analysis_data* analysis) +@@ -884,7 +884,7 @@ void x265_alloc_analysis_data(x265_param *param, x265_analysis_data* analysis) return; fail: @@ -102,7 +121,7 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain void x265_free_analysis_data(x265_param *param, x265_analysis_data* analysis) --- a/encoder/encoder.cpp +++ b/encoder/encoder.cpp -@@ -216,8 +216,8 @@ void Encoder::create() +@@ -217,8 +217,8 @@ void Encoder::create() { m_dupBuffer[i] = (AdaptiveFrameDuplication*)x265_malloc(sizeof(AdaptiveFrameDuplication)); m_dupBuffer[i]->dupPic = NULL; @@ -113,7 +132,7 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain m_dupBuffer[i]->dupPlane = NULL; m_dupBuffer[i]->dupPlane = X265_MALLOC(char, framesize); m_dupBuffer[i]->dupPic->planes[0] = m_dupBuffer[i]->dupPlane; -@@ -768,7 +768,7 @@ int Encoder::setAnalysisData(x265_analysis_data *analysis_data, int poc, uint32_ +@@ -774,7 +774,7 @@ int Encoder::setAnalysisData(x265_analysis_data *analysis_data, int poc, uint32_ curFrame->m_analysisData = (*analysis_data); curFrame->m_analysisData.numCUsInFrame = widthInCU * heightInCU; curFrame->m_analysisData.numPartitions = m_param->num4x4Partitions; @@ -122,7 +141,7 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain if (m_param->maxCUSize == 16) { if (analysis_data->sliceType == X265_TYPE_IDR || analysis_data->sliceType == X265_TYPE_I) -@@ -872,7 +872,7 @@ void Encoder::destroy() +@@ -881,7 +881,7 @@ void Encoder::destroy() for (uint32_t i = 0; i < DUP_BUFFER; i++) { X265_FREE(m_dupBuffer[i]->dupPlane); @@ -131,61 +150,61 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain X265_FREE(m_dupBuffer[i]); } -@@ -1478,7 +1478,7 @@ int Encoder::encode(const x265_picture* pic_in, x265_picture* pic_out) - if (m_exportedPic) +@@ -1491,7 +1491,7 @@ int Encoder::encode(const x265_picture* pic_in, x265_picture** pic_out) + if (*m_exportedPic) { if (!m_param->bUseAnalysisFile && m_param->analysisSave) -- x265_free_analysis_data(m_param, &m_exportedPic->m_analysisData); -+ PARAM_NS::x265_free_analysis_data(m_param, &m_exportedPic->m_analysisData); - - ATOMIC_DEC(&m_exportedPic->m_countRefEncoders); +- x265_free_analysis_data(m_param, &m_exportedPic[0]->m_analysisData); ++ PARAM_NS::x265_free_analysis_data(m_param, &m_exportedPic[0]->m_analysisData); -@@ -1892,7 +1892,7 @@ int Encoder::encode(const x265_picture* pic_in, x265_picture* pic_out) - - /* Free up inputPic->analysisData since it has already been used */ - if ((m_param->analysisLoad && !m_param->analysisSave) || ((m_param->bAnalysisType == AVC_INFO) && slice->m_sliceType != I_SLICE)) -- x265_free_analysis_data(m_param, &outFrame->m_analysisData); -+ PARAM_NS::x265_free_analysis_data(m_param, &outFrame->m_analysisData); + for (int i = 0; i < m_param->numLayers; i++) + { +@@ -1973,7 +1973,7 @@ int Encoder::encode(const x265_picture* pic_in, x265_picture** pic_out) - if (pic_out) - { -@@ -1971,7 +1971,7 @@ int Encoder::encode(const x265_picture* pic_in, x265_picture* pic_out) - writeAnalysisFile(&pic_out->analysisData, *outFrame->m_encData); - pic_out->analysisData.saveParam = pic_out->analysisData.saveParam; - if (m_param->bUseAnalysisFile) -- x265_free_analysis_data(m_param, &pic_out->analysisData); -+ PARAM_NS::x265_free_analysis_data(m_param, &pic_out->analysisData); + /* Free up inputPic->analysisData since it has already been used */ + if ((m_param->analysisLoad && !m_param->analysisSave) || ((m_param->bAnalysisType == AVC_INFO) && slice->m_sliceType != I_SLICE)) +- x265_free_analysis_data(m_param, &outFrame->m_analysisData); ++ PARAM_NS::x265_free_analysis_data(m_param, &outFrame->m_analysisData); + if (pic_out[sLayer]) + { + PicYuv* recpic = outFrame->m_reconPic[0]; +@@ -2052,7 +2052,7 @@ int Encoder::encode(const x265_picture* pic_in, x265_picture** pic_out) + writeAnalysisFile(&pic_out[sLayer]->analysisData, *outFrame->m_encData); + pic_out[sLayer]->analysisData.saveParam = pic_out[sLayer]->analysisData.saveParam; + if (m_param->bUseAnalysisFile) +- x265_free_analysis_data(m_param, &pic_out[sLayer]->analysisData); ++ PARAM_NS::x265_free_analysis_data(m_param, &pic_out[sLayer]->analysisData); + } } - } - if (m_param->rc.bStatWrite && (m_param->analysisMultiPassRefine || m_param->analysisMultiPassDistortion)) -@@ -1986,7 +1986,7 @@ int Encoder::encode(const x265_picture* pic_in, x265_picture* pic_out) - writeAnalysisFileRefine(&outFrame->m_analysisData, *outFrame->m_encData); - } - if (m_param->analysisMultiPassRefine || m_param->analysisMultiPassDistortion) -- x265_free_analysis_data(m_param, &outFrame->m_analysisData); -+ PARAM_NS::x265_free_analysis_data(m_param, &outFrame->m_analysisData); - if (m_param->internalCsp == X265_CSP_I400) - { - if (slice->m_sliceType == P_SLICE) -@@ -2153,7 +2153,7 @@ int Encoder::encode(const x265_picture* pic_in, x265_picture* pic_out) + if (m_param->rc.bStatWrite && (m_param->analysisMultiPassRefine || m_param->analysisMultiPassDistortion)) +@@ -2067,7 +2067,7 @@ int Encoder::encode(const x265_picture* pic_in, x265_picture** pic_out) + writeAnalysisFileRefine(&outFrame->m_analysisData, *outFrame->m_encData); + } + if (m_param->analysisMultiPassRefine || m_param->analysisMultiPassDistortion) +- x265_free_analysis_data(m_param, &outFrame->m_analysisData); ++ PARAM_NS::x265_free_analysis_data(m_param, &outFrame->m_analysisData); + if (m_param->internalCsp == X265_CSP_I400) + { + if (slice->m_sliceType == P_SLICE) +@@ -2250,7 +2250,7 @@ int Encoder::encode(const x265_picture* pic_in, x265_picture** pic_out) uint32_t heightInCU = (m_param->sourceHeight + m_param->maxCUSize - 1) >> m_param->maxLog2CUSize; - frameEnc->m_analysisData.numCUsInFrame = widthInCU * heightInCU; - frameEnc->m_analysisData.numPartitions = m_param->num4x4Partitions; -- x265_alloc_analysis_data(m_param, &frameEnc->m_analysisData); -+ PARAM_NS::x265_alloc_analysis_data(m_param, &frameEnc->m_analysisData); - frameEnc->m_analysisData.poc = frameEnc->m_poc; + frameEnc[0]->m_analysisData.numCUsInFrame = widthInCU * heightInCU; + frameEnc[0]->m_analysisData.numPartitions = m_param->num4x4Partitions; +- x265_alloc_analysis_data(m_param, &frameEnc[0]->m_analysisData); ++ PARAM_NS::x265_alloc_analysis_data(m_param, &frameEnc[0]->m_analysisData); + frameEnc[0]->m_analysisData.poc = frameEnc[0]->m_poc; if (m_param->rc.bStatRead) - readAnalysisFile(&frameEnc->m_analysisData, frameEnc->m_poc, frameEnc->m_lowres.sliceType); -@@ -2164,7 +2164,7 @@ int Encoder::encode(const x265_picture* pic_in, x265_picture* pic_out) + readAnalysisFile(&frameEnc[0]->m_analysisData, frameEnc[0]->m_poc, frameEnc[0]->m_lowres.sliceType); +@@ -2261,7 +2261,7 @@ int Encoder::encode(const x265_picture* pic_in, x265_picture** pic_out) for (int i = 0; i < m_param->rc.zonefileCount; i++) { - if (m_param->rc.zones[i].startFrame == frameEnc->m_poc) + if (m_param->rc.zones[i].startFrame == frameEnc[0]->m_poc) - x265_encoder_reconfig(this, m_param->rc.zones[i].zoneParam); + PARAM_NS::x265_encoder_reconfig(this, m_param->rc.zones[i].zoneParam); } } -@@ -2307,7 +2307,7 @@ int Encoder::encode(const x265_picture* pic_in, x265_picture* pic_out) +@@ -2408,7 +2408,7 @@ int Encoder::encode(const x265_picture* pic_in, x265_picture** pic_out) analysis->numCUsInFrame = numCUsInFrame; analysis->numCuInHeight = heightInCU; analysis->numPartitions = m_param->num4x4Partitions; @@ -194,7 +213,7 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain } if (m_param->bEnableTemporalSubLayers > 2) { -@@ -4434,7 +4434,7 @@ void Encoder::readAnalysisFile(x265_analysis_data* analysis, int curPoc, const x +@@ -4711,7 +4711,7 @@ void Encoder::readAnalysisFile(x265_analysis_data* analysis, int curPoc, const x else if (fread(val, size, readSize, fileOffset) != readSize)\ {\ x265_log(NULL, X265_LOG_ERROR, "Error reading analysis data\n");\ @@ -203,7 +222,7 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain m_aborted = true;\ return;\ }\ -@@ -4470,7 +4470,7 @@ void Encoder::readAnalysisFile(x265_analysis_data* analysis, int curPoc, const x +@@ -4747,7 +4747,7 @@ void Encoder::readAnalysisFile(x265_analysis_data* analysis, int curPoc, const x if (poc != curPoc || feof(m_analysisFileIn)) { x265_log(NULL, X265_LOG_WARNING, "Error reading analysis data: Cannot find POC %d\n", curPoc); @@ -212,7 +231,7 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain return; } } -@@ -4504,7 +4504,7 @@ void Encoder::readAnalysisFile(x265_analysis_data* analysis, int curPoc, const x +@@ -4781,7 +4781,7 @@ void Encoder::readAnalysisFile(x265_analysis_data* analysis, int curPoc, const x if (m_param->scaleFactor) analysis->numPartitions *= factor; /* Memory is allocated for inter and intra analysis data based on the slicetype */ @@ -221,7 +240,7 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain if (m_param->ctuDistortionRefine == CTU_DISTORTION_INTERNAL) { -@@ -4757,7 +4757,7 @@ void Encoder::readAnalysisFile(x265_analysis_data* analysis, int curPoc, const x +@@ -5034,7 +5034,7 @@ void Encoder::readAnalysisFile(x265_analysis_data* analysis, int curPoc, const x else if (fread(val, size, readSize, fileOffset) != readSize)\ {\ x265_log(NULL, X265_LOG_ERROR, "Error reading analysis data\n");\ @@ -230,7 +249,7 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain m_aborted = true;\ return;\ }\ -@@ -4794,7 +4794,7 @@ void Encoder::readAnalysisFile(x265_analysis_data* analysis, int curPoc, const x +@@ -5071,7 +5071,7 @@ void Encoder::readAnalysisFile(x265_analysis_data* analysis, int curPoc, const x if (poc != curPoc || feof(m_analysisFileIn)) { x265_log(NULL, X265_LOG_WARNING, "Error reading analysis data: Cannot find POC %d\n", curPoc); @@ -239,7 +258,7 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain return; } } -@@ -4825,7 +4825,7 @@ void Encoder::readAnalysisFile(x265_analysis_data* analysis, int curPoc, const x +@@ -5102,7 +5102,7 @@ void Encoder::readAnalysisFile(x265_analysis_data* analysis, int curPoc, const x analysis->numCuInHeight = cuLoc.heightInCU; /* Memory is allocated for inter and intra analysis data based on the slicetype */ @@ -248,7 +267,7 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain if (m_param->ctuDistortionRefine == CTU_DISTORTION_INTERNAL) { -@@ -5440,7 +5440,7 @@ void Encoder::readAnalysisFile(x265_analysis_data* analysis, int curPoc, int sli +@@ -5717,7 +5717,7 @@ void Encoder::readAnalysisFile(x265_analysis_data* analysis, int curPoc, int sli if (fread(val, size, readSize, fileOffset) != readSize)\ {\ x265_log(NULL, X265_LOG_ERROR, "Error reading analysis 2 pass data\n"); \ @@ -257,7 +276,7 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain m_aborted = true; \ return; \ }\ -@@ -5454,7 +5454,7 @@ void Encoder::readAnalysisFile(x265_analysis_data* analysis, int curPoc, int sli +@@ -5731,7 +5731,7 @@ void Encoder::readAnalysisFile(x265_analysis_data* analysis, int curPoc, int sli if (poc != curPoc || feof(m_analysisFileIn)) { x265_log(NULL, X265_LOG_WARNING, "Error reading analysis 2 pass data: Cannot find POC %d\n", curPoc); @@ -266,7 +285,7 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain return; } /* Now arrived at the right frame, read the record */ -@@ -5561,7 +5561,7 @@ void Encoder::writeAnalysisFile(x265_analysis_data* analysis, FrameData &curEncD +@@ -5838,7 +5838,7 @@ void Encoder::writeAnalysisFile(x265_analysis_data* analysis, FrameData &curEncD if (fwrite(val, size, writeSize, fileOffset) < writeSize)\ {\ x265_log(NULL, X265_LOG_ERROR, "Error writing analysis data\n");\ @@ -275,7 +294,7 @@ Namespace functions for multi-bitdepth builds so that libraries are self-contain m_aborted = true;\ return;\ }\ -@@ -5783,7 +5783,7 @@ void Encoder::writeAnalysisFileRefine(x265_analysis_data* analysis, FrameData &c +@@ -6060,7 +6060,7 @@ void Encoder::writeAnalysisFileRefine(x265_analysis_data* analysis, FrameData &c if (fwrite(val, size, writeSize, fileOffset) < writeSize)\ {\ x265_log(NULL, X265_LOG_ERROR, "Error writing analysis 2 pass data\n"); \ diff --git a/media-libs/x265/metadata.xml b/media-libs/x265/metadata.xml index af1229eaf0d8..91d4b52dc9b9 100644 --- a/media-libs/x265/metadata.xml +++ b/media-libs/x265/metadata.xml @@ -8,7 +8,6 @@ <flag name="10bit">Add support for producing 10bits HEVC.</flag> <flag name="12bit">Add support for producing 12bits HEVC.</flag> <flag name="numa">Build with support for NUMA nodes.</flag> - <flag name="pic">Disable optimized assembly code that is not PIC friendly</flag> </use> <upstream> <remote-id type="bitbucket">multicoreware/x265_git</remote-id> diff --git a/media-libs/x265/x265-3.5-r3.ebuild b/media-libs/x265/x265-3.5-r3.ebuild index f3d6c8cbd76a..7e950e3b98c8 100644 --- a/media-libs/x265/x265-3.5-r3.ebuild +++ b/media-libs/x265/x265-3.5-r3.ebuild @@ -36,6 +36,7 @@ PATCHES=( "${FILESDIR}/x265-3.3-ppc64.patch" "${FILESDIR}/tests.patch" "${FILESDIR}/test-ns.patch" + "${FILESDIR}/${PN}-3.5-r5-test-ns_2.patch" ) src_unpack() { diff --git a/media-libs/x265/x265-3.5-r4.ebuild b/media-libs/x265/x265-3.5-r4.ebuild index 11fbb36fc212..172970e12143 100644 --- a/media-libs/x265/x265-3.5-r4.ebuild +++ b/media-libs/x265/x265-3.5-r4.ebuild @@ -36,6 +36,7 @@ PATCHES=( "${FILESDIR}/x265-3.3-ppc64.patch" "${FILESDIR}/tests.patch" "${FILESDIR}/test-ns.patch" + "${FILESDIR}/${PN}-3.5-r5-test-ns_2.patch" ) src_unpack() { diff --git a/media-libs/x265/x265-3.5-r5.ebuild b/media-libs/x265/x265-3.5-r5.ebuild new file mode 100644 index 000000000000..47245cb0ed6a --- /dev/null +++ b/media-libs/x265/x265-3.5-r5.ebuild @@ -0,0 +1,195 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake flag-o-matic multilib-minimal multibuild + +DESCRIPTION="Library for encoding video streams into the H.265/HEVC format" +HOMEPAGE="http://x265.org/ https://bitbucket.org/multicoreware/x265_git/" + +if [[ ${PV} = 9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://bitbucket.org/multicoreware/x265_git/" + MY_P="${PN}-${PV}" +else + SRC_URI="https://bitbucket.org/multicoreware/x265_git/downloads/${PN}_${PV}.tar.gz" + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~x86" + MY_P="${PN}_${PV}" +fi + +S="${WORKDIR}/${MY_P}/source" +unset MY_P + +LICENSE="GPL-2" +# subslot = libx265 soname +SLOT="0/199" +IUSE="+10bit +12bit cpu_flags_ppc_vsx2 numa test" +RESTRICT="!test? ( test )" + +RDEPEND="numa? ( >=sys-process/numactl-2.0.10-r1[${MULTILIB_USEDEP}] )" +DEPEND="${RDEPEND}" +ASM_DEPEND=">=dev-lang/nasm-2.13" +BDEPEND=" + abi_x86_32? ( ${ASM_DEPEND} ) + abi_x86_64? ( ${ASM_DEPEND} )" + +PATCHES=( + "${FILESDIR}/arm-r1.patch" + "${FILESDIR}/neon.patch" + "${FILESDIR}/tests.patch" + "${FILESDIR}/test-ns.patch" + "${FILESDIR}/${PN}-3.5-r5-cpp-std.patch" + "${FILESDIR}/${PN}-3.5-r5-gcc15.patch" + "${FILESDIR}/${PN}-3.5-r5-test-ns_2.patch" +) + +pkg_setup() { + variants=( + $(usev 12bit "main12") + $(usev 10bit "main10") + ) +} + +# By default, the library and the encoder is configured for only one output bit +# depth. Meaning, one has to rebuild libx265 if (s)he wants to produce HEVC +# files with a different bit depth, which is annoying. However, upstream +# supports proper namespacing for 8bits, 10bits & 12bits HEVC and linking all +# that together so that the resulting library can produce all three of them +# instead of only one. +# The API requires the bit depth parameter, so that libx265 can then chose which +# variant of the encoder to use. +# To achieve this, we have to build one (static) library for each non-main +# variant, and link it into the main library. +# Upstream documents using the 8bit variant as main library, hence we do not +# allow disabling it + +x265_variant_src_configure() { + einfo "Configuring variant: ${MULTIBUILD_VARIANT} for ABI: ${ABI}" + + local mycmakeargs=( + "${mycmakeargs[@]}" + -DHIGH_BIT_DEPTH=ON + -DEXPORT_C_API=OFF + -DENABLE_SHARED=OFF + -DENABLE_CLI=OFF + ) + + case "${MULTIBUILD_VARIANT}" in + "main12") + mycmakeargs+=( + -DMAIN12=ON + ) + ;; + "main10") + mycmakeargs+=( + -DENABLE_HDR10_PLUS=ON + ) + ;; + *) + die "Unknown variant: ${MULTIBUILD_VARIANT}";; + esac + cmake_src_configure +} + +multilib_src_configure() { + # -Werror=odr + # https://bugs.gentoo.org/875854 + # https://bitbucket.org/multicoreware/x265_git/issues/937/build-fails-with-lto + filter-lto + + local mycmakeargs=( + $(multilib_is_native_abi || echo "-DENABLE_CLI=OFF") + -DENABLE_PIC=ON + -DENABLE_LIBNUMA="$(usex numa)" + -DENABLE_MULTIVIEW="yes" + -DENABLE_SVT_HEVC="no" # missing + -DENABLE_VTUNE="no" # missing + -DGIT_ARCHETYPE=1 #814116 + -DLIB_INSTALL_DIR="$(get_libdir)" + ) + + # Unfortunately, the asm for x86/x32/arm isn't PIC-safe. + # x86 # Bug #528202, bug #913412 + # x32 # bug #510890 + if [[ ${ABI} = x86 ]] || [[ ${ABI} = x32 ]] || [[ ${ABI} = arm ]] ; then + mycmakeargs+=( + -DENABLE_ASSEMBLY=OFF + -DENABLE_TESTS="no" #728748 + ) + else + mycmakeargs+=( + -DENABLE_TESTS="$(usex test)" + ) + fi + + if [[ ${ABI} = ppc* ]] ; then + # upstream uses mix of altivec + power8 vectors + # it's impossible to enable altivec without CPU_POWER8 + # and it does not work on ppc32 + # so we toggle both variables together + mycmakeargs+=( + -DCPU_POWER8="$(usex cpu_flags_ppc_vsx2)" + -DENABLE_ALTIVEC="$(usex cpu_flags_ppc_vsx2)" + ) + fi + + local MULTIBUILD_VARIANTS=( "${variants[@]}" ) + if [[ "${#MULTIBUILD_VARIANTS[@]}" -gt 1 ]] ; then + multibuild_foreach_variant x265_variant_src_configure + + local liblist="" v= + for v in "${MULTIBUILD_VARIANTS[@]}" ; do + ln -sf "${BUILD_DIR}-${v}/libx265.a" "${BUILD_DIR%-*}/libx265_${v}.a" || die + liblist+="libx265_${v}.a;" + done + + mycmakeargs+=( + -DEXTRA_LIB="${liblist}" + -DEXTRA_LINK_FLAGS="-L${BUILD_DIR%-*}" + -DLINKED_10BIT"=$(usex 10bit)" + -DLINKED_12BIT="$(usex 12bit)" + ) + fi + + cmake_src_configure +} + +multilib_src_compile() { + local MULTIBUILD_VARIANTS=( "${variants[@]}" ) + if [[ "${#MULTIBUILD_VARIANTS[@]}" -gt 1 ]] ; then + multibuild_foreach_variant cmake_src_compile + fi + cmake_src_compile +} + +x265_variant_src_test() { + if [[ -x "${BUILD_DIR}/test/TestBench" ]] ; then + "${BUILD_DIR}/test/TestBench" || die + else + einfo "Unit tests check only assembly." + einfo "You do not seem to have any for ABI=${ABI}, x265 variant=${MULTIBUILD_VARIANT}" + einfo "Skipping tests." + fi +} + +multilib_src_test() { + local MULTIBUILD_VARIANTS=( "${variants[@]}" ) + if [[ "${#MULTIBUILD_VARIANTS[@]}" -gt 1 ]] ; then + multibuild_foreach_variant x265_variant_src_test + fi + x265_variant_src_test +} + +multilib_src_install() { + cmake_src_install +} + +multilib_src_install_all() { + dodoc -r "${S}/../doc/"* + + # we don't install *.a files for all variants, + # so just delete these files instead of pretending + # real USE=static-libs support + find "${ED}" -name "*.a" -delete || die +} diff --git a/media-libs/x265/x265-9999.ebuild b/media-libs/x265/x265-9999.ebuild index 8be9f4a93e84..e9c94f79c127 100644 --- a/media-libs/x265/x265-9999.ebuild +++ b/media-libs/x265/x265-9999.ebuild @@ -5,21 +5,25 @@ EAPI=8 inherit cmake flag-o-matic multilib-minimal multibuild +DESCRIPTION="Library for encoding video streams into the H.265/HEVC format" +HOMEPAGE="http://x265.org/ https://bitbucket.org/multicoreware/x265_git/" + if [[ ${PV} = 9999* ]]; then inherit git-r3 EGIT_REPO_URI="https://bitbucket.org/multicoreware/x265_git/" - S=${WORKDIR}/${P}/source + MY_P="${PN}-${PV}" else - SRC_URI="https://bitbucket.org/multicoreware/x265_git/downloads/${PN}_${PV}.tar.gz" - KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~x86" + SRC_URI="https://bitbucket.org/multicoreware/x265_git/downloads/${PN}_${PV}.tar.gz -> ${PN}-${PV}.tar.gz" + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~x86" + MY_P="${PN}_${PV}" fi -DESCRIPTION="Library for encoding video streams into the H.265/HEVC format" -HOMEPAGE="http://x265.org/ https://bitbucket.org/multicoreware/x265_git/" +S="${WORKDIR}/${MY_P}/source" +unset MY_P LICENSE="GPL-2" # subslot = libx265 soname -SLOT="0/208" +SLOT="0/212" IUSE="+10bit +12bit cpu_flags_ppc_vsx2 numa test" RESTRICT="!test? ( test )" @@ -34,16 +38,16 @@ PATCHES=( "${FILESDIR}/${PN}-9999-arm.patch" "${FILESDIR}/neon.patch" "${FILESDIR}/tests.patch" + "${FILESDIR}/${PN}-3.5-r5-cpp-std.patch" + "${FILESDIR}/${PN}-3.5-r5-gcc15.patch" "${FILESDIR}/${PN}-9999-test-ns.patch" ) -src_unpack() { - if [[ ${PV} = 9999* ]]; then - git-r3_src_unpack - else - unpack ${A} - export S="$(echo "${WORKDIR}/${PN}_"*"/source")" - fi +pkg_setup() { + variants=( + $(usev 12bit "main12") + $(usev 10bit "main10") + ) } # By default, the library and the encoder is configured for only one output bit @@ -57,102 +61,34 @@ src_unpack() { # To achieve this, we have to build one (static) library for each non-main # variant, and link it into the main library. # Upstream documents using the 8bit variant as main library, hence we do not -# allow disabling it: "main" *MUST* come last in the following list. - -x265_get_variants() { - local variants="" - use 12bit && variants+="main12 " - use 10bit && variants+="main10 " - variants+="main" - echo "${variants}" -} +# allow disabling it x265_variant_src_configure() { - mkdir -p "${BUILD_DIR}" || die - pushd "${BUILD_DIR}" >/dev/null || die - einfo "Configuring variant: ${MULTIBUILD_VARIANT} for ABI: ${ABI}" - local mycmakeargs=( "${myabicmakeargs[@]}" ) + local mycmakeargs=( + "${mycmakeargs[@]}" + -DHIGH_BIT_DEPTH=ON + -DEXPORT_C_API=OFF + -DENABLE_SHARED=OFF + -DENABLE_CLI=OFF + ) + case "${MULTIBUILD_VARIANT}" in "main12") mycmakeargs+=( - -DHIGH_BIT_DEPTH=ON - -DEXPORT_C_API=OFF - -DENABLE_SHARED=OFF - -DENABLE_CLI=OFF -DMAIN12=ON ) - if [[ ${ABI} = x86 ]] ; then - mycmakeargs+=( -DENABLE_ASSEMBLY=OFF ) - fi - if [[ ${ABI} = arm* ]] ; then - # 589674 - mycmakeargs+=( -DENABLE_ASSEMBLY=OFF ) - fi - # disable altivec for 12bit build #607802#c5 - if [[ ${ABI} = ppc* ]] ; then - mycmakeargs+=( - -DENABLE_ALTIVEC=OFF - -DCPU_POWER8=$(usex cpu_flags_ppc_vsx2 ON OFF) - ) - fi ;; "main10") mycmakeargs+=( - -DHIGH_BIT_DEPTH=ON - -DEXPORT_C_API=OFF - -DENABLE_SHARED=OFF - -DENABLE_CLI=OFF -DENABLE_HDR10_PLUS=ON ) - if [[ ${ABI} = x86 ]] ; then - mycmakeargs+=( -DENABLE_ASSEMBLY=OFF ) - fi - if [[ ${ABI} = arm* ]] ; then - # 589674 - mycmakeargs+=( -DENABLE_ASSEMBLY=OFF ) - fi - # disable altivec for 10bit build #607802#c5 - if [[ ${ABI} = ppc* ]] ; then - mycmakeargs+=( - -DENABLE_ALTIVEC=OFF - -DCPU_POWER8=$(usex cpu_flags_ppc_vsx2 ON OFF) - ) - fi - ;; - "main") - if (( "${#MULTIBUILD_VARIANTS[@]}" > 1 )) ; then - local myvariants=( "${MULTIBUILD_VARIANTS[@]}" ) - unset myvariants[${#MULTIBUILD_VARIANTS[@]}-1] - local liblist="" v= - for v in "${myvariants[@]}" ; do - ln -s "${BUILD_DIR%-*}-${v}/libx265.a" "libx265_${v}.a" || die - liblist+="libx265_${v}.a;" - done - mycmakeargs+=( - -DEXTRA_LIB="${liblist}" - -DEXTRA_LINK_FLAGS=-L. - -DLINKED_10BIT=$(usex 10bit) - -DLINKED_12BIT=$(usex 12bit) - ) - if [[ ${ABI} = ppc* ]] ; then - # upstream uses mix of altivec + power8 vectors - # it's impossible to enable altivec without CPU_POWER8 - # and it does not work on ppc32 - # so we toggle both variables together - mycmakeargs+=( - -DCPU_POWER8=$(usex cpu_flags_ppc_vsx2 ON OFF) - -DENABLE_ALTIVEC=$(usex cpu_flags_ppc_vsx2 ON OFF) - ) - fi - fi ;; *) die "Unknown variant: ${MULTIBUILD_VARIANT}";; esac cmake_src_configure - popd >/dev/null || die } multilib_src_configure() { @@ -161,37 +97,73 @@ multilib_src_configure() { # https://bitbucket.org/multicoreware/x265_git/issues/937/build-fails-with-lto filter-lto - local myabicmakeargs=( - -DENABLE_TESTS=$(usex test ON OFF) + local mycmakeargs=( $(multilib_is_native_abi || echo "-DENABLE_CLI=OFF") -DENABLE_PIC=ON - -DENABLE_LIBNUMA=$(usex numa ON OFF) + -DENABLE_LIBNUMA="$(usex numa)" + -DENABLE_MULTIVIEW="yes" + -DENABLE_SVT_HEVC="no" # missing + -DENABLE_VTUNE="no" # missing -DGIT_ARCHETYPE=1 #814116 -DLIB_INSTALL_DIR="$(get_libdir)" ) # Unfortunately, the asm for x86/x32/arm isn't PIC-safe. - if [[ ${ABI} = x86 ]] ; then - # Bug #528202, bug #913412 - myabicmakeargs+=( -DENABLE_ASSEMBLY=OFF ) - elif [[ ${ABI} = x32 ]] ; then - # bug #510890 - myabicmakeargs+=( -DENABLE_ASSEMBLY=OFF ) - elif [[ ${ABI} = arm ]] ; then - myabicmakeargs+=( -DENABLE_ASSEMBLY=OFF ) + # x86 # Bug #528202, bug #913412 + # x32 # bug #510890 + if [[ ${ABI} = x86 ]] || [[ ${ABI} = x32 ]] || [[ ${ABI} = arm ]] ; then + mycmakeargs+=( + -DENABLE_ASSEMBLY=OFF + -DENABLE_TESTS="no" #728748 + ) + else + mycmakeargs+=( + -DENABLE_TESTS="$(usex test)" + ) + fi + + if [[ ${ABI} = ppc* ]] ; then + # upstream uses mix of altivec + power8 vectors + # it's impossible to enable altivec without CPU_POWER8 + # and it does not work on ppc32 + # so we toggle both variables together + mycmakeargs+=( + -DCPU_POWER8="$(usex cpu_flags_ppc_vsx2)" + -DENABLE_ALTIVEC="$(usex cpu_flags_ppc_vsx2)" + ) fi - local MULTIBUILD_VARIANTS=( $(x265_get_variants) ) - multibuild_foreach_variant x265_variant_src_configure + local MULTIBUILD_VARIANTS=( "${variants[@]}" ) + if [[ "${#MULTIBUILD_VARIANTS[@]}" -gt 1 ]] ; then + multibuild_foreach_variant x265_variant_src_configure + + local liblist="" v= + for v in "${MULTIBUILD_VARIANTS[@]}" ; do + ln -sf "${BUILD_DIR}-${v}/libx265.a" "${BUILD_DIR%-*}/libx265_${v}.a" || die + liblist+="libx265_${v}.a;" + done + + mycmakeargs+=( + -DEXTRA_LIB="${liblist}" + -DEXTRA_LINK_FLAGS="-L${BUILD_DIR%-*}" + -DLINKED_10BIT"=$(usex 10bit)" + -DLINKED_12BIT="$(usex 12bit)" + ) + fi + + cmake_src_configure } multilib_src_compile() { - local MULTIBUILD_VARIANTS=( $(x265_get_variants) ) - multibuild_foreach_variant cmake_src_compile + local MULTIBUILD_VARIANTS=( "${variants[@]}" ) + if [[ "${#MULTIBUILD_VARIANTS[@]}" -gt 1 ]] ; then + multibuild_foreach_variant cmake_src_compile + fi + cmake_src_compile } x265_variant_src_test() { - if [ -x "${BUILD_DIR}/test/TestBench" ] ; then + if [[ -x "${BUILD_DIR}/test/TestBench" ]] ; then "${BUILD_DIR}/test/TestBench" || die else einfo "Unit tests check only assembly." @@ -201,14 +173,15 @@ x265_variant_src_test() { } multilib_src_test() { - local MULTIBUILD_VARIANTS=( $(x265_get_variants) ) - multibuild_foreach_variant x265_variant_src_test + local MULTIBUILD_VARIANTS=( "${variants[@]}" ) + if [[ "${#MULTIBUILD_VARIANTS[@]}" -gt 1 ]] ; then + multibuild_foreach_variant x265_variant_src_test + fi + x265_variant_src_test } multilib_src_install() { - # Install only "main" variant since the others are already linked into it. - local MULTIBUILD_VARIANTS=( "main" ) - multibuild_foreach_variant cmake_src_install + cmake_src_install } multilib_src_install_all() { |