Bazaar
======

KiCad uses the Bazaar version control system to track source code changes,
and download the boost libraries needed by Kicad.
The easiest way to get a copy of the KiCad source is to use Bazaar.
Bazaar can be download from http://wiki.bazaar.canonical.com.
Your best bet is to use the stand alone version of Bazaar
(which includes bzrtools, needed by Kicad) rather than one of
the Python specific versions.
Be sure bzrtools is also installed.
boost libraries will be downloaded the first time you build Kicad.

CMake
=====

KiCad uses CMake (version 2.12 or later) to generate the build files specific for the target platform
specified by the developer.  This document attempts to define some of the more
common CMake and KiCad build configuration settings.  You can use CMake either
by the command CMake on or the graphical version ccmake.  This document only
documents a very small subset of the total CMake documentation  For all of the
gory details, please see the complete CMake documentation at:

http://www.cmake.org/cmake/help/documentation.html.


Useful CMake Build Settings.
============================

This section defines some of the more common CMake build configuration setting
used when configuring KiCad.  These settings are valid for all projects that
use CMake.

Changing the Build Generator.
-----------------------------
CMake attempts to create the project build system based on the platform.  On
Posix systems CMake will create Unix Makefiles to build KiCad.  On Windows
systems CMake will attempt to find the latest version of Visual C++ installed
on the system and create the appropriate project files.  This behavior can be
changed by specifying the project generator using the -G "Project Generator"
switch on the command line.  Please note, only a small subset of these project
generators are supported.  If you want to use Eclipse on Linux to build KiCad,
you may be in for a lot of work.


CMAKE_BUILD_TYPE (Release/Debug/RelWithDebInfo/MinSizeRel)
----------------------------------------------------------
Default: Release

When configuring the KiCad build for the command line you must specify build
type.  To create a debug build, set CMAKE_BUILD_TYPE to Debug.  To create a
release build, set CMAKE_BUILD_TYPE to Release.  See the CMake documentation
for other build types.  For IDE project files, the build type can be selected
by the IDE configuration manager.


CMAKE_INSTALL_PATH (InstallPath)
--------------------------------
By default CMake will select the correct install path for your platform.  If
you wish to install KiCad in a custom location, set CMAKE_INSTALL_PATH to the
path where you want to install KiCad.  Please note that the default install
path that CMake chooses will likely overwrite the current version of KiCad
installed on your system.


wxWidgets Library Configuration.
================================

KiCad is built using the wxWidgets library.  The following options allow you
to specifically tailor the wxWidgets library configuration.  For the complete
list of wxWidgets setting see CMakeModules/FindwxWidgets.cmake in the KiCad
source.

wxWidgets_ROOT_DIR (NonDefaultwxWidgetsPath)
--------------------------------------------
CMake looks in the standard platform locations to find the default version of
the wxWidgets library.  If you wish to use a custom built wxWidgets library,
set wxWidgets_ROOT_DIR to the correct path.


KiCad Specific Options
======================

All of the configuration settings below are specific to the KiCad project.
If for any reason you add or remove a build option to the KiCad CMake files,
please update the list below.

KICAD_SKIP_BOOST (ON/OFF)
--------------------------
Default: OFF

Use the version of the Boost library installed on the system rather than
building a local copy.

WARNING: The KiCad developers strongly advise you to build the bundled copy of
the Boost library, as it is known to work with KiCad. Other versions may
contain bugs that may result in KiCad errors.

USE_IMAGES_IN_MENUS (ON/OFF)
----------------------------
Default: OFF for OSX, ON for other platforms.

This option is used to enable or disable building KiCad with images (icons) in menu
items.  If this is not defined when CMake is used to create the build files,
images will be included in menu items on all platforms except OSX.
Note also, on Linux, some window managers do not show icons in menu, or
show them only if the current option is activated.
Therefore, even if you have icons in menus, they will be not always displayed


DOWNLOAD_DIR (PATH)
-------------------
Default: <source directory>/.downloads-by-cmake

Some external dependencies are automatically download and built when you
compile KiCad. This option specifies which directory they are stored in. If you
are building multiple copies of KiCad (e.g., to test different features or your
own modifications), it is recommended you set this option to a global directory
to avoid download and building the dependencies multiple times.


KICAD_USER_CONFIG_DIR (PATH)
----------------------------
Default: ~/.config (Unix-based systems), Application data directory (Windows)

This option specifies where to store user-specific configuration information.


USE_WX_OVERLAY (ON/OFF)
-----------------------
Default: ON for OSX, OFF for other platforms.

This option enables or disables the use of wxOverlay for drawing operations.
Warning, this is experimental!


KICAD_SCRIPTING (ON/OFF)
------------------------
Default: OFF

This option enables or disables building Python scripting support within KiCad.
Currently only Pcbnew is supported.  This option requires SWIG and Python to be
installed on the system.
It allows using footprint wizards in footprint editor to create new footprints


KICAD_SCRIPTING_MODULES (ON/OFF)
--------------------------------
Default: OFF

This option enables or disables building KiCad Python modules that can be used
externally by Python.  Currently only Pcbnew is supported.  This option
requires SWIG and Python to be installed on the system.
This python module is used to edit board files (.kicad_pcb files) from a
python script, outside kicad.


KICAD_SCRIPTING_WXPYTHON (ON/OFF)
---------------------------------
Default: OFF

This option enables or disables building wxPython support into the KiCad
scripting support.  Currently only Pcbnew has scripting support.  This option requires
SWIG, Python, and wxPython to be installed on the system.
It allows execution of python scripts insided Pcbnew, during a session.


PYTHON_SITE_PACKAGE_PATH (PATH)
-------------------------------
Default: System site library path

When building KiCad with Python scripting enable, the Python site library path
is used by default.  If you want to install the KiCad Python extension in a
different path, set this variable to the desired path.


BUILD_GITHUB_PLUGIN (ON/OFF)
----------------------------
Default: ON

This option enables or disables building KiCad with a pcbnew plugin for loading
footprints from a GitHub repository.

KICAD_USE_WEBKIT (ON/OFF)
----------------------------
Default: ON (and OFF when BUILD_GITHUB_PLUGIN is OFF)

This option enables or disables building a web viewer used if the
footprint library table wizard to easily add footprints library entries
to this tables when libraries are on a GitHub repository.
This option need the full support of wxWebview/WebKit in wxWidgets, which is not
always the case on Linux.


KICAD_REPO_NAME (STRING)
------------------------
Default: "product"

The name of the repository this copy of KiCad was compiled from. This is
reported in the "About" dialog and is useful for people who are working with
multiple copies of the code from different sources. The default value is
"product", the name of the main development branch on Launchpad.
