FFmpeg currently uses a custom build system, this text attempts to document
some of its obscure features and options.

Makefile variables:

V
    Disable the default terse mode, the full command issued by make and its
    output will be shown on the screen.

DBG
    Preprocess x86 external assembler files to a .dbg.asm file in the object
    directory, which then gets compiled. Helps developping those assembler
    files.

DESTDIR
    Destination directory for the install targets, useful to prepare packages
    or install FFmpeg in cross-environments.

Makefile targets:

all
    Default target, builds all the libraries and the executables.

fate
    Run the fate test suite, note you must have installed it

fate-list
    Will list all fate/regression test targets

install
    Install headers, libraries and programs.

examples
    Build all examples located in doc/examples.

libavformat/output-example
    Build the libavformat basic example.

libavcodec/api-example
    Build the libavcodec basic example.

libswscale/swscale-test
    Build the swscale self-test (useful also as example).

config
    Reconfigure the project with current configuration.


Useful standard make commands:
make -t <target>
    Touch all files that otherwise would be build, this is useful to reduce
    unneeded rebuilding when changing headers, but note you must force rebuilds
    of files that actually need it by hand then.

make -j<num>
    rebuild with multiple jobs at the same time. Faster on multi processor systems

make -k
    continue build in case of errors, this is useful for the regression tests
    sometimes but note it will still not run all reg tests.

