20from os.path
import join, basename
21from SCons.Script
import AlwaysBuild
25understand_the_build_system =
False
26if understand_the_build_system:
28 fh = open(join(
"/tmp/",
"dump.txt"),
"w")
32 fh = open(join(
"/tmp/",
"expanded.txt"),
"w")
33 for k,v
in env.Dictionary().items():
34 fh.write(
"%s = %s = %s\n" % (k, v, env.subst(
'$'+k)))
37me =
"controller/build_plugin_system.py"
43target_elf = join(
"$BUILD_DIR",
"${PROGNAME}.elf")
44target_elf_a = target_elf +
".a"
45base_target_elf_a = basename(env.subst(target_elf_a))
46if "BUILD_ELF_A" in os.environ:
55 "-Wl,--out-implib," + target_elf_a
58 print(me,
"will also build", base_target_elf_a)
60 print(me,
"skips building", base_target_elf_a)
81 global_env = DefaultEnvironment()
85 global_env.AddPostAction(
86 "$BUILD_DIR/${PROGNAME}.elf",
87 global_env.VerboseAction(
" ".join([
88 "$OBJCOPY",
"-O",
"binary",
"-I",
"ihex",
89 "$BUILD_DIR/${PROGNAME}.elf",
"$BUILD_DIR/${PROGNAME}.bin"
90 ]),
"Building $BUILD_DIR/${PROGNAME}.bin")
94 print(
"Program has been built, yeah")
95 program_path = target[0].get_abspath()
96 print(
"Program path ", target)
98 global_env.AddPostAction(
"$PROGPATH", post_program_action)
102 print(me,
"will also TRY to build",
"firmware.bin")
108if understand_the_build_system:
109 expand =
lambda var: env.subst(
'$'+var)
113 fh = open(join(
"/tmp/",
"Makefile.txt"),
"w")
114 for var
in "CCFLAGS CXXFLAGS CPPFLAGS _CPPDEFFLAGS _CPPINCFLAGS CC CXX OBJCOPY PROGPATH".split():
115 fh.write(
"%s = %s\n" % (var,
expand(var)))
118 path = env[
'ENV'][
'PATH']
119 fh.write(
"PATH = "+path)
post_program_action(source, target, env)
env expand
Job 3) Extract CFlags, etc for a custom Makefile.