libs.py 13.9 KB
Newer Older
1
import re
2 3
from os.path import abspath

4 5
from build.project import Project
from build.zlib import ZlibProject
6
from build.meson import MesonProject
7
from build.cmake import CmakeProject
8 9 10 11
from build.autotools import AutotoolsProject
from build.ffmpeg import FfmpegProject
from build.boost import BoostProject

12
libmpdclient = MesonProject(
13 14
    'https://www.musicpd.org/download/libmpdclient/2/libmpdclient-2.18.tar.xz',
    '4cb01e1f567e0169aca94875fb6e1200e7f5ce35b63a4df768ec1591fb1081fa',
15 16 17
    'lib/libmpdclient.a',
)

18
libogg = AutotoolsProject(
19 20
    'http://downloads.xiph.org/releases/ogg/libogg-1.3.4.tar.xz',
    'c163bc12bc300c401b6aa35907ac682671ea376f13ae0969a220f7ddf71893fe',
21
    'lib/libogg.a',
22 23 24
    [
        '--disable-shared', '--enable-static',
    ],
25 26 27
)

libvorbis = AutotoolsProject(
28 29
    'http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.tar.xz',
    'af00bb5a784e7c9e69f56823de4637c350643deedaf333d0fa86ecdba6fcb415',
30
    'lib/libvorbis.a',
31 32 33
    [
        '--disable-shared', '--enable-static',
    ],
34 35 36 37 38

    edits={
        # this option is not understood by clang
        'configure': lambda data: data.replace('-mno-ieee-fp', ' '),
    }
39 40 41
)

opus = AutotoolsProject(
42 43
    'https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz',
    '65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d',
44
    'lib/libopus.a',
45 46
    [
        '--disable-shared', '--enable-static',
47 48
        '--disable-doc',
        '--disable-extra-programs',
49
    ],
50 51 52

    # suppress "visibility default" from opus_defines.h
    cppflags='-DOPUS_EXPORT=',
53 54 55
)

flac = AutotoolsProject(
56 57
    'http://downloads.xiph.org/releases/flac/flac-1.3.3.tar.xz',
    '213e82bd716c9de6db2f98bcadbc4c24c7e2efe8c75939a1a84e28539c4e1748',
58 59 60 61
    'lib/libFLAC.a',
    [
        '--disable-shared', '--enable-static',
        '--disable-xmms-plugin', '--disable-cpplibs',
62
        '--disable-doxygen-docs',
63
    ],
64
    subdirs=['include', 'src/libFLAC'],
65 66 67
)

zlib = ZlibProject(
martinarielhartmann's avatar
martinarielhartmann committed
68 69
    'http://zlib.net/zlib-1.2.11.tar.xz',
    '4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066',
70 71 72 73 74 75 76
    'lib/libz.a',
)

libid3tag = AutotoolsProject(
    'ftp://ftp.mars.org/pub/mpeg/libid3tag-0.15.1b.tar.gz',
    'e5808ad997ba32c498803822078748c3',
    'lib/libid3tag.a',
77 78
    [
        '--disable-shared', '--enable-static',
79 80 81

        # without this, libid3tag's configure.ac ignores -O* and -f*
        '--disable-debugging',
82
    ],
83
    autogen=True,
84 85 86 87 88

    edits={
        # fix bug in libid3tag's configure.ac which discards all but the last optimization flag
        'configure.ac': lambda data: re.sub(r'optimize="\$1"', r'optimize="$optimize $1"', data, count=1),
    }
89 90 91 92 93 94
)

libmad = AutotoolsProject(
    'ftp://ftp.mars.org/pub/mpeg/libmad-0.15.1b.tar.gz',
    '1be543bc30c56fb6bea1d7bf6a64e66c',
    'lib/libmad.a',
95 96
    [
        '--disable-shared', '--enable-static',
97 98 99

        # without this, libmad's configure.ac ignores -O* and -f*
        '--disable-debugging',
100
    ],
101 102 103
    autogen=True,
)

104
liblame = AutotoolsProject(
105 106
    'http://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz',
    'ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e',
107 108 109 110 111 112 113 114
    'lib/libmp3lame.a',
    [
        '--disable-shared', '--enable-static',
        '--disable-gtktest', '--disable-analyzer-hooks',
        '--disable-decoder', '--disable-frontend',
    ],
)

115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
libmodplug = AutotoolsProject(
    'https://downloads.sourceforge.net/modplug-xmms/libmodplug/0.8.9.0/libmodplug-0.8.9.0.tar.gz',
    '457ca5a6c179656d66c01505c0d95fafaead4329b9dbaa0f997d00a3508ad9de',
    'lib/libmodplug.a',
    [
        '--disable-shared', '--enable-static',
    ],
)

wildmidi = CmakeProject(
    'https://codeload.github.com/Mindwerks/wildmidi/tar.gz/wildmidi-0.4.3',
    '498e5a96455bb4b91b37188ad6dcb070824e92c44f5ed452b90adbaec8eef3c5',
    'lib/libWildMidi.a',
    [
        '-DBUILD_SHARED_LIBS=OFF',
        '-DWANT_PLAYER=OFF',
        '-DWANT_STATIC=ON',
    ],
    base='wildmidi-wildmidi-0.4.3',
    name='wildmidi',
    version='0.4.3',
)

138 139 140 141 142 143 144 145 146 147 148 149
gme = CmakeProject(
    'https://bitbucket.org/mpyne/game-music-emu/downloads/game-music-emu-0.6.3.tar.xz',
    'aba34e53ef0ec6a34b58b84e28bf8cfbccee6585cebca25333604c35db3e051d',
    'lib/libgme.a',
    [
        '-DBUILD_SHARED_LIBS=OFF',
        '-DENABLE_UBSAN=OFF',
        '-DZLIB_INCLUDE_DIR=OFF',
        '-DSDL2_DIR=OFF',
    ],
)

150
ffmpeg = FfmpegProject(
151 152
    'http://ffmpeg.org/releases/ffmpeg-4.2.3.tar.xz',
    '9df6c90aed1337634c1fb026fb01c154c29c82a64ea71291ff2da9aacb9aad31',
153 154 155 156 157 158 159 160 161 162 163 164 165
    'lib/libavcodec.a',
    [
        '--disable-shared', '--enable-static',
        '--enable-gpl',
        '--enable-small',
        '--disable-pthreads',
        '--disable-programs',
        '--disable-doc',
        '--disable-avdevice',
        '--disable-swresample',
        '--disable-swscale',
        '--disable-postproc',
        '--disable-avfilter',
166 167 168
        '--disable-lzo',
        '--disable-faan',
        '--disable-pixelutils',
169 170
        '--disable-network',
        '--disable-encoders',
171
        '--disable-muxers',
172
        '--disable-protocols',
173
        '--disable-devices',
174
        '--disable-filters',
175
        '--disable-v4l2_m2m',
176

177 178 179 180 181
        '--disable-parser=bmp',
        '--disable-parser=cavsvideo',
        '--disable-parser=dvbsub',
        '--disable-parser=dvdsub',
        '--disable-parser=dvd_nav',
182 183 184 185 186 187 188 189 190
        '--disable-parser=flac',
        '--disable-parser=g729',
        '--disable-parser=gsm',
        '--disable-parser=h261',
        '--disable-parser=h263',
        '--disable-parser=h264',
        '--disable-parser=hevc',
        '--disable-parser=mjpeg',
        '--disable-parser=mlp',
191 192
        '--disable-parser=mpeg4video',
        '--disable-parser=mpegvideo',
193
        '--disable-parser=opus',
194
        '--disable-parser=vc1',
195 196 197
        '--disable-parser=vp3',
        '--disable-parser=vp8',
        '--disable-parser=vp9',
198 199
        '--disable-parser=png',
        '--disable-parser=pnm',
200 201
        '--disable-parser=xma',

202 203 204 205 206 207 208 209
        '--disable-demuxer=aqtitle',
        '--disable-demuxer=ass',
        '--disable-demuxer=bethsoftvid',
        '--disable-demuxer=bink',
        '--disable-demuxer=cavsvideo',
        '--disable-demuxer=cdxl',
        '--disable-demuxer=dvbsub',
        '--disable-demuxer=dvbtxt',
210 211 212
        '--disable-demuxer=h261',
        '--disable-demuxer=h263',
        '--disable-demuxer=h264',
213
        '--disable-demuxer=ico',
214
        '--disable-demuxer=image2',
215 216 217 218 219
        '--disable-demuxer=jacosub',
        '--disable-demuxer=lrc',
        '--disable-demuxer=microdvd',
        '--disable-demuxer=mjpeg',
        '--disable-demuxer=mjpeg_2000',
220 221
        '--disable-demuxer=mpegps',
        '--disable-demuxer=mpegvideo',
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238
        '--disable-demuxer=mpl2',
        '--disable-demuxer=mpsub',
        '--disable-demuxer=pjs',
        '--disable-demuxer=rawvideo',
        '--disable-demuxer=realtext',
        '--disable-demuxer=sami',
        '--disable-demuxer=scc',
        '--disable-demuxer=srt',
        '--disable-demuxer=stl',
        '--disable-demuxer=subviewer',
        '--disable-demuxer=subviewer1',
        '--disable-demuxer=swf',
        '--disable-demuxer=tedcaptions',
        '--disable-demuxer=vobsub',
        '--disable-demuxer=vplayer',
        '--disable-demuxer=webvtt',
        '--disable-demuxer=yuv4mpegpipe',
239 240 241 242 243 244 245 246 247 248 249 250 251

        # we don't need these decoders, because we have the dedicated
        # libraries
        '--disable-decoder=flac',
        '--disable-decoder=opus',
        '--disable-decoder=vorbis',

        # audio codecs nobody uses
        '--disable-decoder=atrac1',
        '--disable-decoder=atrac3',
        '--disable-decoder=atrac3al',
        '--disable-decoder=atrac3p',
        '--disable-decoder=atrac3pal',
252 253 254
        '--disable-decoder=binkaudio_dct',
        '--disable-decoder=binkaudio_rdft',
        '--disable-decoder=bmv_audio',
255 256 257 258
        '--disable-decoder=dsicinaudio',
        '--disable-decoder=dvaudio',
        '--disable-decoder=metasound',
        '--disable-decoder=paf_audio',
259 260
        '--disable-decoder=ra_144',
        '--disable-decoder=ra_288',
261 262 263 264 265
        '--disable-decoder=ralf',
        '--disable-decoder=qdm2',
        '--disable-decoder=qdmc',

        # disable lots of image and video codecs
266 267 268 269 270 271 272 273
        '--disable-decoder=ass',
        '--disable-decoder=asv1',
        '--disable-decoder=asv2',
        '--disable-decoder=apng',
        '--disable-decoder=avrn',
        '--disable-decoder=avrp',
        '--disable-decoder=bethsoftvid',
        '--disable-decoder=bink',
274
        '--disable-decoder=bmp',
275 276 277 278
        '--disable-decoder=bmv_video',
        '--disable-decoder=cavs',
        '--disable-decoder=ccaption',
        '--disable-decoder=cdgraphics',
279
        '--disable-decoder=clearvideo',
280
        '--disable-decoder=dirac',
281
        '--disable-decoder=dsicinvideo',
282 283
        '--disable-decoder=dvbsub',
        '--disable-decoder=dvdsub',
284
        '--disable-decoder=dvvideo',
285
        '--disable-decoder=exr',
286 287 288 289 290
        '--disable-decoder=ffv1',
        '--disable-decoder=ffvhuff',
        '--disable-decoder=ffwavesynth',
        '--disable-decoder=flic',
        '--disable-decoder=flv',
291
        '--disable-decoder=fraps',
292 293 294 295 296 297
        '--disable-decoder=gif',
        '--disable-decoder=h261',
        '--disable-decoder=h263',
        '--disable-decoder=h263i',
        '--disable-decoder=h263p',
        '--disable-decoder=h264',
298
        '--disable-decoder=hevc',
299 300 301
        '--disable-decoder=hnm4_video',
        '--disable-decoder=hq_hqa',
        '--disable-decoder=hqx',
302
        '--disable-decoder=idcin',
303 304 305 306 307 308
        '--disable-decoder=iff_ilbm',
        '--disable-decoder=indeo2',
        '--disable-decoder=indeo3',
        '--disable-decoder=indeo4',
        '--disable-decoder=indeo5',
        '--disable-decoder=interplay_video',
309
        '--disable-decoder=jacosub',
310 311 312
        '--disable-decoder=jpeg2000',
        '--disable-decoder=jpegls',
        '--disable-decoder=microdvd',
313
        '--disable-decoder=mimic',
314 315
        '--disable-decoder=mjpeg',
        '--disable-decoder=mmvideo',
316
        '--disable-decoder=mpl2',
317 318 319 320 321
        '--disable-decoder=motionpixels',
        '--disable-decoder=mpeg1video',
        '--disable-decoder=mpeg2video',
        '--disable-decoder=mpeg4',
        '--disable-decoder=mpegvideo',
322
        '--disable-decoder=mscc',
323 324 325 326
        '--disable-decoder=msmpeg4_crystalhd',
        '--disable-decoder=msmpeg4v1',
        '--disable-decoder=msmpeg4v2',
        '--disable-decoder=msmpeg4v3',
327 328
        '--disable-decoder=msvideo1',
        '--disable-decoder=mszh',
329 330 331 332
        '--disable-decoder=mvc1',
        '--disable-decoder=mvc2',
        '--disable-decoder=on2avc',
        '--disable-decoder=paf_video',
333
        '--disable-decoder=png',
334 335 336
        '--disable-decoder=qdraw',
        '--disable-decoder=qpeg',
        '--disable-decoder=rawvideo',
337 338 339 340
        '--disable-decoder=realtext',
        '--disable-decoder=roq',
        '--disable-decoder=roq_dpcm',
        '--disable-decoder=rscc',
341 342 343 344
        '--disable-decoder=rv10',
        '--disable-decoder=rv20',
        '--disable-decoder=rv30',
        '--disable-decoder=rv40',
345
        '--disable-decoder=sami',
346
        '--disable-decoder=sheervideo',
347 348 349 350 351 352 353 354
        '--disable-decoder=snow',
        '--disable-decoder=srt',
        '--disable-decoder=stl',
        '--disable-decoder=subrip',
        '--disable-decoder=subviewer',
        '--disable-decoder=subviewer1',
        '--disable-decoder=svq1',
        '--disable-decoder=svq3',
355
        '--disable-decoder=tiff',
356
        '--disable-decoder=tiertexseqvideo',
357 358 359 360 361 362 363 364 365 366 367 368 369
        '--disable-decoder=truemotion1',
        '--disable-decoder=truemotion2',
        '--disable-decoder=truemotion2rt',
        '--disable-decoder=twinvq',
        '--disable-decoder=utvideo',
        '--disable-decoder=vc1',
        '--disable-decoder=vmdvideo',
        '--disable-decoder=vp3',
        '--disable-decoder=vp5',
        '--disable-decoder=vp6',
        '--disable-decoder=vp7',
        '--disable-decoder=vp8',
        '--disable-decoder=vp9',
370
        '--disable-decoder=vqa',
371
        '--disable-decoder=webvtt',
372 373 374 375
        '--disable-decoder=wmv1',
        '--disable-decoder=wmv2',
        '--disable-decoder=wmv3',
        '--disable-decoder=yuv4',
376 377 378 379
    ],
)

curl = AutotoolsProject(
380 381
    'http://curl.haxx.se/download/curl-7.70.0.tar.xz',
    '032f43f2674008c761af19bf536374128c16241fb234699a55f9fb603fcfbae7',
382 383 384 385 386 387 388 389 390 391
    'lib/libcurl.a',
    [
        '--disable-shared', '--enable-static',
        '--disable-debug',
        '--enable-http',
        '--enable-ipv6',
        '--disable-ftp', '--disable-file',
        '--disable-ldap', '--disable-ldaps',
        '--disable-rtsp', '--disable-proxy', '--disable-dict', '--disable-telnet',
        '--disable-tftp', '--disable-pop3', '--disable-imap', '--disable-smtp',
392
        '--disable-smb',
393 394 395 396
        '--disable-gopher',
        '--disable-manual',
        '--disable-threaded-resolver', '--disable-verbose', '--disable-sspi',
        '--disable-crypto-auth', '--disable-ntlm-wb', '--disable-tls-srp', '--disable-cookies',
397 398 399 400 401
        '--disable-doh',
        '--disable-mime',
        '--disable-netrc',
        '--disable-progress-meter',
        '--disable-alt-svc',
402 403
        '--without-ssl', '--without-gnutls', '--without-nss', '--without-libssh2',
    ],
404

405
    patches='src/lib/curl/patches',
406 407
)

408
libexpat = AutotoolsProject(
409 410
    'https://github.com/libexpat/libexpat/releases/download/R_2_2_9/expat-2.2.9.tar.bz2',
    'f1063084dc4302a427dabcca499c8312b3a32a29b7d2506653ecc8f950a9a237',
411 412 413
    'lib/libexpat.a',
    [
        '--disable-shared', '--enable-static',
414
        '--without-docbook',
415 416 417
    ],
)

418
libnfs = AutotoolsProject(
419 420
    'https://github.com/sahlberg/libnfs/archive/libnfs-4.0.0.tar.gz',
    '6ee77e9fe220e2d3e3b1f53cfea04fb319828cc7dbb97dd9df09e46e901d797d',
421 422 423 424 425 426 427
    'lib/libnfs.a',
    [
        '--disable-shared', '--enable-static',
        '--disable-debug',

        # work around -Wtautological-compare
        '--disable-werror',
428 429

        '--disable-utils', '--disable-examples',
430
    ],
431
    base='libnfs-libnfs-4.0.0',
432 433 434
    autoreconf=True,
)

435
boost = BoostProject(
436 437
    'https://dl.bintray.com/boostorg/release/1.73.0/source/boost_1_73_0.tar.bz2',
    '4eb3b8d442b426dc35346235c8733b5ae35ba431690e38c6a8263dce9fcbb402',
438 439
    'include/boost/version.hpp',
)