Qbject system
LLVM backend integration

Low-level backend

Todo:
  • AVR8
  • Cortex-M (STM32Fx/Lx)
  • embedded Linux (Buildroot/OpenWrt)
  • and other strange MCUs not supported by GCC

Installation

$ sudo apt install build-essentials cmake libboost-python-dev
$ mkdir ~/LLVM ; cd ~/LLVM
$ mkdir gz ; cd gz

sources

$ wget -c \

required

# core source tree
$ cd ~/LLVM
$ xzcat ~/LLVM/gz/llvm-6.0.0.src.tar.xz | tar x

optional

build

$ rm -rf ~/LLVM/build ; mkdir ~/LLVM/build ; cd ~/LLVM/build
$ cmake ~/LLVM/llvm-6.0.0.src \
-DCMAKE_BUILD_TYPE=Release -DLLVM_INCLUDE_TESTS=NO \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=AVR -DLLVM_TARGETS_TO_BUILD="X86;ARM"
$ make -j4 && sudo make install

faster build

-DLLVM_PARALLEL_COMPILE_JOBS=4 \
-DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-pipe -O0" -DCMAKE_CXX_FLAGS="-pipe -O0" \

extra options

-DLLVM_DEFAULT_TARGET_TRIPLE=arm-none-eabi \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DCMAKE_INSTALL_PREFIX=$(HOME)/LLVM
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/tmp/LLVM
-DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS="-O0 -g" -DCMAKE_CXX_FLAGS="-O0 -g"
-DCMAKE_INSTALL_PREFIX=$(HOME)/LLVM/AVR