@@ -79,28 +79,93 @@ def __init__(self,
79
79
root ,
80
80
runner ,
81
81
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 ):
83
86
super (RealtekBuilder , self ).__init__ (root , runner )
84
87
self .board = board
85
88
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
86
126
87
127
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 )
89
147
90
148
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 )
97
155
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 )
101
157
102
- self ._Execute (['bash' , '-c' , cmd ],
103
- title = 'Generating ' + self .identifier )
158
+ self .PostBuildCommand ()
104
159
105
160
def build_outputs (self ):
106
161
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" )
0 commit comments