# Requirements # Requirements common for all platforms: * Python version 2.7 * Python Image Library * CMake version 2.8 or higher (tested with version 2.8) The GUI also dependends on: * Qt version 4.7 or higher (tested with version 4.8) * QJSON version 0.5 or higher (tested with version 0.7.1, which is bundled) Qt and QJSON will be required if `-DENABLE_GUI=TRUE` is passed to CMake, and never used if `-DENABLE_GUI=FALSE` is passed instead. The implicit default is `-DENABLE_GUI=AUTO`, which will build the GUI if Qt is available, using the bundled QJSON if it is not found on the system. The code also depends on zlib, libpng, and snappy libraries, but the bundled sources are always used regardless of system availability, to make the wrapper shared-objects/DLL self contained, and to prevent symbol collisions when tracing. # Linux / Mac OS X # Additional optional dependencies for Linux: * libprocps (procps development libraries) * libdwarf Build as: cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo make -C build Other possible values for `CMAKE_BUILD_TYPE` `Debug`, `Release`, `RelWithDebInfo`, and `MinSizeRel`. You can also build the 32-bits GL wrapper on a 64-bits distribution, provided you have a multilib gcc and 32-bits X11 libraries, by doing: cmake \ -DCMAKE_C_FLAGS=-m32 \ -DCMAKE_CXX_FLAGS=-m32 \ -DCMAKE_EXE_LINKER_FLAGS=-m32 \ -DCMAKE_SYSTEM_LIBRARY_PATH=/usr/lib32 \ -DENABLE_GUI=FALSE \ -H. -Bbuild32 make -C build32 glxtrace The `/usr/lib32` refers to the path where the 32-bits shared objects are may differ depending on the actual Linux distribution. # Android # Additional requirements: * [Android NDK](http://developer.android.com/sdk/ndk/index.html) Build as: export ANDROID_NDK=/path/to/your/ndk cmake -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain/android.toolchain.cmake -DANDROID_API_LEVEL=9 -H. -Bbuild make -C build You can also choose a particular ABI by passing `ANDROID_ABI` variable to cmake, e.g., `-DANDROID_ABI=x86`. # FirefoxOS # Put Apitrace source tree into `B2GROOT/external/apitrace/` and the `Android.mk` file (`B2GROOT/external/apitrace/Android.mk`) will do the needful to compile and install apitrace appropriately into the system image as part of FirefoxOS build process. It expects a linaro-type of Android NDK to be present in `../../prebuilt/ndk/android-ndk-r7` (ie `B2GROOT/prebuilt/ndk/android-ndk-r7`). # Windows # ## Microsoft Visual Studio ## Additional requirements: * Microsoft Visual Studio (tested with 2013 version) * [Windows 8.1 SDK](http://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx) for D3D11.2 headers. * Microsoft DirectX SDK is now part of Microsoft Visual Studio (from version 2012), but D3D8 headers are not included, so if you want D3D8 support you'll need to donwload and install the [August 2007 release of DirectX SDK](http://www.microsoft.com/downloads/details.aspx?familyid=529F03BE-1339-48C4-BD5A-8506E5ACF571) To build with Visual Studio first invoke CMake GUI as: cmake-gui -H. -Bbuild and press the _Configure_ button. It will try to detect most required/optional dependencies automatically. When not found automatically, you can manually specify the location of the dependencies from the CMake GUI. Qt on Windows doesn't ship with 64-bits binaries, you may want to add `-DENABLE_GUI=FALSE` to the above cmake command line for Windows 64-bits builds. After you've successfully configured, you can start the build by opening the generated `build\apitrace.sln` solution file, or invoking CMake as: cmake --build build --config MinSizeRel The steps to build 64-bits version are similar, but choosing _Visual Studio xx Win64_ instead of _Visual Studio xx_. By default, binaries generated by recent builds of Visual Studio will not work on Windows XP. If you want to obtain binaries that on Windows XP then pass the `-T v110_xp` or `-T v120_xp` options to cmake when building with Visual Studio 2012 or 2013 respectively. ## MinGW ## Additional requirements: * MinGW-w64 (tested with mingw-w64's gcc version 4.6.2) * [https://github.com/apitrace/dxsdk](DirectX headers) It's also possible to cross-compile Windows binaries on Linux with [MinGW cross compilers](http://www.cmake.org/Wiki/CmakeMingw).