teensy_cli_loader_builder.py 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #! /usr/bin/env python
  2. # -*- coding: UTF-8 -*-
  3. #——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*
  4. import os, urllib, subprocess, sys
  5. import archive_directory
  6. import dev_platform
  7. #——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*
  8. # Source file name *
  9. #——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*
  10. def fileBaseName () :
  11. return "teensy_loader_cli"
  12. #——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*
  13. # FOR PRINTING IN COLOR *
  14. #——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*
  15. class bcolors:
  16. HEADER = '\033[95m'
  17. BLUE = '\033[94m'
  18. GREEN = '\033[92m'
  19. WARNING = '\033[93m'
  20. FAIL = '\033[91m'
  21. ENDC = '\033[0m'
  22. BOLD = '\033[1m'
  23. UNDERLINE = '\033[4m'
  24. BOLD_BLUE = '\033[1m' + '\033[94m'
  25. BOLD_GREEN = '\033[1m' + '\033[92m'
  26. BOLD_RED = '\033[1m' + '\033[91m'
  27. #——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*
  28. # runCommand *
  29. #——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*
  30. def runCommand (cmd) :
  31. str = "+"
  32. for s in cmd:
  33. str += " " + s
  34. print (bcolors.BOLD_BLUE + str + bcolors.ENDC)
  35. returncode = subprocess.call (cmd)
  36. if returncode != 0 :
  37. sys.exit (returncode)
  38. #——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*
  39. # Install Teensy CLI Loader *
  40. #——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*
  41. def installTeensyCLILoader (INSTALL_PATH) :
  42. print (bcolors.BOLD_GREEN + "Install Teensy CLI Loader..." + bcolors.ENDC)
  43. CURRENT_DIR = os.path.abspath (os.path.dirname (__file__))
  44. PLATFORM = dev_platform.getPlatform ()
  45. #------------------------------------------------------------------ Compile command
  46. COMPILE_COMMAND = [
  47. "gcc",
  48. "-O2",
  49. "-fomit-frame-pointer",
  50. CURRENT_DIR + "/" + fileBaseName () + ".c",
  51. "-o", INSTALL_PATH
  52. ]
  53. if PLATFORM == "mac" :
  54. COMPILE_COMMAND += [
  55. "-DUSE_APPLE_IOKIT",
  56. "-framework", "Foundation",
  57. "-framework", "IOKit",
  58. ]
  59. elif PLATFORM == "linux" :
  60. COMPILE_COMMAND += ["-DUSE_LIBUSB", "-lusb"]
  61. elif PLATFORM == "linux32" :
  62. COMPILE_COMMAND += ["-DUSE_LIBUSB", "-lusb"]
  63. #------------------------------------------------------------------ Compile
  64. runCommand (COMPILE_COMMAND)
  65. #——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*
  66. # TOOL PATH *
  67. #——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*
  68. def buildAndGetPath (TOOL_DIR) :
  69. path = TOOL_DIR + "/" + fileBaseName ()
  70. #--- Install tool ?
  71. if not os.path.exists (path) :
  72. installTeensyCLILoader (path)
  73. #--- Return tool path
  74. return path
  75. #——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*