87443a6b8f
Change-Id: I9101fd87d2eb5ef56c4441b4c46f35e85aff04d8
144 lines
4.8 KiB
Plaintext
144 lines
4.8 KiB
Plaintext
Building Libwebm
|
|
|
|
To build libwebm you must first create project files. To do this run cmake
|
|
and pass it the path to your libwebm repo.
|
|
|
|
Makefile.unix can be used as a fallback on systems that cmake does not
|
|
support.
|
|
|
|
|
|
CMake Basics
|
|
|
|
To generate project/make files for the default toolchain on your system simply
|
|
run cmake with the path to the libwebm repo:
|
|
|
|
$ cmake path/to/libwebm
|
|
|
|
On Windows the above command will produce Visual Studio project files for the
|
|
newest Visual Studio detected on the system. On Mac OS X and Linux systems, the
|
|
above command will produce a makefile.
|
|
|
|
To control what types of projects are generated the -G parameter is added to
|
|
the cmake command line. This argument must be followed by the name of a
|
|
generator. Running cmake with the --help argument will list the available
|
|
generators for your system.
|
|
|
|
On Mac OS X you would run the following command to generate Xcode projects:
|
|
|
|
$ cmake path/to/libwebm -G Xcode
|
|
|
|
On a Windows box you would run the following command to generate Visual Studio
|
|
2013 projects:
|
|
|
|
$ cmake path/to/libwebm -G "Visual Studio 12"
|
|
|
|
To generate 64-bit Windows Visual Studio 2013 projects:
|
|
|
|
$ cmake path/to/libwebm "Visual Studio 12 Win64"
|
|
|
|
|
|
CMake Makefiles: Debugging and Optimization
|
|
|
|
Unlike Visual Studio and Xcode projects, the build configuration for make builds
|
|
is controlled when you run cmake. The following examples demonstrate various
|
|
build configurations.
|
|
|
|
Omitting the build type produces makefiles that use build flags containing
|
|
neither optimization nor debug flags:
|
|
$ cmake path/to/libwebm
|
|
|
|
A makefile using release (optimized) flags is produced like this:
|
|
$ cmake path/to/libwebm -DCMAKE_BUILD_TYPE=release
|
|
|
|
A release build with debug info can be produced as well:
|
|
$ cmake path/to/libwebm -DCMAKE_BUILD_TYPE=relwithdebinfo
|
|
|
|
And your standard debug build will be produced using:
|
|
$ cmake path/to/libwebm -DCMAKE_BUILD_TYPE=debug
|
|
|
|
|
|
Tests
|
|
|
|
To enable libwebm tests add -DENABLE_TESTS=ON CMake generation command line. For
|
|
example:
|
|
|
|
$ cmake path/to/libwebm -G Xcode -DENABLE_TESTS=ON
|
|
|
|
Libwebm tests depend on googletest. By default googletest is expected to be a
|
|
sibling directory of the Libwebm repository. To change that, update your CMake
|
|
command to be similar to the following:
|
|
|
|
$ cmake path/to/libwebm -G Xcode -DENABLE_TESTS=ON \
|
|
-DGTEST_SRC_DIR=/path/to/googletest
|
|
|
|
The tests rely upon the LIBWEBM_TEST_DATA_PATH environment variable to locate
|
|
test input. The following example demonstrates running the muxer tests from the
|
|
build directory:
|
|
|
|
$ LIBWEBM_TEST_DATA_PATH=path/to/libwebm/testing/testdata ./muxer_tests
|
|
|
|
Note: Libwebm Googletest integration was built with googletest from
|
|
https://github.com/google/googletest.git at git revision
|
|
ddb8012eb48bc203aa93dcc2b22c1db516302b29.
|
|
|
|
|
|
CMake Include-what-you-use integration
|
|
|
|
Include-what-you-use is an analysis tool that helps ensure libwebm includes the
|
|
C/C++ header files actually in use. To enable the integration support
|
|
ENABLE_IWYU must be turned on at cmake run time:
|
|
|
|
$ cmake path/to/libwebm -G "Unix Makefiles" -DENABLE_IWYU=ON
|
|
|
|
This adds the iwyu target to the build. To run include-what-you-use:
|
|
|
|
$ make iwyu
|
|
|
|
The following requirements must be met for ENABLE_IWYU to enable the iwyu
|
|
target:
|
|
|
|
1. include-what-you-use and iwyu_tool.py must be in your PATH.
|
|
2. A python interpreter must be on the system and available to CMake.
|
|
|
|
The values of the following variables are used to determine if the requirements
|
|
have been met. Values to the right of the equals sign are what a successful run
|
|
might look like:
|
|
iwyu_path=/path/to/iwyu_tool.py
|
|
iwyu_tool_path=/path/to/include-what-you-use
|
|
PYTHONINTERP_FOUND=TRUE
|
|
|
|
An empty PYTHONINTERP_FOUND, or iwyu_path/iwyu_tool_path suffixed with NOTFOUND
|
|
are failures.
|
|
|
|
For Include-what-you-use setup instructions, see:
|
|
https://github.com/include-what-you-use/include-what-you-use/blob/master/docs/InstructionsForUsers.md
|
|
|
|
If, when building the iwyu target, compile errors reporting failures loading
|
|
standard include files occur, one solution can be found here:
|
|
https://github.com/include-what-you-use/include-what-you-use/issues/100
|
|
|
|
|
|
CMake cross compile
|
|
To cross compile libwebm for Windows using mingw-w64 run cmake with the
|
|
following arguments:
|
|
|
|
$ cmake -DCMAKE_TOOLCHAIN_FILE=path/to/libwebm/build/mingw-w64_toolchain.cmake \
|
|
path/to/libwebm
|
|
|
|
Note1: As of this writing googletest will not build via mingw-w64 without
|
|
disabling pthreads.
|
|
googletest hash: d225acc90bc3a8c420a9bcd1f033033c1ccd7fe0
|
|
|
|
To build with tests when using mingw-w64 use the following arguments when
|
|
running CMake:
|
|
|
|
$ cmake -DCMAKE_TOOLCHAIN_FILE=path/to/libwebm/build/mingw-w64_toolchain.cmake \
|
|
-DENABLE_TESTS=ON -Dgtest_disable_pthreads=ON path/to/libwebm
|
|
|
|
Note2: i686-w64-mingw32 is the default compiler. This can be controlled using
|
|
the MINGW_PREFIX variable:
|
|
|
|
$ cmake -DCMAKE_TOOLCHAIN_FILE=path/to/libwebm/build/mingw-w64_toolchain.cmake \
|
|
-DMINGW_PREFIX=x86_64-w64-mingw32 path/to/libwebm
|
|
|