Low-Level Virtual Machine support for Eclipse C/C++ Development Tooling Petri Tuononen - 17/5/2011.

14
Low-Level Virtual Machine support for Eclipse C/C++ Development Tooling Petri Tuononen - 17/5/2011

Transcript of Low-Level Virtual Machine support for Eclipse C/C++ Development Tooling Petri Tuononen - 17/5/2011.

LLVM support for Eclipse CDT

Low-Level Virtual Machine support for Eclipse C/C++ Development Tooling

Petri Tuononen - 17/5/2011TopicsWhat is LLVM and Eclipse CDT?Why one should consider using LLVM toolchain?Why integrate LLVM to an IDE?Design and implementation of LLVM plug-in for Eclipse CDTMotivation for implementing the plug-inPetri Tuononen - 17/5/2011What is LLVM?Collection of advanced cross-platform compiler toolsBackend: libraries which are used to build compiler toolsBackend: tools: assembler, archiver, parser, linker, optimizer, code generator etc.Front-ends: Clang & LLVM-GCCPetri Tuononen - 17/5/2011What is CDT?C/C++ development environment for EclipseEclipse is a cross-platform IDE (Integrated Development Environment)Additional functionality to Eclipse platform is provided as plug-insPlug-ins extend Eclipse libraries via extension points The Plug-in Development Environment plug-in is used to develop Eclipse plug-insPetri Tuononen - 17/5/2011Benefits of LLVMLLVM with Clang compiles faster than Gnu Compiler CollectionExecutable code runs fasterExecutable code is smaller in sizeModularity of compiler toolsModularity allows compile-time and link-time optimizationLLVM code library is simpler and smaller than GCCs and therefore allows easier implementation of additional compiler toolsPetri Tuononen - 17/5/2011Why integrate LLVM to an IDE?First nonproprietary LLVM toolchain support for graphical IDE for Linux and WindowsSimple and fast build process via automationNo need to study man pages of dozen tools and understand all the command line optionsDeveloper gets benefits of LLVM without the need to know much about LLVMEasy to adopt LLVMPetri Tuononen - 17/5/2011Design & ImplementationExtensionsBuild definitions: Configuration of LLVM tools and their options

Petri Tuononen - 17/5/2011Design & ImplementationToolchain/tool configuration schema

Petri Tuononen - 17/5/2011Design & ImplementationExtensionsPreference page: provides user interface for workspace-wide preference settings Preference store: to store preference page valuesPreference initializer: to initialize preference page valuesTemplate associations: associates toolchains to project wizards

Petri Tuononen - 17/5/2011Design & ImplementationExtensionsScanner discovery profile: automatically find compiler specific include pathsEnvironment variable supplier: store/get/set LLVM specific system environment variables Project nature: tag LLVM specific projects

Petri Tuononen - 17/5/2011Contributing to Eclipse FoundationPlan to integrate as a part of CDT 9.0Will to help developing CDTRegular discussions with CDT developers to get ideas and cluesOther CDT developers may provide maintenance and patchesAll CDT users will have out-of-the-box LLVM capabilityPetri Tuononen - 17/5/2011Final wordsThe LLVM plug-in has had a very positive receptionReceived suggestion and testing help from end-users/developersLong waited featurePetri Tuononen - 17/5/2011Thanks!C/C++ developers might want to test if their project can benefit from LLVMAny suggestions, patches and testing help are more than welcome

Project websitehttp://code.google.com/p/llvm4eclipsecdt

Eclipse marketplacehttp://marketplace.eclipse.org/node/28778

Petri Tuononen - 17/5/2011This is the end