Bug #6177
Cross-compiling issues, mainly in Makefile.ffmpeg
0%
Description
Hello!
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:
1.
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
--host=arm-webos-linux-gnueabi
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
I set
AS=arm-webos-linux-gnueabi-gcc
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
Kind regards,
Ingwie
History
Updated by Flole Systems over 2 years ago
You could just disable the static ffmpeg, then you should at least be able to build Tvheadend and see what happens if you try to run it on the TV.