summaryrefslogtreecommitdiff
path: root/extra/ffmpeg/PKGBUILD
blob: 366cfbbd1f0fc7d56084f3bff4261a6e8e7e3d4c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# disable LTO (breaks with too few registers in error: 'asm' operand has impossible constraints
eval "$(
declare -f build | \
  sed '
	s/--enable-lto/--disable-lto/
  '
)"

# also disable mfx - libmfx does not compile
depends=(${depends[@]//libmfx/})
eval "$(
  declare -f build | \
    sed '
      s/--enable-libmfx/--disable-libmfx/
    '
)"

# no vamf for non-pentium4
if [ "$CARCH" == 'i686' ] || [ "$CARCH" == 'i486' ]; then
  depends=(${depends[@]//vmaf/})
  
  eval "$(
    declare -f prepare | \
      sed '
        /vmaf/d
      '
  )"

  eval "$(
    declare -f build | \
      sed '
        s/--enable-libvmaf/--disable-libvmaf/
      '
  )"

fi

# force picking of a modern libvpx and not libvpx1.3 needed for steam
makedepends+=('libvpx>=1.8.2')

# no AviSynthPlus on i486 (uses Intel intrinsics and cmake support for
# disabling it is broken)
makedepends=(${makedepends[@]//avisynthplus/})
makedepends_i686+=(avisynthplus)
makedepends_pentium4=("${makedepends_i686[@]}")
if [ "$CARCH" == 'i486' ]; then
  eval "$(
    declare -f build | \
      sed '
        s/--enable-avisynth/--disable-avisynth/
      '
  )"
fi

# no rav1e on i486, no Rust (yet)
if [ "$CARCH" == 'i486' ]; then
  depends=(${depends[@]//librav1e.so/})
  eval "$(
    declare -f build | \
      sed '
        s@--enable-librav1e@--disable-librav1e@
      '
  )"
fi

# svt-av1 is 64-bit only
depends=(${depends[@]//svt-av1/})
eval "$(
  declare -f build | \
    sed '
      s@--enable-libsvtav1@--disable-libsvtav1@
    '
)"

# -latomic on i486
if [ "$CARCH" == 'i486' ]; then
  depends=(${depends[@]//librav1e.so/})
  eval "$(
    declare -f build | \
      sed '
        s@make[^ ]@make EXTRALIBS-ffmpeg=-latomic EXTRALIBS-ffplay=-latomic EXTRALIBS-ffprobe=-latomic@
      '
  )"
fi

# disable all modern optimizations
eval "$(
  declare -f build | \
    sed '
      s|./configure|./configure --disable-sse3 --disable-ssse3 --disable-sse4 --disable-sse42 --disable-mmxext --disable-avx --disable-avx2 --disable-avx512|
    '
)"
# disabled specific assembly per subarchitecture
if [ "$CARCH" == 'i486' ]; then
  eval "$(
    declare -f build | \
      sed '
        s|./configure|./configure --disable-sse --disable-sse2 --disable-mmx|
      '
  )"
fi
if [ "$CARCH" == 'i686' ]; then
  eval "$(
    declare -f build | \
      sed '
        s|./configure|./configure --disable-sse --disable-mmx|
      '
  )"
fi

# see FS32#239, basically everything breaks otherwise
eval "$(
  declare -f build | \
    sed '
      s|./configure|./configure --disable-asm|
    '
)"

# see FS32#239, x264 and i486 result in missing symbols, no clue
if [ "$CARCH" == 'i486' ]; then
  eval "$(
    declare -f build | \
      sed '
        s|--enable-libx264|--disable-libx264|
      '
  )"
fi