# Building from source using Cerbero > ![Warning] This section is intended for advanced users. >
> ## Build requirements The GStreamer SDK build system provides bootstrapping facilities for all platforms, but it still needs a minimum base to bootstrap: - python >= 2.6 and python's `argparse` module, which is already included in python2.7. - git ### Windows users Cerbero can be used on Windows using the Msys/MinGW shell (a Unix-like shell for Windows). There is a bit of setup that you need to do before Cerbero can take control. You need to install the following programs: - [Python 2.7] - [Git] (Select the install option "Checkout as-is, Commit as-is" and install it in a path without spaces, eg: c:\Git) - [Msys/MinGW] (Install it with all the options enabled) - [CMake] (Select the option "Add CMake in system path for the current user") - [Yasm] (Download the win32 or win64 version for your platform, name it `yasm.exe`, and place it in your MinGW `bin` directory, typically, `C:\MinGW\bin`) - [WiX 3.5] - [Microsoft SDK 7.1] (Install the SDK samples and the Visual C++ Compilers, required to build the DirectShow base classes. Might need installing the .NET 4 Framework first if the SDK installer doesn't find it) - [Windows Driver Kit 7.1.0] Your user ID can't have spaces (eg: John Smith). Paths with spaces are not correctly handled in the build system and msys uses the user ID for the home folder. Cerbero must be run in the MinGW shell, which is accessible from the main menu once MinGW is installed. The last step is making `python` and `git` available from the shell, for which you will need to create a `.profile` file. Issue this command from within the MinGW shell: `echo "export PATH=\"\$PATH:/c/Python27:/c/Git/bin\"" >> ~/.profile` Using the appropriate paths to where you installed `python` and `git` (Note that inside the shell, / is mapped to c:\Mingw\msys\1.0 ) ### OS X users To use cerbero on OS X you need to install the "Command Line Tools" from XCode. They are available from the "Preferences" dialog under "Downloads". ### iOS developers If you want to build the GStreamer-SDK for iOS, you also need the iOS SDK. The minimum required iOS SDK version is 6.0 and is included in [XCode] since version 4. ## Download the sources To build the GStreamer SDK, you first need to download **Cerbero**. Cerbero is a multi-platform build system for Open Source projects that builds and creates native packages for different platforms, architectures and distributions. Get a copy of Cerbero by cloning the git repository: git clone git://anongit.freedesktop.org/gstreamer/cerbero Cerbero can be run uninstalled and for convenience you can create an alias in your `.bashrc` file*. *If you prefer to skip this step, remember that you need to replace the calls to `cerbero` with `./cerbero-uninstalled` in the next steps. echo "alias cerbero='~/git/cerbero/cerbero-uninstalled'" >> ~/.bashrc ## Setup environment After Cerbero and the base requirements are in place, you need to setup the build environment. Cerbero reads the configuration file `$HOME/.cerbero/cerbero.cbc` to determine the build options. This file is a python code which allows overriding/defining some options. If the file does not exist, Cerbero will try to determine the distro you are running and will use default build options such as the default build directory. The default options should work fine on the supported distributions. An example configuration file with detailed comments can be found [here] To fire up the bootstrapping process, go to the directory where you cloned/unpacked Cerbero and type: cerbero bootstrap Enter the superuser/root password when prompted. The bootstrap process will then install all packages required to build the GStreamer SDK. ## Build the SDK To generate the SDK, use the following command: cerbero package gstreamer-1.0 This should build all required SDK components and create packages for your distribution at the Cerbero source directory. A list of supported packages to build can be retrieved using: cerbero list-packages Packages are composed of 0 (in case of a meta package) or more components that can be built separately if desired. The components are defined as individual recipes and can be listed with: cerbero list To build an individual recipe and its dependencies, do the following: cerbero build