# Carbide.c++

Carbide.c++ is a software development tool for C++ development on Symbian OS. It is used to develop phones that use the OS, as well as applications that run on those phones. It is based on the Eclipse IDE platform enhanced with extra plug-ins to support Symbian OS development. The product is provided by the Symbian Foundation under an open source model. In April 2009, Nokia transferred Carbide.c++ and many other software developer tools to the Symbian Foundation. Members of the Symbian community now manage and contribute code to the Carbide.c++ product.

## Tool packages

Carbide.c++ is provided by the Symbian Foundation in two different tool packages.
* Application Development Toolkit (ADT) contains tools for application development, including the IDE, debugger, and analysis tools.
* Product Development Toolkit (PDT) contains tools for contribution and product creation.
Both the ADT and PDT are basic installers that include Carbide.c++, several Eclipse-based plug-ins and several stand-alone tools.
ADT/PDT v1 contains Carbide.c++ v2.0.4
ADT/PDT v2 (Q4 2009) is targeted to contain Carbide.c++ v2.2

## Technology

Carbide.c++ is based on the latest versions of Eclipse IDE and Eclipse CDT extended with Symbian OS -specific features. Currently it supports the WINSCW x86 C++ compiler found in CodeWarrior for production of emulator binaries. For target binaries it supports GCC, and ARM RVCT compilers (sold separately). The WINSCW and GCC compilers are actually provided in the SDK and not explicitly included in the Carbide IDE.
Carbide.c++ has branched very few parts of CDT – nearly all of it is contained within added plug-ins added on top of Eclipse. The few branches mostly relate to the different semantics of the CodeWarrior debugger engine, compared to GDB which is what Eclipse previously supported. Because Carbide.c++ is very similar to a standard Eclipse installation, it can still be used for other types of development such as Java or Perl (provided the correct plug-ins are installed using Eclipse's self-update mechanism). Similarly, it ought to be possible to produce a product with similar functionality to Carbide.c++ by moving the Carbide.c++ plug-ins into a standard Eclipse installation; this is not currently a facility offered by Nokia.
Carbide.c++ supports the Symbian Build System v1 and v2 (aka Raptor). The former is a perl-based build system and the latter is built using Python and supports the next generation Symbian OS operating systems. The main advantage of supporting SBSv1 and v2 in Carbide is users can create command-line builds in parallel with IDE builds and not have to manage two different workspaces. The disadvantage of SBSv1 is dependency checking is automatic on every build and re-building large projects to take a while. Carbide.c++ built in some short cuts (starting with v1.3) to speed up rebuilds.
Early versions of Carbide (v1.0, 1.1) supported a different build method which had many problems.

## History

Carbide.c++ development tools family was created to replace CodeWarrior for Symbian OS as the primary development environment for Symbian OS. Adoption of the tool has been slow but CodeWarrior usage is diminishing since the older tool no longer supports the latest changes to Symbian OS and S60 platforms.
Carbide was provided as three commercial products and one free product. Today the product is part of the Symbian Foundation offering and is completely free.
* Express – Basic tools for application development. Contains project management, code authoring, emulator and GCC-E builds, and emulator debugging. The Express edition was provided for free and did not support development directly on production phones.
* Developer Edition –Targeted at aftermarket software development. Contained Express features, a UI Designer (for rapid UI creation), and application-level on-device debugging for S60 and UIQ phones.
* Professional – Targeted at Symbian OS phone manufacturers, their partners, and application/middleware vendors working on demanding projects. Contained Developer features, system-level on-device debugging, and performance profiling tools.
* OEM – Targeted at early-access embedded development such as driver-development, base porting, and hardware-dependent application and middleware development. Contained Professional features, and stop-mode debugging using Lauterbach and Sophia in-circuit emulators.
The products ranged in price from 300 to 8000 Euros depending on features set and licensing model.
Carbide had a slow reception to the Symbian community. Developers are generally not fond of moving to new tools and early versions of Carbide had problems. There were several frequently cited complaints – for example, lack of Symbian-OS-style code indenting, lack of an easy "find in files" facility, speed of import of Symbian OS build files (MMPs), and difficulties using on-device debugging. In addition, the much-anticipated Managed Build System did not work properly – rather than offering a true incremental build, it frequently deleted everything and started again. Otherwise the reception was warm - the development environment is preferred to CodeWarrior, the IDE is based on Java so there are some speed and memory concerns, the IDE is often slow and has a pretty big memory foot print, all trademarks of the Java environment.
Carbide.c++ has made steady progress in addressing issues brought up by the developer community. CodeWarrior usage has dropped off significantly due to improvements in Carbide and CodeWarrior's lack of support for the newer versions of Symbian OS.