Building FreeBSD with clang/llvm に手順が載っている。
# cd /usr/ports/devel/llvm-devel/
# make install
# cd /usr/sys/{amd64,i386}/conf/
# config GENERIC
# cd ../compile/GENERIC/
# make depend
# env CC=ccc make
# make KERNEL=llvm install
が説明されている手順だ。試したところ、旧来のカーネルの作り方でしか出来ない。どうも、llvm では make depend
が処理が出来ないようだ。また、buildkernel では、無理なようだ。
buildkernel を試したところ、以下のように失敗した。
$ echo 'include GENERIC' > sys/amd64/conf/LLVM
$ make buildkernel KERNCONF=LLVM CC=ccc
cd /usr/obj/usr/src/head/sys/LLVM; MAKESRCPATH=/usr/src/head/sys/dev/aic7xxx/ai
casm make SSP_CFLAGS= -DNO_CPU_CFLAGS -DNO_CTF -f /usr/src/head/sys/dev/aic7xx
x/aicasm/Makefile
Warning: Object directory not changed from original /usr/obj/usr/src/head/sys/LL
VM
ccc -O2 -pipe -nostdinc -I/usr/include -I. -I/usr/src/head/sys/dev/aic7xxx/aicas
m -c /usr/src/head/sys/dev/aic7xxx/aicasm/aicasm.c
ccc: not found
*** Error code 127
1 error
*** Error code 2
1 error
*** Error code 2
1 error
そこで、記載されている手順道理に事を進める。
$ cd sys/amd64/conf
$ config LLVM
Kernel build directory is ../compile/LLVM
Don't forget to do ``make cleandepend && make depend''
$ cd ../compile/LLVM/
$ make depend
出力は取っていないのだが、実は make depend
に失敗した。buildkernel では問題なく、カーネルを作れているので無視して make
を続けた。初めての時や、make clean
を行うなどして、全てのオブジェクトを作るのなら make depend
が無くても支障は無い。
この後にコンパイルが続いたが、カーネルは作れなかった。まだ、いつでも llvm で作れるような状態では無いようだ。折角なので、折りをみて試したいと思う。
セコメントをする