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 in developing those assembler
    files.

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

GEN
    Set to ‘1’ to generate the missing or mismatched references.

Makefile targets:

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

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

fate-list
    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 an example).

config
    Reconfigure the project with the current configuration.


Useful standard make commands:
make -t <target>
    Touch all files that otherwise would be built, this is useful to reduce
    unneeded rebuilding when changing headers, but note that 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 that it will still not run all reg tests.

