PKGBUILD 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. # Maintainer (Hyperbola): André Silva <emulatorman@hyperbola.info>
  2. # Maintainer: David P. <megver83@parabola.nu>
  3. # based in Hyperbola's edk2-uefi-shell, but without i686/IA32
  4. # support and with UEFI Shell v1 included
  5. pkgname=uefi-shell
  6. pkgver=201811
  7. pkgrel=1
  8. _srcname=edk2-stable$pkgver
  9. pkgdesc='Tianocore UEFI Shell v1 and v2'
  10. url='https://github.com/tianocore/edk2'
  11. arch=(x86_64)
  12. license=(BSD)
  13. makedepends=(python2 nasm gnu-efi-libs subversion)
  14. options=(!strip !makeflags)
  15. source=(https://github.com/tianocore/edk2/archive/$_srcname.tar.gz
  16. svn+https://svn.code.sf.net/p/efi-shell/code/trunk/Shell)
  17. sha512sums=('103cb503b73a57996b4ea7c941cb788ebf276e0f4b55480acf2080a632e956d27b0cf4b2a9cb41bac04e1c6aecf38d51c4b49432908e2fcbe6e10ced94d01573'
  18. 'SKIP')
  19. prepare() {
  20. cd $srcdir/edk2-$_srcname
  21. msg 'Cleanup UDK config files'
  22. rm -rf Build
  23. rm -rf Conf
  24. mkdir -p Conf
  25. mkdir -p Build
  26. msg 'Delete bogus dependency files'
  27. find . -name '*.d' -delete
  28. msg 'Disable build ID generation'
  29. sed -i 's|,--gc-sections|,--gc-sections,--build-id=none|g' BaseTools/Conf/tools_def.template
  30. msg 'Use python2 for UDK BaseTools'
  31. sed -i 's|python |python2 |g' BaseTools/BinWrappers/PosixLike/*
  32. sed -i 's|python |python2 |g' BaseTools/Tests/GNUmakefile
  33. msg 'Fix GCC Warning as error'
  34. sed -i 's|-Werror |-Wno-error -Wno-unused-but-set-variable |g' BaseTools/Source/C/Makefiles/header.makefile
  35. sed -i 's|-Werror |-Wno-error -Wno-unused-but-set-variable |g' BaseTools/Conf/tools_def.template
  36. msg 'Remove GCC -g debug option and add -O0 -mabi=ms -maccumulate-outgoing-args'
  37. sed -i 's|DEFINE GCC_ALL_CC_FLAGS = -g |DEFINE GCC_ALL_CC_FLAGS = -O0 -mabi=ms -maccumulate-outgoing-args |g' BaseTools/Conf/tools_def.template
  38. sed -i 's|DEFINE GCC44_ALL_CC_FLAGS = -g |DEFINE GCC44_ALL_CC_FLAGS = -O0 -mabi=ms -maccumulate-outgoing-args |g' BaseTools/Conf/tools_def.template
  39. msg 'Fix UDK Target Platform'
  40. sed -i 's|ACTIVE_PLATFORM = Nt32Pkg/Nt32Pkg.dsc|ACTIVE_PLATFORM = EdkShellPkg/EdkShellPkg.dsc|g' BaseTools/Conf/target.template
  41. sed -i 's|TARGET = DEBUG|TARGET = RELEASE|g' BaseTools/Conf/target.template
  42. sed -i 's|TOOL_CHAIN_TAG = MYTOOLS|TOOL_CHAIN_TAG = GCC5|g' BaseTools/Conf/target.template
  43. sed -i 's|IA32|X64|g' BaseTools/Conf/target.template
  44. chmod 0755 BaseTools/BuildEnv
  45. msg 'Move Shell directory to the main source'
  46. mv ../Shell .
  47. msg 'Apply EDK Shell patch to support GCC'
  48. cd Shell
  49. patch -p1 -i ../EdkShellPkg/ShellR64.patch
  50. msg 'Fix efilibplat.h path'
  51. sed -i 's|efilibplat.h|efi/x86_64/efilibplat.h|g' Library/EfiShellLib.h
  52. sed -i 's|#define RFC_3066_ENTRY_SIZE 12|#define RFC_3066_ENTRY_SIZE 12\n\n#define MIN_ALIGNMENT_SIZE 8|' Library/EfiShellLib.h
  53. }
  54. build() {
  55. cd $srcdir/edk2-$_srcname
  56. msg 'Unset all compiler FLAGS'
  57. unset CFLAGS
  58. unset CPPFLAGS
  59. unset CXXFLAGS
  60. unset LDFLAGS
  61. unset MAKEFLAGS
  62. msg 'Setup UDK Environment'
  63. source $srcdir/edk2-$_srcname/BaseTools/BuildEnv BaseTools
  64. echo
  65. msg 'Compile UDK BaseTools'
  66. make -C BaseTools
  67. echo
  68. msg 'Unset all compiler FLAGS'
  69. unset CFLAGS
  70. unset CPPFLAGS
  71. unset CXXFLAGS
  72. unset LDFLAGS
  73. unset MAKEFLAGS
  74. msg 'Compile UEFI Shell v1 X64 binary'
  75. BaseTools/BinWrappers/PosixLike/build -p EdkShellPkg/EdkShellPkg.dsc -a X64 -b RELEASE -t GCC5 -m Shell/Shell.inf
  76. echo
  77. msg 'Compile UEFI Shell v2 X64 binary'
  78. BaseTools/BinWrappers/PosixLike/build -p ShellPkg/ShellPkg.dsc -a X64 -b RELEASE -t GCC5
  79. echo
  80. }
  81. package() {
  82. msg 'Install the UEFI Shell v1 X64 binary'
  83. install -d $pkgdir/usr/share/uefi-shell
  84. install -D -m0644 $srcdir/edk2-$_srcname/Build/EdkShellPkg/RELEASE_GCC5/X64/Shell.efi $pkgdir/usr/share/uefi-shell/shellx64_v1.efi
  85. msg 'Install the UEFI Shell v2 X64 binary'
  86. install -d $pkgdir/usr/share/uefi-shell
  87. install -D -m0644 $srcdir/edk2-$_srcname/Build/Shell/RELEASE_GCC5/X64/Shell.efi $pkgdir/usr/share/uefi-shell/shellx64_v2.efi
  88. msg 'Install license'
  89. install -Dm644 $srcdir/edk2-$_srcname/License.txt $pkgdir/usr/share/licenses/$pkgname/License.txt
  90. }