140 likes | 267 Views
Low-Level Virtual Machine support for Eclipse C/C++ Development Tooling. Petri Tuononen - 17/5/2011. Topics. What is LLVM and Eclipse CDT? W hy one should consider using LLVM toolchain? Why integrate LLVM to an IDE? D esign and implementation of LLVM plug-in for Eclipse CDT
E N D
Low-Level Virtual Machine support for Eclipse C/C++ Development Tooling Petri Tuononen - 17/5/2011
Topics • What 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 CDT • Motivation for implementing the plug-in Petri Tuononen - 17/5/2011
What is LLVM? • Collection of advanced cross-platform compiler tools • Backend: libraries which are used to build compiler tools • Backend: tools: assembler, archiver, parser, linker, optimizer, code generator etc. • Front-ends: Clang & LLVM-GCC Petri Tuononen - 17/5/2011
What is CDT? • C/C++ development environment for Eclipse • Eclipse is a cross-platform IDE (Integrated Development Environment) • Additional functionality to Eclipse platform is provided as plug-ins • Plug-ins extend Eclipse libraries via extension points • The Plug-in Development Environment plug-in is used to develop Eclipse plug-ins Petri Tuononen - 17/5/2011
Benefits of LLVM • LLVM with Clang compiles faster than Gnu Compiler Collection • Executable code runs faster • Executable code is smaller in size • Modularity of compiler tools • Modularity allows compile-time and link-time optimization • LLVM code library is simpler and smaller than GCC’s and therefore allows easier implementation of additional compiler tools Petri Tuononen - 17/5/2011
Why integrate LLVM to an IDE? • First nonproprietary LLVM toolchain support for graphical IDE for Linux and Windows • Simple and fast build process via automation • No need to study man pages of dozen tools and understand all the command line options • Developer gets benefits of LLVM without the need to know much about LLVM • Easy to adopt LLVM Petri Tuononen - 17/5/2011
Design & Implementation • Extensions • Build definitions: Configuration of LLVM tools and their options Petri Tuononen - 17/5/2011
Design & Implementation • Toolchain/tool configuration schema Petri Tuononen - 17/5/2011
Design & Implementation • Extensions • Preference page: provides user interface for workspace-wide preference settings • Preference store: to store preference page values • Preference initializer: to initialize preference page values • Template associations: associates toolchains to project wizards Petri Tuononen - 17/5/2011
Design & Implementation • Extensions • Scanner discovery profile: automatically find compiler specific include paths • Environment variable supplier: store/get/set LLVM specific system environment variables • Project nature: tag LLVM specific projects Petri Tuononen - 17/5/2011
Contributing to Eclipse Foundation • Plan to integrate as a part of CDT 9.0 • Will to help developing CDT • Regular discussions with CDT developers to get ideas and clues • Other CDT developers may provide maintenance and patches • All CDT users will have out-of-the-box LLVM capability Petri Tuononen - 17/5/2011
Final words • The LLVM plug-in has had a very positive reception • Received suggestion and testing help from end-users/developers • Long waited feature Petri Tuononen - 17/5/2011
Thanks! • C/C++ developers might want to test if their project can benefit from LLVM • Any suggestions, patches and testing help are more than welcome Project website http://code.google.com/p/llvm4eclipsecdt Eclipse marketplace http://marketplace.eclipse.org/node/28778 Petri Tuononen - 17/5/2011