[mythtv] Build system issues with FFmpeg 5.1

Scott Theisen scott.the.elm at gmail.com
Mon Aug 22 01:50:47 UTC 2022


On 8/21/22 21:43, Scott Theisen wrote:
> Hello all,
>
> When I copy https://github.com/ulmus-scott/FFmpeg/tree/release5.1 into 
> MythTV and constify some pointers in libmyth/audio to satisfy 
> -fpermissive, I get the following error:
>
> ```
> make[2]: *** No rule to make target 
> '../../external/FFmpeg/libswresample/libmythswresample.so.', needed by 
> 'libmyth-33.so.33.0.0'.  Stop.
> ```
>
> It should be `libmythswresample.so.4`.  In 
> `mythtv/libs/libmyth/Makefile`, libmythavutil.so.57 has its version 
> number, but libmythavcodec also is missing its version number.
>
> I suspect this is due to FFmpeg splitting their version macros across 
> two files, version_major.h and version.h.  libavutil has an empty 
> version_major.h, only using version.h.
>
> The problem appears to be in configure in get_version() on line 7749, 
> but I have no idea how to fix it.  (Concatenating both files before 
> processing with awk?)
>
> Any suggestions are greatly appreciated.
>

This appears to work, unless someone has a better suggestion:

```
diff --git a/mythtv/configure b/mythtv/configure
index 69c0a8f4c6..4fcc627a9a 100755
--- a/mythtv/configure
+++ b/mythtv/configure
@@ -7750,7 +7750,8 @@ get_version(){
      lcname=lib${1}
      name=$(toupper $lcname)
      file=$source_path/external/FFmpeg/$lcname/version.h
-    eval $(awk "/#define ${name}_VERSION_M/ { print \$2 \"=\" \$3 }" 
"$file")
+    file_major=$source_path/external/FFmpeg/$lcname/version_major.h
+    eval $(awk "/#define ${name}_VERSION_M/ { print \$2 \"=\" \$3 }" 
"$file_major" "$file")
      enabled raise_major && eval 
${name}_VERSION_MAJOR=$((${name}_VERSION_MAJOR+100))
      eval 
${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
      eval echo "${lcname}_VERSION=\$${name}_VERSION" >> $TMPMAK
```



More information about the mythtv-dev mailing list