Skip to content

Commit 2df33de

Browse files
ivankravetsearlephilhower
authored andcommitted
Use custom "ElfToBin" builder for PIO (#6091)
1 parent eea9999 commit 2df33de

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

tools/platformio-build.py

+25-9
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,10 @@
2424

2525
# Extends: https://github.com/platformio/platform-espressif8266/blob/develop/builder/main.py
2626

27-
import os
28-
import subprocess
29-
3027
from os.path import isdir, join
3128

32-
from SCons import Builder, Util
33-
from SCons.Script import DefaultEnvironment
29+
from SCons import Util
30+
from SCons.Script import Builder, DefaultEnvironment
3431

3532

3633
def scons_patched_match_splitext(path, suffixes=None):
@@ -127,7 +124,26 @@ def scons_patched_match_splitext(path, suffixes=None):
127124

128125
LIBSOURCE_DIRS=[
129126
join(FRAMEWORK_DIR, "libraries")
130-
]
127+
],
128+
129+
BUILDERS=dict(
130+
ElfToBin=Builder(
131+
action=env.VerboseAction(" ".join([
132+
'"$PYTHONEXE"',
133+
'"%s"' % env.subst(join(FRAMEWORK_DIR, "tools", "elf2bin.py")),
134+
"--eboot", '"%s"' % env.subst(join(
135+
FRAMEWORK_DIR, "bootloaders", "eboot", "eboot.elf")),
136+
"--app", '"%s"' % "$SOURCE",
137+
"--flash_mode", "$BOARD_FLASH_MODE",
138+
"--flash_freq", "${__get_board_f_flash(__env__)}",
139+
"--flash_size", "${__get_flash_size(__env__)}",
140+
"--path", '"%s"' % env.subst(join(
141+
platform.get_package_dir("toolchain-xtensa"), "bin")),
142+
"--out", '"$TARGET"'
143+
]), "Building $TARGET"),
144+
suffix=".bin"
145+
)
146+
)
131147
)
132148

133149
# copy CCFLAGS to ASFLAGS (-x assembler-with-cpp mode)
@@ -141,18 +157,18 @@ def scons_patched_match_splitext(path, suffixes=None):
141157
if "PIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK3" in flatten_cppdefines:
142158
env.Append(
143159
CPPDEFINES=[("NONOSDK3V0", 1)],
144-
LIBPATH=[join(FRAMEWORK_DIR, "tools", "sdk", "lib", "NONOSDK3V0"),]
160+
LIBPATH=[join(FRAMEWORK_DIR, "tools", "sdk", "lib", "NONOSDK3V0")]
145161
)
146162
elif "PIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x" in flatten_cppdefines:
147163
env.Append(
148164
CPPDEFINES=[("NONOSDK22x", 1)],
149-
LIBPATH=[join(FRAMEWORK_DIR, "tools", "sdk", "lib", "NONOSDK22x"),]
165+
LIBPATH=[join(FRAMEWORK_DIR, "tools", "sdk", "lib", "NONOSDK22x")]
150166
)
151167
# PIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x (default)
152168
else:
153169
env.Append(
154170
CPPDEFINES=[("NONOSDK221", 1)],
155-
LIBPATH=[join(FRAMEWORK_DIR, "tools", "sdk", "lib", "NONOSDK221"),]
171+
LIBPATH=[join(FRAMEWORK_DIR, "tools", "sdk", "lib", "NONOSDK221")]
156172
)
157173

158174
#

0 commit comments

Comments
 (0)