[Cin] Now trying to make my x265-multilib patches in more upstreamable form

Andrew Randrianasulu randrianasulu at gmail.com
Wed Mar 18 17:33:09 CET 2020


Oh, because I wrestle with buildsystem anyway ...

I created three x265 patches, to be put in thirdparty/src alongside x265 tarball

patch 1 basically adds empty (/bin/true) pseudo configure
patch 2  adds Makefile - it will do some library copying work
patch 3 adds miltilib.sh, adapted from x265's own version:


--- /dev/null   2020-03-14 06:02:18.586124011 +0300
+++ ./multilib.sh       2020-03-18 00:04:59.404807407 +0300
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+mkdir -p 8bit 10bit 12bit
+
+cd 12bit
+cmake ../source -DHIGH_BIT_DEPTH=ON -DENABLE_ASSEMBLY=OFF -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF -DMAIN12=ON
+make  -j 1
+
+cd ../10bit
+cmake ../source -DHIGH_BIT_DEPTH=ON -DENABLE_ASSEMBLY=OFF -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF
+make -j 1
+
+cd ../8bit
+ln -sf ../10bit/libx265.a libx265_main10.a
+ln -sf ../12bit/libx265.a libx265_main12.a
+cmake ../source -DEXTRA_LIB="x265_main10.a;x265_main12.a" -DENABLE_SHARED=OFF -DEXTRA_LINK_FLAGS=-L. -DLINKED_10BIT=ON -DLINKED_12BIT=ON
+make -j 1
+
+# rename the 8bit library, then combine all three into libx265.a
+mv libx265.a libx265_main.a
+
+uname=`uname`
+if [ "$uname" = "Linux" ]
+then
+
+# On Linux, we use GNU ar to combine the static libraries together
+ar -M <<EOF
+CREATE libx265.a
+ADDLIB libx265_main.a
+ADDLIB libx265_main10.a
+ADDLIB libx265_main12.a
+SAVE
+END
+EOF
+
+else
+
+# Mac/BSD libtool
+libtool -static -o libx265.a libx265_main.a libx265_main10.a libx265_main12.a 2>/dev/null
+
+fi

Note, I disabled high-bit-depth assembly because it simply doesn't exist on x86-32!
But for x86-64 you probably want it ON. Some bash arch detection needed ... 

After buildsystem unpacks and patches x265 sources it will try to execute ./configure
 ..and opps, it was not executable!

So, I modified thirdparty/Makefile AGAIN, this time only x265 line:

x265.cfg_vars?=chmod +x ./configure; chmod +x ./multilib.sh;

after this buildsystem makes (8-10-12 bit-ready) .a library, ready to link into ffmpeg.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: x265_3.2.1.patch1
Type: text/x-diff
Size: 127 bytes
Desc: not available
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20200318/15d6bbf1/attachment-0003.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: x265_3.2.1.patch2
Type: text/x-diff
Size: 273 bytes
Desc: not available
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20200318/15d6bbf1/attachment-0004.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: x265_3.2.1.patch3
Type: text/x-diff
Size: 1167 bytes
Desc: not available
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20200318/15d6bbf1/attachment-0005.bin>


More information about the Cin mailing list