2018年9月20日木曜日

ARMクロスコンパイル用clang その4

久々に確認したらllvmがバージョン 7になっていた。
手持ちのARM clang クロスコンパイラはバージョン3.8ベース。
大分最新から古くなっているので再度作成することにする。

■作成対象
自作OSのビルドが目的なので
target-triple が arm-none-eabi のbaremetal ARMクロスコンパイラ

■インストール先
/opt/arm-none-eabi-clang

■ソースコード一式展開
Getting startedに従ってllvm本体とclang, lldそれぞれのソースコードを展開する。
libcxxはOSのライブラリ依存だが、独自OSにはそれがまだ無いのでこの時点では導入しない。
compiler-rtはLLVM/Clangのビルドとは別に独立して行うのでllvmソースツリー内に展開しない。

■ビルド
(clang+llvm)

cmake <llvm-7.0.0.src path> -DCMAKE_CROSSCOMPILING=True -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=ARM -DCMAKE_INSTALL_PREFIX=/opt/arm-none-eabi-clang -DLLVM_TARGET_ARCH=ARM -DLLVM_DEFAULT_TARGET_TRIPLE=arm-none-eabi -DCLANG_DEFAULT_LINKER=lld -DCLANG_DEFAULT_RTLIB=compiler-rt -DDEFAULT_SYSROOT=/opt/arm-none-eabi-clang