arm-linux-androideabi-g++ 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #!/usr/bin/python
  2. from __future__ import print_function
  3. import os
  4. import sys
  5. class CompilerWrapper():
  6. def __init__(self, argv):
  7. self.args = argv
  8. self.execargs = []
  9. self.real_compiler = None
  10. self.argv0 = None
  11. self.append_flags = []
  12. self.prepend_flags = []
  13. self.custom_flags = {
  14. '--gomacc-path': None
  15. }
  16. def set_real_compiler(self):
  17. """Find the real compiler with the absolute path."""
  18. compiler_path = os.path.dirname(os.path.abspath(__file__))
  19. if os.path.islink(__file__):
  20. compiler = os.path.basename(os.readlink(__file__))
  21. else:
  22. compiler = os.path.basename(os.path.abspath(__file__))
  23. self.real_compiler = os.path.join(
  24. compiler_path,
  25. "8345f5e4-2588-11e9-ba23-c7b0d410816e")
  26. self.argv0 = self.real_compiler
  27. def process_gomacc_command(self):
  28. """Return the gomacc command if '--gomacc-path' is set."""
  29. gomacc = self.custom_flags['--gomacc-path']
  30. if gomacc and os.path.isfile(gomacc):
  31. self.argv0 = gomacc
  32. self.execargs += [gomacc]
  33. def parse_custom_flags(self):
  34. i = 0
  35. args = []
  36. while i < len(self.args):
  37. if self.args[i] in self.custom_flags:
  38. self.custom_flags[self.args[i]] = self.args[i + 1]
  39. i = i + 2
  40. else:
  41. args.append(self.args[i])
  42. i = i + 1
  43. self.args = args
  44. def add_flags(self):
  45. self.args = self.prepend_flags + self.args + self.append_flags
  46. def print_deprecation_warning(self):
  47. print("Android GCC has been deprecated in favor of Clang, and will be removed from\n"
  48. "Android in 2020-01 as per the deprecation plan in:\n"
  49. "https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/+/master/GCC_4_9_DEPRECATION.md\n\n",
  50. file=sys.stderr)
  51. def invoke_compiler(self):
  52. self.print_deprecation_warning()
  53. self.set_real_compiler()
  54. self.parse_custom_flags()
  55. self.process_gomacc_command()
  56. self.add_flags()
  57. self.execargs += [self.real_compiler] + self.args
  58. os.execv(self.argv0, self.execargs)
  59. def main(argv):
  60. cw = CompilerWrapper(argv[1:])
  61. cw.invoke_compiler()
  62. if __name__ == "__main__":
  63. main(sys.argv)