Vargol / ffmpeg-apple-arm64-build

Build script for ffmpeg targeting the latest open source video codecs running on macOS using Apple's M1 processor.
221 stars 38 forks source link

Skipping parts #29

Open Christilut opened 2 months ago

Christilut commented 2 months ago

Hi! Thanks for this project, trying to get a build going now.

I'm getting an error on fontconfig, which I assume is part of libass? I don't actually need subtitle support in my ffmpeg build (audio only) so is there a way to skip fontconfig and libass?

Where can I see what other parts can be skipped? I would prefer a build that is as small as possible.

Vargol commented 2 months ago

there's not a straight forward way of doing it you'd have to comment out the fontconfig and libass lines from build.sh, and delete the --enable-libass argument from build/build-ffmpeg.sh

Having said that I'm not sure fontconfig is part of the libass build it builds after it so what's the issue with fontconfig, I've done a fast build of fontconfig and that worked (doing a full rebuild to see if that errors)

Christilut commented 2 months ago

I'm getting this:

Undefined symbols for architecture arm64:
  "_FT_Done_Face", referenced from:
      _FcFreeTypeQuery in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeQueryAll in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeQueryAll in libfontconfig.a[11](fcfreetype.o)
  "_FT_Done_FreeType", referenced from:
      _FcFreeTypeQuery in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeQueryAll in libfontconfig.a[11](fcfreetype.o)
  "_FT_Get_Advance", referenced from:
      _FcFreeTypeSpacing in libfontconfig.a[11](fcfreetype.o)
  "_FT_Get_Char_Index", referenced from:
      _FcFreeTypeCharIndex in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeCharIndex in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeCharIndex in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeCharIndex in libfontconfig.a[11](fcfreetype.o)
  "_FT_Get_First_Char", referenced from:
      _FcFreeTypeCharSet in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeSpacing in libfontconfig.a[11](fcfreetype.o)
  "_FT_Get_MM_Var", referenced from:
      _FcFreeTypeQueryFaceInternal in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeQueryAll in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeQueryAll in libfontconfig.a[11](fcfreetype.o)
  "_FT_Get_Next_Char", referenced from:
      _FcFreeTypeCharSet in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeSpacing in libfontconfig.a[11](fcfreetype.o)
  "_FT_Get_Postscript_Name", referenced from:
      _FcFreeTypeQueryFaceInternal in libfontconfig.a[11](fcfreetype.o)
  "_FT_Get_Sfnt_Name", referenced from:
      _FcFreeTypeQueryFaceInternal in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeQueryFaceInternal in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeQueryFaceInternal in libfontconfig.a[11](fcfreetype.o)
  "_FT_Get_Sfnt_Name_Count", referenced from:
      _FcFreeTypeQueryFaceInternal in libfontconfig.a[11](fcfreetype.o)
  "_FT_Get_Sfnt_Table", referenced from:
      _FcFreeTypeQueryFaceInternal in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeQueryFaceInternal in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeSpacing in libfontconfig.a[11](fcfreetype.o)
  "_FT_Init_FreeType", referenced from:
      _FcFreeTypeQuery in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeQueryAll in libfontconfig.a[11](fcfreetype.o)
  "_FT_Load_Glyph", referenced from:
      _FcFreeTypeCharSet in libfontconfig.a[11](fcfreetype.o)
  "_FT_Load_Sfnt_Table", referenced from:
      _FcFontCapabilities in libfontconfig.a[11](fcfreetype.o)
  "_FT_New_Face", referenced from:
      _FcFreeTypeQuery in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeQueryAll in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeQueryAll in libfontconfig.a[11](fcfreetype.o)
  "_FT_Select_Charmap", referenced from:
      _FcFreeTypeCharIndex in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeCharIndex in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeCharSet in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeCharSet in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeSpacing in libfontconfig.a[11](fcfreetype.o)
      _FcFreeTypeSpacing in libfontconfig.a[11](fcfreetype.o)
  "_FT_Select_Size", referenced from:
      _FcFreeTypeSpacing in libfontconfig.a[11](fcfreetype.o)
  "_FT_Set_Var_Design_Coordinates", referenced from:
      _FcFreeTypeQueryAll in libfontconfig.a[11](fcfreetype.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [fc-cache] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
check failed: build of fontconfig-2.15.0 failed
Vargol commented 2 months ago

Looks like its picking up an Intel only version of libfreetype from somewhere

from your build directory what does

$ lipo -detailed_info tool/lib/libfreetype.a

give it should show

input file tool/lib/libfreetype.a is not a fat file
Non-fat file: tool/lib/libfreetype.a is architecture: arm64

You didn't set Terminal to run using Rosetta way back when Apple Silicon was new, it was a thing people would do before Brew supported Apple Silicon it can cause issues like this ?

Christilut commented 2 months ago

I think you're right, I'm also seeing these warnings:

ld: warning: ignoring file '/usr/local/Cellar/fontconfig/2.15.0/lib/libfontconfig.1.dylib': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file '/usr/local/Cellar/freetype/2.13.2/lib/libfreetype.6.dylib': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file '/usr/local/Cellar/fontconfig/2.15.0/lib/libfontconfig.1.dylib': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file '/usr/local/Cellar/freetype/2.13.2/lib/libfreetype.6.dylib': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file '/usr/local/Cellar/freetype/2.13.2/lib/libfreetype.6.dylib': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file '/usr/local/Cellar/fontconfig/2.15.0/lib/libfontconfig.1.dylib': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file '/usr/local/Cellar/fontconfig/2.15.0/lib/libfontconfig.1.dylib': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file '/usr/local/Cellar/fontconfig/2.15.0/lib/libfontconfig.1.dylib': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file '/usr/local/Cellar/freetype/2.13.2/lib/libfreetype.6.dylib': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file '/usr/local/Cellar/fontconfig/2.15.0/lib/libfontconfig.1.dylib': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file '/usr/local/Cellar/freetype/2.13.2/lib/libfreetype.6.dylib': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file '/usr/local/Cellar/freetype/2.13.2/lib/libfreetype.6.dylib': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file '/usr/local/Cellar/fontconfig/2.15.0/lib/libfontconfig.1.dylib': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file '/usr/local/Cellar/freetype/2.13.2/lib/libfreetype.6.dylib': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file '/usr/local/Cellar/freetype/2.13.2/lib/libfreetype.6.dylib': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file '/usr/local/Cellar/fontconfig/2.15.0/lib/libfontconfig.1.dylib': found architecture 'x86_64', required architecture 'arm64'

I'll check my brew installation