summaryrefslogtreecommitdiff
path: root/subprojects/packagefiles/ffmpeg/meson.build
blob: 8092783c27d33598caa2b5f3e28ea67e268763f0 (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
project('ffmpeg', 'c', version: '7.0.1', meson_version: '>=0.57.0')

compiler = meson.get_compiler('c')

cpu = target_machine.cpu_family()
is_64bit = (cpu == 'x86_64' or cpu == 'aarch64')
is_debug = get_option('buildtype').startswith('debug')
is_minsize = get_option('buildtype') == 'minsize'
is_windows = host_machine.system() == 'windows'
is_msvc = compiler.get_id() == 'msvc' or compiler.get_id() == 'clang-cl'
is_mingw = is_windows and not is_msvc

extra_options = []

if not is_debug
  extra_options += ['--disable-debug', '--enable-small']
endif

extra_options += ['--cc=' + compiler.cmd_array()[0]]
extra_options += ['--nm=' + meson.get_external_property('nm', 'nm')]
extra_options += ['--ar=' + meson.get_external_property('ar', 'ar')]

if is_windows
  if is_64bit
    extra_options += ['--target-os=win64', '--arch=x86_64']
  else
    extra_options += ['--target-os=win32', '--arch=x86']
  endif
  if is_msvc
    extra_options += ['--toolchain=msvc']
  endif
endif

#'--extra-ldflags=-L/home/pizza/c/camu/build6/subprojects/libalabaster -l:libalabaster.a',
#'--malloc-prefix=al_',

decoders = 'flac,mp3,mp3float,aac,opus,alac,mjpeg,jpeg2000,h264,hevc,vp9'
decoders += ',pcm_f32be,pcm_s32be,pcm_s32le,pcm_s32le_planar,pcm_f32le,pcm_s24be,pcm_s24le,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar'
#decoders += ',pcm_dvd,mpegvideo,mpeg2video'
#decoders += ',ass,srt'

demuxers = 'flac,mp3,aac,wav,image2,mjpeg,image2pipe,image_jpeg_pipe,matroska,mov'
#demuxers += ',mpegts,mpegtsraw,mpegps,mpegvideo'
#demuxers += ',ass,srt'

parsers = 'mjpeg,jpeg2000'
#parsers += ',mpegaudio,mpegvideo,dvd_nav'

#extra_options += ['--enable-zlib', '--enable-libsoxr']
extra_options += ['--enable-zlib']
decoders += ',png,apng'
demuxers += ',image_png_pipe'
parsers += ',png'

bsfs = 'extract_extradata,mp3_header_decompress'

ext_proj = import('unstable-external_project')

proj = ext_proj.add_project('configure',
  configure_options: [
    '--prefix=@PREFIX@',
    '--libdir=@PREFIX@/@LIBDIR@',
    '--incdir=@PREFIX@/@INCLUDEDIR@',
    '--enable-pic',
    '--enable-static',
    '--disable-logging',
    '--disable-shared',
    '--disable-all',
    '--disable-autodetect',
    '--disable-everything',
    '--disable-programs',
    '--disable-doc',
    '--disable-htmlpages',
    '--disable-manpages',
    '--disable-podpages',
    '--disable-txtpages',
    '--disable-vdpau',
    '--disable-vaapi',
    '--disable-bzlib',
    '--disable-error-resilience',
    '--disable-iconv',
    '--disable-schannel',
    '--disable-network',
    '--disable-securetransport',
    '--disable-sdl2',
    '--disable-symver',
    '--disable-faan',
    '--disable-alsa',
    '--disable-xlib',
    '--disable-vulkan',
    '--enable-nonfree',
    '--enable-runtime-cpudetect',
    '--enable-asm',
    '--enable-inline-asm',
    '--enable-x86asm',
    '--enable-avutil',
    '--enable-avformat',
    '--enable-avcodec',
    '--enable-swresample',
    '--enable-swscale',
    '--disable-indevs',
    '--disable-outdevs',
    '--enable-demuxer=' + demuxers,
    '--enable-decoder=' + decoders,
    '--enable-parser=' + parsers,
    '--enable-bsf=' + bsfs,
    extra_options,
  ],
  cross_configure_options: ['--enable-cross-compile'],
  verbose: true)

avutil = proj.dependency('avutil')
avformat = proj.dependency('avformat')
avcodec = proj.dependency('avcodec')
swresample = proj.dependency('swresample')
swscale = proj.dependency('swscale')
ffmpeg_inc_dep = declare_dependency(include_directories: include_directories('.', 'build/'))