|
|
- #!/usr/bin/env python
- from subprocess import call
- import os
- import time
-
- Import("env")
-
- # ------------------------------------------------------------------------------
- # Utils
- # ------------------------------------------------------------------------------
-
- class Color(object):
- BLACK = '\x1b[1;30m'
- RED = '\x1b[1;31m'
- GREEN = '\x1b[1;32m'
- YELLOW = '\x1b[1;33m'
- BLUE = '\x1b[1;34m'
- MAGENTA = '\x1b[1;35m'
- CYAN = '\x1b[1;36m'
- WHITE = '\x1b[1;37m'
- LIGHT_GREY = '\x1b[0;30m'
- LIGHT_RED = '\x1b[0;31m'
- LIGHT_GREEN = '\x1b[0;32m'
- LIGHT_YELLOW = '\x1b[0;33m'
- LIGHT_BLUE = '\x1b[0;34m'
- LIGHT_MAGENTA = '\x1b[0;35m'
- LIGHT_CYAN = '\x1b[0;36m'
- LIGHT_WHITE = '\x1b[0;37m'
-
- def clr(color, text):
- return color + str(text) + '\x1b[0m'
-
- # ------------------------------------------------------------------------------
- # Callbacks
- # ------------------------------------------------------------------------------
-
- def remove_float_support():
-
- flags = " ".join(env['LINKFLAGS'])
- print flags
- flags = flags.replace("-u _printf_float", "")
- flags = flags.replace("-u _scanf_float", "")
- newflags = flags.split()
-
- env.Replace(
- LINKFLAGS = newflags
- )
-
- def cpp_check(source, target, env):
- print("Started cppcheck...\n")
- call(["cppcheck", os.getcwd()+"/espurna", "--force", "--enable=all"])
- print("Finished cppcheck...\n")
-
- def check_size(source, target, env):
- time.sleep(2)
- size = target[0].get_size()
- print clr(Color.LIGHT_BLUE, "Binary size: %s bytes" % size)
- #if size > 512000:
- # print clr(Color.LIGHT_RED, "File too large for OTA!")
- # Exit(1)
-
- def add_build_flags(source, target, env):
- build_h = "espurna/config/build.h"
- build_flags = env['BUILD_FLAGS'][0]
- lines = open(build_h).readlines()
- with open(build_h, "w") as fh:
- for line in lines:
- if "APP_BUILD_FLAGS" in line:
- fh.write("#define APP_BUILD_FLAGS \"%s\"" % build_flags)
- else:
- fh.write(line)
-
-
- # ------------------------------------------------------------------------------
- # Hooks
- # ------------------------------------------------------------------------------
-
- remove_float_support()
-
- #env.AddPreAction("buildprog", cpp_check)
- env.AddPreAction("$BUILD_DIR/src/espurna.ino.o", add_build_flags)
- env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", check_size)
|