path: root/wscript
Commit message (Collapse)AuthorAgeFilesLines
* build: bump libbluray minimum versionStefano Pigozzi2014-04-051-1/+1
| | | | | The code uses BD_OVERLAY_HIDE which seems to be available from 0.3.0. Update the pkg-config query.
* build: check if replaygain side data is availableAlessandro Ghedini2014-04-041-0/+6
| | | | | | Signed-off-by: wm4 <wm4@nowhere> old-configure change by wm4.
* build: only check for Linux fstatfs on LinuxJames Ross-Gowan2014-03-171-0/+1
| | | | | | This check incorrectly passed on Cygwin. While Cygwin has the statfs.f_type field, it contains the volume's FileSystemAttributes, which aren't useful for detecting network mounts.
* build: simplify libavfilter configure checkswm42014-03-161-14/+1
| | | | | This is all not needed anymore. In particular, remove all configure switches except --enable-libavfilter.
* af_lavrresample: remove avresample_set_channel_mapping() fallbackswm42014-03-161-7/+0
| | | | | | | This function is now always available. Also remove includes of reorder_ch.h from some AOs (these are just old relicts).
* vd_lavc: remove compatibility crapwm42014-03-161-22/+5
| | | | | | | All this code was needed for compatibility with very old libavcodec versions only (such as Libav 9). Includes some now-possible simplifications too.
* build: drop support for Libav 9wm42014-03-161-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | I have no tolerance for this garbage anymore. There are tons of issues with it (see e.g. previous commit), and there is no reason to use it either. Use Libav git, or Libav 10 when it's released. This also drops support for earlier FFmpeg release, which have exactly the same issues as Libav 9. FFmpeg 2.1.4 is still supported, because it's the latest release, and is reasonably recent. (Although this will probably also be dropped as soon as FFmpeg 2.2 is released.) Assumed version table (lots of nonsensical numbers): FFmpeg 2.1.4 FFmpeg (n2.2-rc2) Libav (v10_beta2) lavu 52.48.101 52.66.100 53.3.0 lavc 55.39.101 55.52.102 55.34.1 lavf 55.19.104 55.33.100 55.12.0 lsws 2.5.101 2.5.101 2.1.2 lavi 3.90.100 4.2.100 4.2.0 lswr 0.17.104 0.18.100 - lavr 1.1.0 1.2.0 1.1.0 libpostproc and libavdevice are not interesting. Following this commit, code needed just to support old Libav versions will start to be removed.
* af_lavfi: beat it into working with Libavwm42014-03-131-7/+1
| | | | | | | | | | | | | | | | | | | The main incompatibility was that Libav didn't have av_opt_set_int_list. But since that function is excessively ugly and idiotic (look how it handles types), I'm not missing it much. Use an aformat filter instead to handle the functionality that was indirectly provided by it. This is similar to how vf_lavfi works. The other incompatibility was channel handling. Libav consistently uses channel layouts only, why ffmpeg still requires messing with channel counts to some degree. Get rid of most channel count uses (and hope channel layouts are "exact" enough). Only in one case FFmpeg fails with a runtime check if we feed it AVFrames with channel count unset. Another issue were AVFrame accessor functions. FFmpeg introduced these for ABI compatibility with Libav. I refuse to use them, and it's not my problem if FFmpeg doesn't manage to provide a stable ABI for fields provided both by FFmpeg and Libav.
* build: make check for BSD fstatfs() a bit more strictwm42014-03-121-1/+1
| | | | | | | | | Linux also has fstatfs(), and the test relied on certain system include files being available on BSD, but not on Linux. It would break if Linux added the missing includes for some reason. Make it a bit stricter, and check for the struct statfs field the code needs.
* stream_file: network file system detection for LinuxPhilip Sequeira2014-03-121-0/+5
| | | | | | Addresses issue #558 on Linux systems. Signed-off-by: wm4 <wm4@nowhere>
* build: rename --enable-shared switchwm42014-03-111-2/+2
| | | | | | | Rename it to --enable-libmpv-shared. The option name didn't really tell much. When we add the possibility to create a static library, it would also be bad if that were named --enable-static (because it would sound like it does what --static-build does).
* build: fix compilation with MinGW-w64Hans-Kristian Arntzen2014-03-091-2/+14
| | | | | | References to WinMM/OLE/UUID were missing. Signed-off-by: wm4 <wm4@nowhere>
* configure: fix typoNyx0uf2014-02-241-1/+1
| | | | When using help, the output for --enable-shared was : `--enable-shared enable enable shared library [disable]`
* stream_file: activate cache with files on network file systemsStefano Pigozzi2014-02-171-0/+5
| | | | | | | | Detected 'protocols' are AFP, nfs, smb and webdav. This can be extended on request. This is currently only implemented for BSD systems (using fstatfs). This addresses issue #558 on the above platforms.
* build: bump libmpg123 versionwm42014-02-131-1/+1
| | | | | | | | | The minimum required version was bumped in the old configure script, but for the waf build system is was somehow forgotten or overlooked. Probably happened while the waf build system was developed in a separate branch. Closes #546.
* Add a client API examplewm42014-02-101-0/+5
* build: add option to build a librarywm42014-02-101-0/+7
| | | | | | | | | | | | | This library will export the client API functions. Note that this doesn't allow compiling the command line player to link against this library yet. The reason is that there's lots of weird stuff required to setup the execution environment (mostly Windows and OSX specifics), as well as things which are out of scope of the client API and every application has to do on its own. However, since the mpv command line player basically reuses functions from the mpv core to implement these things, it's not very easy to separate the command line player form the mpv core.
* demux_lavf: get updated metadata from a packet if availableBen Boeckel2014-02-061-0/+6
| | | | The side_data type is brand new in ffmpeg.
* wayland: change minimum versionAlexander Preisinger2014-02-021-2/+2
| | | | | Change minimum version to 1.3 and remove the version checking in the source code.
* waf: rename --enable-sdl to --enable-sdl1wm42014-01-251-1/+1
| | | | Grossly misleading.
* Detect Lua on FreeBSDGrzegorz Blach2014-01-151-1/+1
* Switch PDF manual generation to rst2pdfMartin Herkt2014-01-081-4/+2
| | | | | | | This finally gets rid of the LaTeX dependency. We should actually be using docultils directly here, but I didn't do this because of all the potential Python 2/3 breakage.
* build: don't depend on both libavresample and libswresamplewm42014-01-051-0/+1
| | | | | | When both libavresample and libswresample were detected, the script enabled both at the same time. This is not supported; although nothing bad happened apparently. Make the dependencies both mutually exclusive.
* build: fix cocoa configure check on OS X 10.7Stefano Pigozzi2014-01-021-5/+1
| | | | | It failed because the 10.7 SDK doesn't natively support array and dictionary subscripting.
* build: fix typoStefano Pigozzi2014-01-011-1/+1
* build: make configure fail if both __atomic and __sync are not availableStefano Pigozzi2014-01-011-2/+16
* build: check for libatomic and __atomic operationsAlessandro Ghedini2013-12-311-0/+7
| | | | | | Add check in old-configure as well. Reformat the check to use a maximum of 80 columns in the wscript. Signed-off-by: Stefano Pigozzi <>
* build: add flag for inline assemblyStefano Pigozzi2013-12-291-0/+5
| | | | | This is used to disable inline assembly (useful for old version of binutils like the one in OpenBSD).
* build: disable SDL by defaultStefano Pigozzi2013-12-291-2/+4
| | | | old-configure already behaves like this. Adapt wscript to the same default.
* build: fix shm detection on OpenBSDStefano Pigozzi2013-12-261-1/+1
| | | | Fixes #427
* input: remove LIRCCD supportwm42013-12-161-4/+0
| | | | | | | This removes support for the "LIRC Client Daemon", which is separate from LIRC, and hasn't been maintained for 10 years. See github issue #413.
* build: dvdnav needs dvdreadNikoli2013-12-131-0/+1
* Add prelimimary (basic, possibly broken) dvdnav supportwm42013-12-121-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | This readds a more or less completely new dvdnav implementation, though it's based on the code from before commit 41fbcee. Note that this is rather basic, and might be broken or not quite usable in many cases. Most importantly, navigation highlights are not correctly implemented. This would require changes in the FFmpeg dvdsub decoder (to apply a different internal CLUT), so supporting it is not really possible right now. And in fact, I don't think I ever want to support it, because it's a very small gain for a lot of work. Instead, mpv will display fake highlights, which are an approximate bounding box around the real highlights. Some things like mouse input or switching audio/subtitles stream using the dvdnav VM are not supported. Might be quite fragile on transitions: if dvdnav initiates a transition, and doesn't give us enough mpeg data to initialize video playback, the player will just quit. This is added only because some users seem to want it. I don't intend to make mpv a good DVD player, so the very basic minimum will have to do. How about you just convert your DVD to proper video files?
* build: prefer 4Front OSS to native implementationsbugmen0t2013-12-071-7/+7
| | | | | | | | | | | | | | | | If sys/soundcard.h is actually linux/soundcard.h then it supports only OSSv3 API. This may happen when OSSLIBDIR == /usr while forgetting to replace sys/soundcard.h from glibc. However, after fa620ff waf prefers native implementation which is inferior on Linux. To fix try making waf prefer oss-audio-4front. It's quite unusual to have 4Front OSS installed where native implementation is superior, anyway. Signed-off-by: bugmen0t <@> Make the false positives path also undef the 4Front define. Signed-off-by: Stefano Pigozzi <> Fixes #396
* build: fix linking to CoreFoundationagiz2013-12-061-1/+1
| | | | | | | | If only coreaudio was activativated and not cocoa, the build failed for missing CoreFoundation. Signed-off-by: Stefano Pigozzi <> Fixes #395
* build: link ARC to get subscripting implementationStefano Pigozzi2013-12-061-1/+2
| | | | | This is needed on OS X 10.7 to handle Objective-C subscripting correctly. It was present in the old configure, but I forgot it in the wscript.
* vo_opengl: support for vda hardware decodingStefano Pigozzi2013-12-021-0/+5
| | | | | | | | | | | The harder work was done in the previous commits. After that this feature comes out almost for free. The only problem is I can't get the textures created with CGLTexImageIOSurface2D to download properly, thus the code performs download using some CoreVideo APIs. If someone knows why download of textures created with CGLTexImageIOSurface2D doesn't work please contact me :)
* build: reject broken roaraudio sndio emulationwm42013-12-021-1/+1
| | | | | | | | roaraudio has some sort of sndio emulation, but apparently its header file is either blatantly broken, or an old version from the past. The sio_onvol() function has the wrong return type (void instead of int), and the SIO_DEVANY symbol is missing entirely. This broke the build, because the configure check was successful anyway.
* build: don't check libsmbclient version numberwm42013-11-301-1/+1
| | | | Rationale see github issues #385. Fixes #385.
* build: reimplement the OSS checks using a more declarative approachStefano Pigozzi2013-11-291-5/+35
| | | | | | | | | | | | | | | | | | The OSS checks were a big mess and quite buggy. This reimplementes them using a declarative approach and clearly distinguishing between the various OSS implementations. The code should now almost be auto-documenting. We currently support the following implementations of OSS: * platform-specific (with `sys/soundcard.h`) * SunAudio (default on NetBSD and useable on OpenBSD even if we have sndio support there). * 4Front (default on FreeBSD) Since now each OSS check also checks for the appropriate soundcard header, remove the old soundcard check. Many thanks to @bugmen0t for in depth info about all the BSDs. Check #380 and #359 for more info on this commit.
* build: add options for enabling and disabling any libquvi versionsNikoli2013-11-291-0/+7
| | | | Makes packaging a bit simpler.
* Take care of some libavutil deprecations, drop support for FFmpeg 1.0wm42013-11-291-1/+1
| | | | | | | | | | | | | | PIX_FMT_* -> AV_PIX_FMT_* (except some pixdesc constants) enum PixelFormat -> enum AVPixelFormat Losen some version checks in certain newer pixel formats. av_pix_fmt_descriptors -> av_pix_fmt_desc_get This removes support for FFmpeg 1.0.x, which is even older than Libav 9.x. Support for it probably was already broken, and its libswresample was rejected by our build system anyway because it's broken. Mostly untested; it does compile with Libav 9.9.
* build: make pthreads mandatorywm42013-11-281-6/+3
| | | | | | | | | | | pthreads should be available anywhere. Even if not, for environment without threads a pthread wrapper could be provided that can't actually start threads, thus disabling features that require threads. Make pthreads mandatory in order to simplify build dependencies and to reduce ifdeffery. (Admittedly, there wasn't much complexity, but maybe we will use pthreads more in the future, and then it'd become a real bother.)
* build: make --disable-gl disable all the gl backendsStefano Pigozzi2013-11-281-0/+4
| | | | Fixes #369
* build: add custom -I/-L flags for the BSDs [2]Stefano Pigozzi2013-11-281-4/+4
| | | | Fixup commit. .append() seems to to nothing.
* build: add custom -I/-L flags for the BSDsStefano Pigozzi2013-11-271-0/+8
| | | | Apparently this is needed for stuff like iconv.
* build: add a gdi check for windowsStefano Pigozzi2013-11-261-0/+6
| | | | | Incidentally this seems wrong in the configure as well because only gl-win32 depends on it instead of also making direct3d depend on this (as I did here).
* build: store dependencies as listsStefano Pigozzi2013-11-241-0/+3
| | | | | | | | | | | | | In Python sets are unordered, so iterating them after converting to a list always leads to different results. The code iterated on them to collect all the flags to pass to the compiler, and since the order of the flags changed, waf would rebuild all of the C files. Seems like in Python 2 this worked as expected by pure chance. This commit stores the sets as lists, and converts them to sets when the set operations are needed. Fixes #363
* build: make sure cwd is in Python's sys.pathStefano Pigozzi2013-11-231-0/+1
| | | | | | | | | Apparently some packaging systems (homebrew does this for example) change `sys.path` before they run any Python script to ensure that only the correct Python modules can be loadable. We need to make sure cwd is in `sys.path` since we need to load `` from there.
* build: remove abusive commentStefano Pigozzi2013-11-221-1/+0
| | | | | The check seems to be working anyway, even without sys/video.h. So ./configure was maybe wrong.
* build: unbreak PVR configure testwm42013-11-221-1/+1
* switch the build system to wafStefano Pigozzi2013-11-211-0/+759
This commit adds a new build system based on waf. configure and Makefile are deprecated effective immediately and someday in the future they will be removed (they are still available by running ./old-configure). You can find how the choice for waf came to be in `DOCS/waf-buildsystem.rst`. TL;DR: we couldn't get the same level of abstraction and customization with other build systems we tried (CMake and autotools). For guidance on how to build the software now, take a look at and the cross compilation guide. CREDITS: This is a squash of ~250 commits. Some of them are not by me, so here is the deserved attribution: - @wm4 contributed some Windows fixes, renamed configure to old-configure and contributed to the bootstrap script. Also, GNU/Linux testing. - @lachs0r contributed some Windows fixes and the bootstrap script. - @Nikoli contributed a lot of testing and discovered many bugs. - @CrimsonVoid contributed changes to the bootstrap script.