Imaginantia

思ったことを書きます

メモ LLVM(18.1.8)をインストールした

無限にやりなおしたので残すだけ残しておく。MSVC (2022, 17.9.5)、MinGWだと思います。

結論↓

$ cmake -S llvm -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="C:\\LLVM"
$ cmake --build build --target install --config Release
  • まず自前ビルドじゃないとllvm-configが無いとかで論外
  • Releaseにしないとシンボル名がinkwell側と一致しない (はい)
libinkwell-7ed57652215939ba.rlib(inkwell-7ed57652215939ba.inkwell.4aa329b0da52b41-cgu.06.rcgu.o) : error LNK2019: 未解決の外部シンボル LLVMDisposeTargetMachineOptions が関数 _ZN80_$LT$inkwell..targets..TargetMachineOptions$u20$as$u20$core..ops..drop..Drop$GT$4drop17hed26e3f5fd1d55ebE で参照されました
  • インストール先には空白を入れないほうが良い (いつもの)
warning: llvm-sys@180.0.0: cl : �R�}���h ���C�� warning D9024 : �\�[�X�t�@�C���̎�� 'Files' �͔F���ł��܂���ł����B�I�u�W�F�N�g �t�@�C���Ɖ��肵�܂��B
warning: llvm-sys@180.0.0: cl : �R�}���h ���C�� warning D9024 : �\�[�X�t�@�C���̎�� 'Files' �͔F���ł��܂���ł����B�I�u�W�F�N�g �t�@�C���Ɖ��肵�܂��B
warning: llvm-sys@180.0.0: cl : �R�}���h ���C�� warning D9027 : �\�[�X�t�@�C�� 'Files' �͖�������܂��B
warning: llvm-sys@180.0.0: cl : �R�}���h ���C�� warning D9024 : �\�[�X�t�@�C���̎�� '(x86)\LLVM\include' �͔F���ł��܂���ł����B�I�u�W�F�N�g �t�@�C���Ɖ��肵�܂��B
warning: llvm-sys@180.0.0: cl : �R�}���h ���C�� warning D9027 : �\�[�X�t�@�C�� '(x86)\LLVM\include' �͖�������܂��B
  • installは管理者権限で走らせる (それはそう)
  • llvm-sysに書いてあった注意 は結局よくわからなかった (inkwellのテストコードは通った)
  • PATHはよくわからなかったのでLLVM_SYS_180_PREFIXC:\LLVMで指定した
  • コンパイル中、文字コード関連の警告 (C4819) がめっちゃ出る (でもchcpを呼んだ結果は65001なんだよな)
  • installではなくcheck-llvmを走らせるとテストを走らせてくれるが落ちる (文字コード関連)
C:\Users\phi16\source\llvm-project\llvm\unittests\Support\JSONTest.cpp(249): error : Expected equality of these values: [C:\Users\phi16\source\llvm-project\build\test\check-llvm.vcxproj]
    fixUTF8(Invalid.first)
      Which is: "lone trailing \xEF\xBF\xBD\xEF\xBF\xBD bytes"
      As Text: "lone trailing ?? bytes"
    Invalid.second
      Which is: "lone trailing \x81" "E\xBD\x81" "E\xBD bytes"

↑ 落ちてるのは一箇所でそこはinvalidなUTF8を文字化けさせる処理だったのでまぁ別にええか…?という気持ちになってる