LLVM build 2021 - shijunjing/edk2 GitHub Wiki

Set default compiler as gcc-10

jshi19@ub2-uefi-b01:~/llvm/llvm-project/_build_minsizerel$ sudo update-alternatives --config gcc
There are 5 choices for the alternative gcc (providing /usr/bin/gcc).

  Selection    Path             Priority   Status
------------------------------------------------------------
  0            /usr/bin/gcc-5    200       auto mode
* 1            /usr/bin/gcc-10   100       manual mode
  2            /usr/bin/gcc-5    200       manual mode
  3            /usr/bin/gcc-7    100       manual mode
  4            /usr/bin/gcc-8    100       manual mode
  5            /usr/bin/gcc-9    100       manual mode
jshi19@ub2-uefi-b01:~/llvm/llvm-project$ sudo update-alternatives --config g++
There are 4 choices for the alternative g++ (providing /usr/bin/g++).

  Selection    Path             Priority   Status
------------------------------------------------------------
  0            /usr/bin/g++-10   100       auto mode
* 1            /usr/bin/g++-10   100       manual mode
  2            /usr/bin/g++-5    100       manual mode
  3            /usr/bin/g++-7    100       manual mode
  4            /usr/bin/g++-9    100       manual mode

Switch to branch main from master:

jshi19@ub2-uefi-b01:~/llvm/llvm-project$ git checkout main
jshi19@ub2-uefi-b01:~/llvm/llvm-project$ git status
On branch main
Your branch is up to date with 'origin/main'.
jshi19@ub2-uefi-b01:~/llvm/llvm-project$ mkdir _build_minsizerel/
jshi19@ub2-uefi-b01:~/llvm/llvm-project$ mkdir _install_minsizerel/
jshi19@ub2-uefi-b01:~/llvm/llvm-project/_build_minsizerel$ cmake ../llvm -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="MinSizeRel" -DLLVM_TARGETS_TO_BUILD="X86" -DCMAKE_VERBOSE_MAKEFILE=ON  -DLLVM_ENABLE_PROJECTS="clang;lld" -DCMAKE_INSTALL_PREFIX=../_install_minsizerel
jshi19@ub2-uefi-b01:~/llvm/llvm-project/_build_minsizerel$ make -j $(getconf _NPROCESSORS_ONLN)
jshi19@ub2-uefi-b01:~/llvm/llvm-project/_build_minsizerel$ make install -j $(getconf _NPROCESSORS_ONLN)

How to fix 'Wine Mono not installed': https://www.youtube.com/watch?v=RSM4wygz39Q

jshi19@ub2-uefi-b01:~/wksp_efi/edkrepo/ServerGen2/Intel$ sudo apt-get install winetricks
jshi19@ub2-uefi-b01:~/wksp_efi/edkrepo$ wget https://dl.winehq.org/wine/wine-mono/6.1.0/wine-mono-6.1.0-x86.msi
jshi19@ub2-uefi-b01:~/wksp_efi/edkrepo/ServerGen2/Intel$ winetricks uninstaller

Install necessary python module to build ME

$ python3 -m pip install yapsy
$ python3 -m pip install crcmod

Build BaseTool with Clang:

jshi19@ub2-uefi-b01:~/wksp_efi/edk2-3$ make -C BaseTools/ CXX=llvm