summaryrefslogtreecommitdiffstats
path: root/contrib/ffmpeg/module.defs
blob: 36d04b2db7fa496471e1115cdeb94c8c170b56f1 (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
__deps__ := YASM BZIP2 ZLIB FDKAAC LIBVPX LAME LIBOPUS LIBSPEEX XZ
ifeq (1,$(FEATURE.qsv))
__deps__ += LIBMFX
endif

# workaround for potential race condition
# where x264 may fail to find nasm later
__deps__ += X264

$(eval $(call import.MODULE.defs,FFMPEG,ffmpeg,$(__deps__)))
$(eval $(call import.CONTRIB.defs,FFMPEG))

FFMPEG.FETCH.url  = https://download.handbrake.fr/handbrake/contrib/ffmpeg-4.0.tar.bz2
FFMPEG.FETCH.url += https://www.ffmpeg.org/releases/ffmpeg-4.0.tar.bz2
FFMPEG.FETCH.sha256 = 318a39d906c9107d49766c63787798dd078d2a36e6670a9dfeda3c55be4573b8

FFMPEG.CONFIGURE.deps  =
FFMPEG.CONFIGURE.host  =
FFMPEG.CONFIGURE.build =
FFMPEG.CONFIGURE.env.LOCAL_PATH = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)"
FFMPEG.BUILD.env                = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)"

FFMPEG.CONFIGURE.extra = \
    --enable-gpl \
    --disable-doc \
    --disable-bsfs \
    --enable-bsf=aac_adtstoasc \
    --disable-programs \
    --disable-avdevice \
    --disable-muxers \
    --disable-network \
    --disable-hwaccels \
    --disable-vaapi \
    --disable-vdpau \
    --disable-encoders \
    --enable-avresample \
    --enable-libmp3lame \
    --enable-encoder=aac \
    --enable-encoder=ac3 \
    --enable-encoder=eac3 \
    --enable-encoder=flac \
    --enable-encoder=mpeg2video \
    --enable-encoder=mpeg4 \
    --enable-encoder=libmp3lame \
    --enable-libopus \
    --enable-encoder=libopus \
    --enable-libspeex \
    --disable-encoder=libspeex \
    --enable-decoder=libspeex \
    --enable-libvpx \
    --disable-decoder=libvpx_* \
    --enable-encoder=libvpx_vp8 \
    --enable-encoder=libvpx_vp9 \
    --disable-decoder=*_crystalhd \
    --enable-lzma \
    --cc="$(FFMPEG.GCC.gcc)" \
    --extra-ldflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -L$(call fn.ABSOLUTE,$(CONTRIB.build/)lib)"

ifeq (1,$(FEATURE.fdk_aac))
FFMPEG.CONFIGURE.extra += \
    --enable-nonfree \
    --enable-libfdk-aac \
    --enable-encoder=libfdk_aac
endif

FFMPEG.CONFIGURE.extra += \
    --enable-muxer=matroska \
    --enable-muxer=webm \
    --enable-muxer=mov \
    --enable-muxer=mp4 \
    --enable-muxer=psp \
    --enable-muxer=ipod

ifeq (darwin,$(BUILD.system))
    FFMPEG.CONFIGURE.extra += --disable-audiotoolbox --disable-coreimage --disable-videotoolbox
    ifeq (x86_64,$(BUILD.arch))
        FFMPEG.CONFIGURE.extra += --arch=x86_64
    endif
endif

## check against tuple: B-SYSTEM where B is { 0 | 1 } for cross-compiling flag
ifeq (0-cygwin,$(BUILD.cross)-$(BUILD.system))
    FFMPEG.GCC.args.extra += -fno-common
else ifeq (1-mingw,$(BUILD.cross)-$(BUILD.system))
    FFMPEG.CONFIGURE.extra += \
        --target-os=mingw32 \
        --arch=$(BUILD.machine) \
        --cross-prefix=$(BUILD.cross.prefix)
    FFMPEG.GCC.args.extra += -fno-common
    ifeq (1,$(FEATURE.local_pkgconfig))
        FFMPEG.CONFIGURE.extra += --pkg-config="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin/$(PKGCONFIG.exe))"
    else
        FFMPEG.CONFIGURE.extra += --pkg-config=$(PKGCONFIG.exe)
    endif
endif

ifneq (none,$(FFMPEG.GCC.g))
    FFMPEG.CONFIGURE.extra += --enable-debug
    ifeq (max,$(FFMPEG.GCC.g))
        FFMPEG.CONFIGURE.extra += --extra-cflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -I$(call fn.ABSOLUTE,$(CONTRIB.build/)include) -DDEBUG"
    else
        FFMPEG.CONFIGURE.extra += --extra-cflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -I$(call fn.ABSOLUTE,$(CONTRIB.build/)include) -DNDEBUG"
    endif
else
    FFMPEG.CONFIGURE.extra += --disable-debug
    FFMPEG.CONFIGURE.extra += --extra-cflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -I$(call fn.ABSOLUTE,$(CONTRIB.build/)include) -DNDEBUG"
endif

ifeq (none,$(FFMPEG.GCC.O))
    FFMPEG.CONFIGURE.extra += --disable-optimizations
endif

ifeq (1,$(FEATURE.qsv))
  FFMPEG.CONFIGURE.extra += --enable-libmfx
endif

## enable compile verbosity
FFMPEG.BUILD.extra = V=1

## For POSIX.1-2001
ifeq (solaris,$(BUILD.system))
    FFMPEG.CONFIGURE.extra += --extra-libs=/usr/lib/values-xpg6.o
endif

## MPC8 Doesn't compile on SPARC
ifeq (solaris-sparc,$(BUILD.system)-$(BUILD.machine))
    FFMPEG.CONFIGURE.extra += --disable-demuxer=mpc8
endif