llvm_build.sh 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/bin/bash
  2. set -e
  3. USE_NINJA=""
  4. if command -v ninja >/dev/null 2>&1 ; then
  5. USE_NINJA="-GNinja"
  6. fi
  7. FORCE_BUILD=0
  8. for i in "$@"
  9. do
  10. if [[ $i == "force" ]]; then
  11. FORCE_BUILD=1
  12. fi
  13. done
  14. if [ ! -d llvm-project_18_1_4 ]; then
  15. if [ -f llvm-18.1.4.src.tar.xz ]; then # if user downloaded llvm-18.1.4.src.tar.xz then use it instead
  16. tar -xf llvm-18.1.4.src.tar.xz
  17. mkdir llvm-project_18_1_4
  18. mv llvm-18.1.4.src llvm-project_18_1_4/llvm
  19. else # shallow git clone llvm repo if llvm-18.1.4.src.tar.xz does not exists
  20. git clone --depth 1 --branch llvmorg-18.1.4 https://github.com/llvm/llvm-project.git llvm-project_18_1_4
  21. fi
  22. fi #end if llvm-project_18_1_4 exists
  23. if [ ! -d llvm_linux_18_1_4 ]; then
  24. mkdir llvm_linux_18_1_4
  25. fi
  26. if [ ! -d llvm_linux_18_1_4/bin ] || [ $FORCE_BUILD == 1 ]; then
  27. cd llvm_linux_18_1_4
  28. cmake $USE_NINJA ../llvm-project_18_1_4/llvm -DLLVM_TARGETS_TO_BUILD="AArch64;ARM;X86;WebAssembly" -DCMAKE_BUILD_TYPE:String="Debug"
  29. cmake --build . -t $(cat ../llvm_targets.txt)
  30. cd ..
  31. fi
  32. if [ ! -d llvm_linux_rel_18_1_4 ]; then
  33. mkdir llvm_linux_rel_18_1_4
  34. fi
  35. if [ ! -d llvm_linux_rel_18_1_4/bin ] || [ $FORCE_BUILD == 1 ]; then
  36. cd llvm_linux_rel_18_1_4
  37. cmake $USE_NINJA ../llvm-project_18_1_4/llvm -DLLVM_TARGETS_TO_BUILD="AArch64;ARM;X86;WebAssembly" -DCMAKE_BUILD_TYPE:String="Release"
  38. cmake --build . -t $(cat ../llvm_targets.txt)
  39. cd ..
  40. fi
  41. if [ ! -d ../IDE/dist/llvm/bin ]; then
  42. mkdir ../IDE/dist/llvm
  43. mkdir ../IDE/dist/llvm/bin
  44. fi
  45. cp llvm_linux_rel_18_1_4/bin/llvm-ar ../IDE/dist/llvm/bin
  46. echo done > llvm_linux_18_1_4/_Done.txt