From 9fc8b732737f139d3e466510d75668ab45578960 Mon Sep 17 00:00:00 2001 From: manuel Date: Tue, 8 Mar 2016 21:02:53 +0100 Subject: sync with upstream --- project/cmake/README.md | 166 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 project/cmake/README.md (limited to 'project/cmake/README.md') diff --git a/project/cmake/README.md b/project/cmake/README.md new file mode 100644 index 0000000..c0f94d8 --- /dev/null +++ b/project/cmake/README.md @@ -0,0 +1,166 @@ +# Kodi CMake based buildsystem + +This files describes Kodi's CMake based buildsystem. CMake is a cross-platform +tool for generating makefiles as well as project files used by IDEs. + +The current version of the buildsystem is capable of building the main Kodi +executable (but no packaging or dependency management yet) for the following +platforms: + +- Linux (GNU Makefiles) +- Windows (NMake Makefiles, Visual Studio 12 (2013)) +- OSX (GNU Makefiles, Xcode) +- Android (GNU Makefiles) + +Before building Kodi with CMake, please ensure that you have the platform +specific dependencies installed. + +While the legacy build systems typically used in-source builds it's recommended +to use out-of-source builds with CMake. The necessary runtime dependencies such +as dlls, skins and configuration files are copied over to the build directory +automatically. + +## Dependency installation + +### Linux + +The dependencies required to build on Linux can be found in +[docs/README.xxx](https://github.com/xbmc/xbmc/tree/master/docs). + +### Raspberry Pi + +The cross compilation environment for the Raspberry Pi as well as the +dependencies have to be installed as explained in +[docs/README.raspberrypi](https://github.com/xbmc/xbmc/tree/master/docs/README.raspberrypi). + +### Windows + +For Windows the dependencies can be found in the +[Wiki](http://kodi.wiki/view/HOW-TO:Compile_Kodi_for_Windows) (Step 1-4). If not already available on your pc, you should +install the [Windows Software Development Kit (SDK)](https://dev.windows.com/en-us/downloads/sdk-archive) for your Windows version. This is required for HLSL shader offline compiling with the [Effect-Compiler Tool](https://msdn.microsoft.com/de-de/library/windows/desktop/bb232919(v=vs.85).aspx) (fxc.exe). + +On Windows, the CMake based buildsystem requires that the binary dependencies +are downloaded using `DownloadBuildDeps.bat` and `DownloadMingwBuildEnv.bat` +and that the mingw libs (ffmpeg, libdvd and others) are built using +`make-mingwlibs.bat`. + +### OSX + +For OSX the required dependencies can be found in +[docs/README.osx](https://github.com/xbmc/xbmc/tree/master/docs/README.osx). + +On OSX it is necessary to build the dependencies in `tools/depends` using +`./bootstrap && ./configure --host= && make`. The other steps such +as `make -C tools/depends/target/xbmc` and `make xcode_depends` are not needed +as these steps are covered already by the CMake project. + +### Android + +The dependencies needed to compile for Android can be found in +[docs/README.osx](https://github.com/xbmc/xbmc/tree/master/docs/README.android) +. All described steps have to be executed (except 5.2 which is replaced by the +respective CMake command below). + +## Building Kodi + +This section lists the necessary commands for building Kodi with CMake. +CMake supports different generators that can be classified into two categories: +single- and multiconfiguration generators. + +A single configuration generator (GNU/NMake Makefiles) generates project files +for a single build type (e.g. Debug, Release) specified at configure time. +Multi configuration generators (Visual Studio, Xcode) allow to specify the +build type at compile time. + +All examples below are for out-of-source builds with Kodi checked out to +``: + +``` +mkdir kodi-build && cd kodi-build +``` + +### Linux with GNU Makefiles + +``` +cmake /project/cmake/ +cmake --build . -- VERBOSE=1 -j$(nproc) # or: make VERBOSE=1 -j$(nproc) +./kodi.bin +``` + +`CMAKE_BUILD_TYPE` defaults to `Release`. + +### Raspberry Pi with GNU Makefiles + +``` +cmake -DCMAKE_TOOLCHAIN_FILE=/tools/depends/target/Toolchain.cmake /project/cmake/ +cmake --build . -- VERBOSE=1 -j$(nproc) # or: make VERBOSE=1 -j$(nproc) +``` + +### Windows with NMake Makefiles + +``` +cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release /project/cmake/ +cmake --build . # or: nmake +kodi.exe +``` + +### Windows with Visual Studio project files + +``` +cmake -G "Visual Studio 12" /project/cmake/ +cmake --build . --config "Debug" # or: Build solution with Visual Studio +set KODI_HOME="%CD%" && Debug\kodi.exe +``` + +### OSX with GNU Makefiles + +``` +cmake -DCMAKE_TOOLCHAIN_FILE=/tools/depends/target/Toolchain.cmake /project/cmake/ +cmake --build . -- VERBOSE=1 -j$(sysctl -n hw.ncpu) # or: make VERBOSE=1 -j$(sysctl -n hw.ncpu) +./kodi.bin +``` + +### OSX with Xcode project files + +``` +cmake -DCMAKE_TOOLCHAIN_FILE=/tools/depends/target/Toolchain.cmake -G "Xcode" /project/cmake/ +cmake --build . --config "Release" -- -verbose -jobs $(sysctl -n hw.ncpu) # or: Build solution with Xcode +KODI_HOME=$(pwd) ./Release/kodi.bin +``` + +### Android with GNU Makefiles + +``` +cmake -DCMAKE_TOOLCHAIN_FILE=/tools/depends/target/Toolchain.cmake /project/cmake/ +cmake --build . -- VERBOSE=1 -j$(nproc) # or: make VERBOSE=1 -j$(nproc) +``` + +## Extra targets + +When using the makefile builds a few extra targets are defined: + +- `make check` builds and executes the test suite. + +## Debugging the build + +This section covers some tips that can be useful for debugging a CMake +based build. + +### Verbosity (show compiler and linker parameters) + +In order to see the exact compiler commands `make` and `nmake` can be +executed with a `VERBOSE=1` parameter. + +On Windows, this is unfortunately not enough because `nmake` uses +temporary files to workaround `nmake`'s command string length limitations. +In order to see verbose output the file +[Modules/Platform/Windows.cmake](https://github.com/Kitware/CMake/blob/master/Modules/Platform/Windows.cmake#L40) +in the local CMake installation has to be adapted by uncommenting these +lines: + +``` +# uncomment these out to debug nmake and borland makefiles +#set(CMAKE_START_TEMP_FILE "") +#set(CMAKE_END_TEMP_FILE "") +#set(CMAKE_VERBOSE_MAKEFILE 1) +``` -- cgit v1.2.3