Skip to content

Commit 090cf51

Browse files
committed
[Realtek] Optimize build flow
1 parent c727e0e commit 090cf51

File tree

2 files changed

+79
-14
lines changed

2 files changed

+79
-14
lines changed

scripts/build/builders/realtek.py

+78-13
Original file line numberDiff line numberDiff line change
@@ -79,28 +79,93 @@ def __init__(self,
7979
root,
8080
runner,
8181
board: RealtekBoard = RealtekBoard.RTL8777G,
82-
app: RealtekApp = RealtekApp.LIGHT):
82+
app: RealtekApp = RealtekApp.LIGHT,
83+
enable_cli: bool = False,
84+
enable_rpc: bool = False,
85+
enable_shell: bool = False):
8386
super(RealtekBuilder, self).__init__(root, runner)
8487
self.board = board
8588
self.app = app
89+
self.enable_cli = enable_cli
90+
self.enable_rpc = enable_rpc
91+
self.enable_shell = enable_shell
92+
93+
os.environ['OT_SRCDIR'] = os.path.join(os.getcwd(), 'third_party/openthread/ot-realtek')
94+
os.environ['REALTEK_SDK_PATH'] = os.path.join(os.environ['OT_SRCDIR'], 'third_party/Realtek/rtl87x2g_sdk')
95+
os.environ['BUILD_BANK'] = 'bank0'
96+
os.environ['OT_CMAKE_NINJA_TARGET'] = self.app.TargetName
97+
98+
def CmakeBuildFlags(self):
99+
flags = []
100+
101+
flags.append("-DCMAKE_BUILD_TYPE=Release")
102+
flags.append("-DCMAKE_TOOLCHAIN_FILE=src/bee4/arm-none-eabi.cmake")
103+
flags.append("-DBUILD_TYPE=sdk")
104+
flags.append(f"-DBUILD_TARGET={self.board.BoardName}")
105+
flags.append(f"-DBUILD_BOARD_TARGET={self.board.BoardName}")
106+
flags.append(f"-DOT_CMAKE_NINJA_TARGET={self.app.TargetName}")
107+
108+
if self.enable_cli:
109+
flags.append("-DENABLE_CLI=ON")
110+
else:
111+
flags.append("-DENABLE_CLI=OFF")
112+
113+
if self.enable_rpc:
114+
flags.append("-DENABLE_PW_RPC=ON")
115+
else:
116+
flags.append("-DENABLE_PW_RPC=OFF")
117+
118+
if self.enable_shell:
119+
flags.append("-DENABLE_SHELL=ON")
120+
else:
121+
flags.append("-DENABLE_SHELL=OFF")
122+
123+
build_flags = " ".join(flags)
124+
125+
return build_flags
86126

87127
def generate(self):
88-
logging.info('generate %s', self.output_dir)
128+
os.environ['OUT_FOLDER'] = self.output_dir
129+
130+
cmd = 'cd {}/openthread \n'.format(os.environ['OT_SRCDIR'])
131+
cmd += 'git checkout thread-reference-20230706'
132+
self._Execute(['bash', '-c', cmd])
133+
134+
cmd = 'arm-none-eabi-gcc -D BUILD_BANK=0 -E -P -x c {ot_src_dir}/src/bee4/{board_name}/app.ld -o {ot_src_dir}/src/bee4/{board_name}/app.ld.gen'.format(
135+
ot_src_dir=os.environ['OT_SRCDIR'],
136+
board_name=self.board.BoardName)
137+
self._Execute(['bash', '-c', cmd])
138+
139+
cmd = f'export MATTER_EXAMPLE_PATH={self.root}/examples/{self.app.ExampleName}/realtek_bee \n'
140+
141+
cmd += 'cmake -GNinja -DOT_COMPILE_WARNING_AS_ERROR=ON {build_flags} {example_folder} -B{out_folder}'.format(
142+
build_flags=self.CmakeBuildFlags(),
143+
example_folder=os.environ['OT_SRCDIR'],
144+
out_folder=self.output_dir)
145+
146+
self._Execute(['bash', '-c', cmd], title='Generating ' + self.identifier)
89147

90148
def _build(self):
91-
cmd = 'third_party/openthread/ot-realtek/Realtek/build.sh {out_folder} {board} {app} {target} '.format(
92-
out_folder=self.output_dir.strip(),
93-
board=self.board.BoardName,
94-
app=self.app.ExampleName,
95-
target=self.app.TargetName
96-
)
149+
cmd = ['ninja', '-C', self.output_dir]
150+
151+
if self.ninja_jobs is not None:
152+
cmd.append('-j' + str(self.ninja_jobs))
153+
154+
cmd.append(self.app.TargetName)
97155

98-
# <build root> <build_system> <output_directory> <application>
99-
cmd += ' '.join([self.root, 'ninja', self.output_dir,
100-
self.app.ExampleName])
156+
self._Execute(cmd, title='Building ' + self.identifier)
101157

102-
self._Execute(['bash', '-c', cmd],
103-
title='Generating ' + self.identifier)
158+
self.PostBuildCommand()
104159

105160
def build_outputs(self):
106161
logging.info('build_outputs %s', self.output_dir)
162+
163+
def PostBuildCommand(self):
164+
cmd = f'{self.root}/third_party/openthread/ot-realtek/Realtek/post_build '
165+
166+
# <bank> <target_name>
167+
cmd += ' '.join([os.environ.get('BUILD_BANK'), self.app.TargetName])
168+
169+
self._Execute(['bash', '-c', cmd], title='PostBuild ' + self.identifier)
170+
171+
os.system(f"rm -rf {self.root}/third_party/openthread/ot-realtek/src/bee4/{self.board.BoardName}/*.gen")

third_party/openthread/ot-realtek

Submodule ot-realtek updated 111 files

0 commit comments

Comments
 (0)