Skip to content

Commit 1bc4b31

Browse files
committed
[NXP][scripts][build_examples] Adding differentiator to support both gn and cmake build systems
Signed-off-by: Dina Benamar <dina.benamarelmaaroufi@nxp.com>
1 parent 490cbc2 commit 1bc4b31

File tree

4 files changed

+35
-10
lines changed

4 files changed

+35
-10
lines changed

.github/workflows/examples-nxp.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ jobs:
243243
--target nxp-rw61x-freertos-all-clusters-wifi \
244244
--target nxp-rw61x-freertos-all-clusters-thread \
245245
--target nxp-rw61x-freertos-all-clusters-thread-wifi \
246+
--target nxp-rw61x-freertos-all-clusters-wifi-ota-cmake \
246247
build \
247248
--copy-artifacts-to out/artifacts \
248249
"

scripts/build/build/targets.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from builders.mw320 import MW320App, MW320Builder
2929
from builders.nrf import NrfApp, NrfBoard, NrfConnectBuilder
3030
from builders.nuttx import NuttXApp, NuttXBoard, NuttXBuilder
31-
from builders.nxp import NxpApp, NxpBoard, NxpBuilder, NxpOsUsed
31+
from builders.nxp import NxpApp, NxpBoard, NxpBuilder, NxpOsUsed, NxpBuildSystem
3232
from builders.openiotsdk import OpenIotSdkApp, OpenIotSdkBuilder, OpenIotSdkCryptoBackend
3333
from builders.qpg import QpgApp, QpgBoard, QpgBuilder
3434
from builders.stm32 import stm32App, stm32Board, stm32Builder
@@ -550,6 +550,7 @@ def BuildNxpTarget():
550550
target.AppendModifier('data-model-enabled', data_model_interface="enabled").ExceptIfRe('-data-model-disabled')
551551
target.AppendModifier(name="factory-build", enable_factory_data_build=True).OnlyIfRe('rw61x')
552552
target.AppendModifier(name="frdm", board_variant="frdm").OnlyIfRe('rw61x')
553+
target.AppendModifier(name="cmake", build_system=NxpBuildSystem.CMAKE).OnlyIfRe('rw61x')
553554

554555
return target
555556

scripts/build/builders/nxp.py

+31-8
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,17 @@ def OsEnv(self):
3434
else:
3535
raise Exception('Unknown OS type: %r' % self)
3636

37+
class NxpBuildSystem(Enum):
38+
GN = auto()
39+
CMAKE = auto()
40+
41+
def BuildSystem(self):
42+
if self == NxpBuildSystem.GN:
43+
return 'gn'
44+
elif self == NxpBuildSystem.CMAKE:
45+
return 'cmake'
46+
else:
47+
raise Exception('Unknown build system: %r' % self)
3748

3849
class NxpBoard(Enum):
3950
K32W0 = auto()
@@ -124,6 +135,7 @@ def __init__(self,
124135
app: NxpApp = NxpApp.LIGHTING,
125136
board: NxpBoard = NxpBoard.K32W0,
126137
os_env: NxpOsUsed = NxpOsUsed.FREERTOS,
138+
build_system: NxpBuildSystem = NxpBuildSystem.GN,
127139
low_power: bool = False,
128140
smu2: bool = False,
129141
enable_factory_data: bool = False,
@@ -148,6 +160,7 @@ def __init__(self,
148160
self.app = app
149161
self.board = board
150162
self.os_env = os_env
163+
self.build_system = build_system
151164
self.low_power = low_power
152165
self.smu2 = smu2
153166
self.enable_factory_data = enable_factory_data
@@ -221,6 +234,7 @@ def GnBuildArgs(self):
221234

222235
def CmakeBuildFlags(self):
223236
flags = []
237+
224238
if self.enable_factory_data:
225239
if self.os_env == NxpOsUsed.ZEPHYR:
226240
flags.append('-DFILE_SUFFIX=fdata')
@@ -304,7 +318,7 @@ def generate(self):
304318
elif p.sdk_name == 'common':
305319
cmd += 'export NXP_SDK_ROOT="' + str(p.sdk_storage_location_abspath) + '" \n '
306320

307-
if self.board == NxpBoard.RW61X:
321+
if self.build_system == NxpBuildSystem.CMAKE:
308322
cmd += '''
309323
cmake -GNinja {build_flags} -H{example_folder} -B{out_folder}
310324
'''.format(
@@ -313,7 +327,7 @@ def generate(self):
313327
out_folder=self.output_dir).strip()
314328
self._Execute(['bash', '-c', cmd], title='Generating ' + self.identifier)
315329

316-
else:
330+
elif self.build_system == NxpBuildSystem.GN:
317331
# add empty space at the end to avoid concatenation issue when there is no --args
318332
cmd += 'gn gen --check --fail-on-unused-args --export-compile-commands --root=%s ' % self.root
319333

@@ -349,10 +363,19 @@ def build_outputs(self):
349363
os.path.join(self.output_dir, 'zephyr', 'zephyr.map'),
350364
f'{name}.map')
351365
else:
352-
yield BuilderOutput(
353-
os.path.join(self.output_dir, name),
354-
f'{name}.elf')
355-
if self.options.enable_link_map_file:
366+
if self.build_system == NxpBuildSystem.GN:
356367
yield BuilderOutput(
357-
os.path.join(self.output_dir, f'{name}.map'),
358-
f'{name}.map')
368+
os.path.join(self.output_dir, name),
369+
f'{name}.elf')
370+
if self.options.enable_link_map_file:
371+
yield BuilderOutput(
372+
os.path.join(self.output_dir, f'{name}.map'),
373+
f'{name}.map')
374+
elif self.build_system == NxpBuildSystem.CMAKE:
375+
yield BuilderOutput(
376+
os.path.join(self.output_dir, 'out/debug', name),
377+
f'{name}.elf')
378+
if self.options.enable_link_map_file:
379+
yield BuilderOutput(
380+
os.path.join(self.output_dir, 'out/debug', f'{name}.map'),
381+
f'{name}.map')

scripts/build/testdata/all_targets_linux_x64.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ linux-{x64,arm64}-{rpc-console,all-clusters,all-clusters-minimal,chip-tool,therm
1313
linux-x64-efr32-test-runner[-clang]
1414
imx-{chip-tool,lighting-app,thermostat,all-clusters-app,all-clusters-minimal-app,ota-provider-app}[-release]
1515
infineon-psoc6-{lock,light,all-clusters,all-clusters-minimal}[-ota][-updateimage][-trustm]
16-
nxp-{k32w0,k32w1,rw61x,mcxw71}-{zephyr,freertos}-{lighting,contact-sensor,lock-app,all-clusters,laundry-washer,thermostat}[-factory][-low-power][-lit][-fro32k][-smu2][-dac-conversion][-rotating-id][-sw-v2][-ota][-wifi][-thread][-matter-shell][-data-model-disabled][-data-model-enabled]
16+
nxp-{k32w0,k32w1,rw61x,mcxw71}-{zephyr,freertos}-{lighting,contact-sensor,lock-app,all-clusters,laundry-washer,thermostat}[-factory][-low-power][-lit][-fro32k][-smu2][-dac-conversion][-rotating-id][-sw-v2][-ota][-wifi][-thread][-matter-shell][-data-model-disabled][-data-model-enabled][-factory-build][-frdm][-cmake]
1717
mbed-cy8cproto_062_4343w-{lock,light,all-clusters,all-clusters-minimal,pigweed,ota-requestor,shell}[-release][-develop][-debug][-data-model-disabled][-data-model-enabled]
1818
mw320-all-clusters-app
1919
nrf-{nrf5340dk,nrf52840dk,nrf52840dongle}-{all-clusters,all-clusters-minimal,lock,light,light-switch,shell,pump,pump-controller,window-covering}[-rpc][-data-model-disabled][-data-model-enabled]

0 commit comments

Comments
 (0)