Cross-compiling issues, mainly in Makefile.ffmpeg
I bought a LG OLED TV a few days ago and after learning about the RootMyTV stuff, I can now do whatever I want with it. Since the v4l and TV drivers are all present, I decided to try my hand at cross-compiling TVH to see where it'd lead me.
Problem is, I have been fighting with the build tool the past few days but there are so many little problems... But, they all seem to come from Makefile.ffmpeg.
Here's what I figured out so far:
CCis not respected in
.config.mkand needs to manually be overridden when invoking Make.
2. FFMPEG's configure script isn't given any flags for cross compilation; I had to manually patch the Makefile to add that; mainly
3. Not TVH's buildsystem fault, but during the build,
$(HOST)-asis invoked with
-D...flags. That won't do, because this is used to generate debug output (
-D produce assembler debugging messages).
4. CMake options to
x265_3.5can also not be passed. Now, CMake itself should be smart enough to figure out that this is a cross-compile toolchain - and yet, it still attempted to compile for
-march=i686... so I'd somehow need to adjust that, too.
This is as far as I have gotten so far.
My configure invocation:
env CFLAGS="$CFLAGS -I/opt/webos-sdk-x86_64/1.0.g/extra/include" LDFLAGS="$LDFLAGS -L/opt/webos-sdk-x86_64/1.0.g/extra/lib" ./configure --host=arm-webos-linux-gnueabi --prefix=/opt/webos-sdk-x86_64/1.0.g/extra
and used make like so:
make COMPILER="$CC" FFMPEG_HOST="arm-webos-linux-gnueabi" FFMPEG_CONFIGURE_FLAGS="--host=arm-webos-linux-gnueabi"
And patched Makefile.ffmpeg like this:
diff --git a/Makefile.ffmpeg b/Makefile.ffmpeg index 94f6e977a..5204239ca 100644 --- a/Makefile.ffmpeg +++ b/Makefile.ffmpeg @@ -174,7 +174,8 @@ AUTOGEN := ./autogen.sh CONFIGURE := FFMPEG_PREFIX=$(EPREFIX) \ PKG_CONFIG=$(ROOTDIR)/support/pkg-config.ffmpeg \ - ./configure --prefix=/ffmpeg --enable-static --disable-shared + ./configure --prefix=/ffmpeg --enable-static --disable-shared \ + $(FFMPEG_CONFIGURE_FLAGS) CONFIGURE_PI := CC="$(COMPILER) $(CFLAGS_PI)" $(CONFIGURE) CONFIGURE_FFMPEG := $(CONFIGURE) @@ -231,7 +232,6 @@ $(LIB_ROOT)/$(LIBX264)/.tvh_build: \ $(LIB_ROOT)/$(NASM)/.tvh_build \ $(LIB_ROOT)/$(LIBX264)/.tvh_download cd $(LIB_ROOT)/$(LIBX264) && $(CONFIGURE) \ - --extra-asflags="-DPIC" \ --extra-cflags="$(CFLAGS_PI)" \ --disable-cli \ --disable-swscale \
(The removal of -DPIC was an earlier attempt to work around the assembler issues untill I realized I could just re-define $AS to be GCC).
Do you have any ideas how I can improve on this? Or how I can work around the other problems?
I honestly don't even know how far TVH will be able to go when installed to a TV; but I do see stuff in /dev/dvb so I am curious to try
root@LGwebOSTV:/dev/dvb# pwd /dev/dvb root@LGwebOSTV:/dev/dvb# ls adapter0