blob: 87e46f99d44224361a8be979295e34a67b559752 [file] [log] [blame]
James Zern184a8862023-02-11 03:04:411v1.13.0 Ugly Duckling
John Koleszar0ea50ce2010-05-18 15:58:332
Paweł Hajdan9ab47772013-08-02 03:08:423Welcome to the WebM VP8/VP9 Codec SDK!
John Koleszar0ea50ce2010-05-18 15:58:334
5COMPILING 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
John Koleszar94c52e42010-06-18 16:39:2111
Johann7a9a46f2018-03-19 23:46:0612 * All x86 targets require the Yasm[1] assembler be installed[2].
Jerome Jiang24b43c42021-03-09 00:07:0213 * All Windows builds require that Cygwin[3] or MSYS2[4] be installed.
14 * Building the documentation requires Doxygen[5]. If you do not
James Zernf8630c72014-05-10 18:15:1115 have this package, the install-docs option will be disabled.
Jerome Jiang24b43c42021-03-09 00:07:0216 * Downloading the data for the unit tests requires curl[6] and sha1sum.
John Koleszar00748632012-06-20 21:45:2217 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
Jerome Jiang24b43c42021-03-09 00:07:0220 source[7]. These requirements are optional if not running the unit
John Koleszar00748632012-06-20 21:45:2221 tests.
John Koleszar94c52e42010-06-18 16:39:2122
John Koleszar0ea50ce2010-05-18 15:58:3323 [1]: http://www.tortall.net/projects/yasm
Johann7a9a46f2018-03-19 23:46:0624 [2]: For Visual Studio the base yasm binary (not vsyasm) should be in the
25 PATH for Visual Studio. For VS2017 it is sufficient to rename
26 yasm-<version>-<arch>.exe to yasm.exe and place it in:
27 Program Files (x86)/Microsoft Visual Studio/2017/<level>/Common7/Tools/
28 [3]: http://www.cygwin.com
Jerome Jiang24b43c42021-03-09 00:07:0229 [4]: http://www.msys2.org/
30 [5]: http://www.doxygen.org
31 [6]: http://curl.haxx.se
32 [7]: http://www.microbrew.org/tools/md5sha1sum/
John Koleszar94c52e42010-06-18 16:39:2133
John Koleszar0ea50ce2010-05-18 15:58:3334 2. Out-of-tree builds
35 Out of tree builds are a supported method of building the application. For
36 an out of tree build, the source tree is kept separate from the object
37 files produced during compilation. For instance:
38
39 $ mkdir build
40 $ cd build
41 $ ../libvpx/configure <options>
42 $ make
43
44 3. Configuration options
45 The 'configure' script supports a number of options. The --help option can be
46 used to get a list of supported options:
47 $ ../libvpx/configure --help
48
Johann20521c32018-03-27 19:59:1549 4. Compiler analyzers
50 Compilers have added sanitizers which instrument binaries with information
51 about address calculation, memory usage, threading, undefined behavior, and
52 other common errors. To simplify building libvpx with some of these features
53 use tools/set_analyzer_env.sh before running configure. It will set the
54 compiler and necessary flags for building as well as environment variables
55 read by the analyzer when testing the binaries.
56 $ source ../libvpx/tools/set_analyzer_env.sh address
57
58 5. Cross development
John Koleszar0ea50ce2010-05-18 15:58:3359 For cross development, the most notable option is the --target option. The
60 most up-to-date list of supported targets can be found at the bottom of the
61 --help output of the configure script. As of this writing, the list of
62 available targets is:
63
Johann0c0a0502016-12-30 00:31:2264 arm64-android-gcc
James Zern77f5c3d2016-07-28 05:10:0965 arm64-darwin-gcc
James Zern979e27c2020-09-25 20:21:1166 arm64-darwin20-gcc
James Zern3d57fb62023-05-06 01:56:5967 arm64-darwin21-gcc
68 arm64-darwin22-gcc
James Zern77f5c3d2016-07-28 05:10:0969 arm64-linux-gcc
Johannb85ac112019-02-01 21:49:0070 arm64-win64-gcc
Jon Kunkeee6f889c2018-11-12 21:40:5671 arm64-win64-vs15
Fritz Koenigd8305732012-01-06 19:50:0572 armv7-android-gcc
Paweł Hajdan9ab47772013-08-02 03:08:4273 armv7-darwin-gcc
John Koleszar0ea50ce2010-05-18 15:58:3374 armv7-linux-rvct
75 armv7-linux-gcc
Paweł Hajdan9ab47772013-08-02 03:08:4276 armv7-none-rvct
Johannb85ac112019-02-01 21:49:0077 armv7-win32-gcc
Ghislain MARY3067c342015-07-28 14:37:0978 armv7-win32-vs14
Gregor Jasnybcfd9c92017-05-23 07:30:4479 armv7-win32-vs15
Tom Finegancd2088b2014-06-11 01:52:5880 armv7s-darwin-gcc
James Zern77f5c3d2016-07-28 05:10:0981 armv8-linux-gcc
James Zern3d57fb62023-05-06 01:56:5982 loongarch32-linux-gcc
83 loongarch64-linux-gcc
John Koleszar0ea50ce2010-05-18 15:58:3384 mips32-linux-gcc
Gordana Cmiljanovic1c31e3e2014-08-07 17:09:4785 mips64-linux-gcc
Johannf80be222018-01-04 18:54:2886 ppc64le-linux-gcc
Paweł Hajdan9ab47772013-08-02 03:08:4287 sparc-solaris-gcc
88 x86-android-gcc
John Koleszar0ea50ce2010-05-18 15:58:3389 x86-darwin8-gcc
90 x86-darwin8-icc
91 x86-darwin9-gcc
92 x86-darwin9-icc
Paweł Hajdan9ab47772013-08-02 03:08:4293 x86-darwin10-gcc
94 x86-darwin11-gcc
95 x86-darwin12-gcc
96 x86-darwin13-gcc
Johannbb5a39c2015-03-23 22:33:1797 x86-darwin14-gcc
James Zern77f5c3d2016-07-28 05:10:0998 x86-darwin15-gcc
Jerome Jiang6d38ad42017-01-27 01:53:0099 x86-darwin16-gcc
Johannb85ac112019-02-01 21:49:00100 x86-darwin17-gcc
Tom Finegancd2088b2014-06-11 01:52:58101 x86-iphonesimulator-gcc
John Koleszar0ea50ce2010-05-18 15:58:33102 x86-linux-gcc
103 x86-linux-icc
Paweł Hajdan9ab47772013-08-02 03:08:42104 x86-os2-gcc
John Koleszar0ea50ce2010-05-18 15:58:33105 x86-solaris-gcc
Paweł Hajdan9ab47772013-08-02 03:08:42106 x86-win32-gcc
Ghislain MARY3067c342015-07-28 14:37:09107 x86-win32-vs14
Gregor Jasnybcfd9c92017-05-23 07:30:44108 x86-win32-vs15
Johanndaefbf22019-10-29 17:19:43109 x86-win32-vs16
Gregor Jasnycafe7cc2022-02-10 08:01:49110 x86-win32-vs17
James Zern5da87e82015-07-24 21:24:20111 x86_64-android-gcc
John Koleszar0ea50ce2010-05-18 15:58:33112 x86_64-darwin9-gcc
Paweł Hajdan9ab47772013-08-02 03:08:42113 x86_64-darwin10-gcc
114 x86_64-darwin11-gcc
115 x86_64-darwin12-gcc
116 x86_64-darwin13-gcc
Johannbb5a39c2015-03-23 22:33:17117 x86_64-darwin14-gcc
James Zern77f5c3d2016-07-28 05:10:09118 x86_64-darwin15-gcc
Jerome Jiang6d38ad42017-01-27 01:53:00119 x86_64-darwin16-gcc
Johannb85ac112019-02-01 21:49:00120 x86_64-darwin17-gcc
Johann5ed18012019-10-23 17:50:31121 x86_64-darwin18-gcc
Johann3ef630a2020-03-31 06:52:30122 x86_64-darwin19-gcc
James Zern979e27c2020-09-25 20:21:11123 x86_64-darwin20-gcc
James Zern3d57fb62023-05-06 01:56:59124 x86_64-darwin21-gcc
125 x86_64-darwin22-gcc
Tom Finegancd2088b2014-06-11 01:52:58126 x86_64-iphonesimulator-gcc
John Koleszar0ea50ce2010-05-18 15:58:33127 x86_64-linux-gcc
Paweł Hajdan9ab47772013-08-02 03:08:42128 x86_64-linux-icc
John Koleszar0ea50ce2010-05-18 15:58:33129 x86_64-solaris-gcc
Paweł Hajdan9ab47772013-08-02 03:08:42130 x86_64-win64-gcc
Ghislain MARY3067c342015-07-28 14:37:09131 x86_64-win64-vs14
Gregor Jasnybcfd9c92017-05-23 07:30:44132 x86_64-win64-vs15
Johanndaefbf22019-10-29 17:19:43133 x86_64-win64-vs16
Gregor Jasnycafe7cc2022-02-10 08:01:49134 x86_64-win64-vs17
John Koleszar0ea50ce2010-05-18 15:58:33135 generic-gnu
136
137 The generic-gnu target, in conjunction with the CROSS environment variable,
138 can be used to cross compile architectures that aren't explicitly listed, if
139 the toolchain is a cross GNU (gcc/binutils) toolchain. Other POSIX toolchains
140 will likely work as well. For instance, to build using the mipsel-linux-uclibc
141 toolchain, the following command could be used (note, POSIX SH syntax, adapt
142 to your shell as necessary):
143
Johanna31a58d2010-10-07 18:13:36144 $ CROSS=mipsel-linux-uclibc- ../libvpx/configure
John Koleszar0ea50ce2010-05-18 15:58:33145
146 In addition, the executables to be invoked can be overridden by specifying the
147 environment variables: CC, AR, LD, AS, STRIP, NM. Additional flags can be
148 passed to these executables with CFLAGS, LDFLAGS, and ASFLAGS.
149
Johann20521c32018-03-27 19:59:15150 6. Configuration errors
John Koleszar0ea50ce2010-05-18 15:58:33151 If the configuration step fails, the first step is to look in the error log.
James Zerne636af12013-07-18 21:17:00152 This defaults to config.log. This should give a good indication of what went
John Koleszar0ea50ce2010-05-18 15:58:33153 wrong. If not, contact us for support.
154
James Zern4bbca2e2014-05-30 23:37:39155VP8/VP9 TEST VECTORS:
156 The test vectors can be downloaded and verified using the build system after
157 running configure. To specify an alternate directory the
158 LIBVPX_TEST_DATA_PATH environment variable can be used.
159
160 $ ./configure --enable-unit-tests
161 $ LIBVPX_TEST_DATA_PATH=../libvpx-test-data make testdata
162
James Zern15f29ef2016-07-28 05:16:51163CODE STYLE:
164 The coding style used by this project is enforced with clang-format using the
165 configuration contained in the .clang-format file in the root of the
166 repository.
167
168 Before pushing changes for review you can format your code with:
169 # Apply clang-format to modified .c, .h and .cc files
170 $ clang-format -i --style=file \
171 $(git diff --name-only --diff-filter=ACMR '*.[hc]' '*.cc')
172
173 Check the .clang-format file for the version used to generate it if there is
174 any difference between your local formatting and the review system.
175
176 See also: http://clang.llvm.org/docs/ClangFormat.html
177
John Koleszar0ea50ce2010-05-18 15:58:33178SUPPORT
179 This library is an open source project supported by its community. Please
James Zern5ea87122016-07-28 05:10:02180 email [email protected] for help.
John Koleszar0ea50ce2010-05-18 15:58:33181