1 README - 24 January 2018 2 3 Welcome to the WebM VP8/VP9 Codec SDK! 4 5 COMPILING THE APPLICATIONS/LIBRARIES: 6 The build system used is similar to autotools. Building generally consists of 7 "configuring" with your desired build options, then using GNU make to build 8 the application. 9 10 1. Prerequisites 11 12 * All x86 targets require the Yasm[1] assembler be installed. 13 * All Windows builds require that Cygwin[2] be installed. 14 * Building the documentation requires Doxygen[3]. If you do not 15 have this package, the install-docs option will be disabled. 16 * Downloading the data for the unit tests requires curl[4] and sha1sum. 17 sha1sum is provided via the GNU coreutils, installed by default on 18 many *nix platforms, as well as MinGW and Cygwin. If coreutils is not 19 available, a compatible version of sha1sum can be built from 20 source[5]. These requirements are optional if not running the unit 21 tests. 22 23 [1]: http://www.tortall.net/projects/yasm 24 [2]: http://www.cygwin.com 25 [3]: http://www.doxygen.org 26 [4]: http://curl.haxx.se 27 [5]: http://www.microbrew.org/tools/md5sha1sum/ 28 29 2. Out-of-tree builds 30 Out of tree builds are a supported method of building the application. For 31 an out of tree build, the source tree is kept separate from the object 32 files produced during compilation. For instance: 33 34 $ mkdir build 35 $ cd build 36 $ ../libvpx/configure <options> 37 $ make 38 39 3. Configuration options 40 The 'configure' script supports a number of options. The --help option can be 41 used to get a list of supported options: 42 $ ../libvpx/configure --help 43 44 4. Cross development 45 For cross development, the most notable option is the --target option. The 46 most up-to-date list of supported targets can be found at the bottom of the 47 --help output of the configure script. As of this writing, the list of 48 available targets is: 49 50 arm64-android-gcc 51 arm64-darwin-gcc 52 arm64-linux-gcc 53 armv7-android-gcc 54 armv7-darwin-gcc 55 armv7-linux-rvct 56 armv7-linux-gcc 57 armv7-none-rvct 58 armv7-win32-vs11 59 armv7-win32-vs12 60 armv7-win32-vs14 61 armv7-win32-vs15 62 armv7s-darwin-gcc 63 armv8-linux-gcc 64 mips32-linux-gcc 65 mips64-linux-gcc 66 ppc64-linux-gcc 67 ppc64le-linux-gcc 68 sparc-solaris-gcc 69 x86-android-gcc 70 x86-darwin8-gcc 71 x86-darwin8-icc 72 x86-darwin9-gcc 73 x86-darwin9-icc 74 x86-darwin10-gcc 75 x86-darwin11-gcc 76 x86-darwin12-gcc 77 x86-darwin13-gcc 78 x86-darwin14-gcc 79 x86-darwin15-gcc 80 x86-darwin16-gcc 81 x86-iphonesimulator-gcc 82 x86-linux-gcc 83 x86-linux-icc 84 x86-os2-gcc 85 x86-solaris-gcc 86 x86-win32-gcc 87 x86-win32-vs10 88 x86-win32-vs11 89 x86-win32-vs12 90 x86-win32-vs14 91 x86-win32-vs15 92 x86_64-android-gcc 93 x86_64-darwin9-gcc 94 x86_64-darwin10-gcc 95 x86_64-darwin11-gcc 96 x86_64-darwin12-gcc 97 x86_64-darwin13-gcc 98 x86_64-darwin14-gcc 99 x86_64-darwin15-gcc 100 x86_64-darwin16-gcc 101 x86_64-iphonesimulator-gcc 102 x86_64-linux-gcc 103 x86_64-linux-icc 104 x86_64-solaris-gcc 105 x86_64-win64-gcc 106 x86_64-win64-vs10 107 x86_64-win64-vs11 108 x86_64-win64-vs12 109 x86_64-win64-vs14 110 x86_64-win64-vs15 111 generic-gnu 112 113 The generic-gnu target, in conjunction with the CROSS environment variable, 114 can be used to cross compile architectures that aren't explicitly listed, if 115 the toolchain is a cross GNU (gcc/binutils) toolchain. Other POSIX toolchains 116 will likely work as well. For instance, to build using the mipsel-linux-uclibc 117 toolchain, the following command could be used (note, POSIX SH syntax, adapt 118 to your shell as necessary): 119 120 $ CROSS=mipsel-linux-uclibc- ../libvpx/configure 121 122 In addition, the executables to be invoked can be overridden by specifying the 123 environment variables: CC, AR, LD, AS, STRIP, NM. Additional flags can be 124 passed to these executables with CFLAGS, LDFLAGS, and ASFLAGS. 125 126 5. Configuration errors 127 If the configuration step fails, the first step is to look in the error log. 128 This defaults to config.log. This should give a good indication of what went 129 wrong. If not, contact us for support. 130 131 VP8/VP9 TEST VECTORS: 132 The test vectors can be downloaded and verified using the build system after 133 running configure. To specify an alternate directory the 134 LIBVPX_TEST_DATA_PATH environment variable can be used. 135 136 $ ./configure --enable-unit-tests 137 $ LIBVPX_TEST_DATA_PATH=../libvpx-test-data make testdata 138 139 CODE STYLE: 140 The coding style used by this project is enforced with clang-format using the 141 configuration contained in the .clang-format file in the root of the 142 repository. 143 144 Before pushing changes for review you can format your code with: 145 # Apply clang-format to modified .c, .h and .cc files 146 $ clang-format -i --style=file \ 147 $(git diff --name-only --diff-filter=ACMR '*.[hc]' '*.cc') 148 149 Check the .clang-format file for the version used to generate it if there is 150 any difference between your local formatting and the review system. 151 152 See also: http://clang.llvm.org/docs/ClangFormat.html 153 154 SUPPORT 155 This library is an open source project supported by its community. Please 156 email webm-discuss (a] webmproject.org for help. 157 158