Skip to content

Commit 909c69b

Browse files
authored
Do not generate exec link map files by default (#33635)
* Do not generate exec link map files by default * Remove toolchain override * Update default in struct * Fix copying artifacts if map file is not created * Unify collecting build and bundle outputs * Fix RW61X build output logic * More copy-paste fixes * Fix TI build
1 parent d6ede36 commit 909c69b

31 files changed

+333
-365
lines changed

build/toolchain/android/android_toolchain.gni

-1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,5 @@ template("android_clang_toolchain") {
6969
ar = _ndk_prefix + "llvm-ar"
7070
cc = _ndk_prefix + _tool_name_root + "clang"
7171
cxx = _ndk_prefix + _tool_name_root + "clang++"
72-
link_generate_map_file = false
7372
}
7473
}

build/toolchain/gcc_toolchain.gni

+3-9
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,9 @@ import("//build_overrides/pigweed.gni")
1616
import("$dir_pw_toolchain/generate_toolchain.gni")
1717

1818
declare_args() {
19-
# Generate Linker map files. Can skip since they can
19+
# Generate Linker map files. By default it is disabled since they can
2020
# be quite large.
21-
#
22-
# Note that toolchains can individually override this
23-
chip_generate_link_map_file = true
21+
chip_generate_link_map_file = false
2422
}
2523

2624
template("gcc_toolchain") {
@@ -48,11 +46,7 @@ template("gcc_toolchain") {
4846
cxx = invoker.cxx
4947
}
5048

51-
if (defined(invoker.link_generate_map_file)) {
52-
link_generate_map_file = invoker.link_generate_map_file
53-
} else {
54-
link_generate_map_file = chip_generate_link_map_file
55-
}
49+
link_generate_map_file = chip_generate_link_map_file
5650

5751
is_host_toolchain = invoker_toolchain_args.current_os == host_os
5852
link_group = invoker_toolchain_args.current_os != "mac" &&

examples/chef/chef.py

+1
Original file line numberDiff line numberDiff line change
@@ -811,6 +811,7 @@ def main() -> int:
811811
'chip_shell_cmd_server = false',
812812
'chip_build_libshell = true',
813813
'chip_enable_openthread = false',
814+
'chip_generate_link_map_file = true',
814815
'chip_config_network_layer_ble = false',
815816
'chip_device_project_config_include = "<CHIPProjectAppConfig.h>"',
816817
'chip_project_config_include = "<CHIPProjectAppConfig.h>"',

scripts/build/build_examples.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,17 @@ def ValidateTargetNames(context, parameter, values):
8383
default=[],
8484
multiple=True,
8585
callback=ValidateTargetNames,
86-
help='Build target(s)'
87-
)
86+
help='Build target(s)')
87+
@click.option(
88+
'--enable-link-map-file',
89+
default=False,
90+
is_flag=True,
91+
help='Enable generation of link map files.')
8892
@click.option(
8993
'--enable-flashbundle',
9094
default=False,
9195
is_flag=True,
92-
help='Also generate the flashbundles for the app.'
93-
)
96+
help='Also generate the flashbundles for the app.')
9497
@click.option(
9598
'--repo',
9699
default='.',
@@ -132,7 +135,7 @@ def ValidateTargetNames(context, parameter, values):
132135
'Set pigweed command launcher. E.g.: "--pw-command-launcher=ccache" '
133136
'for using ccache when building examples.'))
134137
@click.pass_context
135-
def main(context, log_level, target, repo,
138+
def main(context, log_level, target, enable_link_map_file, repo,
136139
out_prefix, pregen_dir, clean, dry_run, dry_run_output, enable_flashbundle,
137140
no_log_timestamps, pw_command_launcher):
138141
# Ensures somewhat pretty logging of what is going on
@@ -160,6 +163,7 @@ def main(context, log_level, target, repo,
160163
context.obj = build.Context(
161164
repository_path=repo, output_prefix=out_prefix, runner=runner)
162165
context.obj.SetupBuilders(targets=requested_targets, options=BuilderOptions(
166+
enable_link_map_file=enable_link_map_file,
163167
enable_flashbundle=enable_flashbundle,
164168
pw_command_launcher=pw_command_launcher,
165169
pregen_dir=pregen_dir,

scripts/build/builders/ameba.py

+16-15
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import os
1616
from enum import Enum, auto
1717

18-
from .builder import Builder
18+
from .builder import Builder, BuilderOutput
1919

2020

2121
class AmebaBoard(Enum):
@@ -89,18 +89,19 @@ def _build(self):
8989
title='Building ' + self.identifier)
9090

9191
def build_outputs(self):
92-
return {
93-
self.app.AppNamePrefix + '.axf':
94-
os.path.join(self.output_dir, 'asdk', 'target_image2.axf'),
95-
self.app.AppNamePrefix + '.map':
92+
yield BuilderOutput(
93+
os.path.join(self.output_dir, 'asdk', 'target_image2.axf'),
94+
self.app.AppNamePrefix + '.axf')
95+
if self.options.enable_link_map_file:
96+
yield BuilderOutput(
9697
os.path.join(self.output_dir, 'asdk', 'target_image2.map'),
97-
'km0_boot_all.bin':
98-
os.path.join(self.output_dir, 'asdk',
99-
'bootloader', 'km0_boot_all.bin'),
100-
'km4_boot_all.bin':
101-
os.path.join(self.output_dir, 'asdk',
102-
'bootloader', 'km4_boot_all.bin'),
103-
'km0_km4_image2.bin':
104-
os.path.join(self.output_dir, 'asdk',
105-
'image', 'km0_km4_image2.bin'),
106-
}
98+
self.app.AppNamePrefix + '.map')
99+
yield BuilderOutput(
100+
os.path.join(self.output_dir, 'asdk', 'bootloader', 'km0_boot_all.bin'),
101+
'km0_boot_all.bin')
102+
yield BuilderOutput(
103+
os.path.join(self.output_dir, 'asdk', 'bootloader', 'km4_boot_all.bin'),
104+
'km4_boot_all.bin')
105+
yield BuilderOutput(
106+
os.path.join(self.output_dir, 'asdk', 'image', 'km0_km4_image2.bin'),
107+
'km0_km4_image2.bin')

scripts/build/builders/android.py

+54-75
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import shlex
1717
from enum import Enum, auto
1818

19-
from .builder import Builder
19+
from .builder import Builder, BuilderOutput
2020

2121

2222
class AndroidBoard(Enum):
@@ -366,6 +366,9 @@ def generate(self):
366366
if self.options.pw_command_launcher:
367367
gn_args["pw_command_launcher"] = self.options.pw_command_launcher
368368

369+
if self.options.enable_link_map_file:
370+
gn_args["chip_generate_link_map_file"] = True
371+
369372
if exampleName == "chip-test":
370373
gn_args["chip_build_tests"] = True
371374
if self.profile != AndroidProfile.DEBUG:
@@ -569,85 +572,61 @@ def _build(self):
569572

570573
def build_outputs(self):
571574
if self.board.IsIde():
572-
outputs = {
573-
self.app.AppName()
574-
+ "-debug.apk": os.path.join(
575+
yield BuilderOutput(
576+
os.path.join(
575577
self.root,
576578
"examples/android",
577579
self.app.AppName(),
578-
"app/build/outputs/apk/debug/app-debug.apk",
579-
)
580-
}
580+
"app/build/outputs/apk/debug/app-debug.apk"),
581+
self.app.AppName() + "-debug.apk")
581582
elif self.app.ExampleName() is not None:
582583
if self.app == AndroidApp.TV_SERVER:
583-
outputs = {
584-
"tv-sever-platform-app-debug.apk": os.path.join(
585-
self.output_dir, "platform-app", "outputs", "apk", "debug", "platform-app-debug.apk"
586-
),
587-
"tv-sever-content-app-debug.apk": os.path.join(
588-
self.output_dir, "content-app", "outputs", "apk", "debug", "content-app-debug.apk"
589-
)
590-
}
584+
yield BuilderOutput(
585+
os.path.join(self.output_dir, "platform-app",
586+
"outputs", "apk", "debug", "platform-app-debug.apk"),
587+
"tv-sever-platform-app-debug.apk")
588+
yield BuilderOutput(
589+
os.path.join(self.output_dir, "content-app",
590+
"outputs", "apk", "debug", "content-app-debug.apk"),
591+
"tv-sever-content-app-debug.apk")
591592
elif self.app == AndroidApp.VIRTUAL_DEVICE_APP:
592-
outputs = {
593-
self.app.AppName() + "app-debug.apk": os.path.join(
594-
self.output_dir, "VirtualDeviceApp", "app", "outputs", "apk", "debug", "app-debug.apk"
595-
)
596-
}
593+
yield BuilderOutput(
594+
os.path.join(self.output_dir, "VirtualDeviceApp", "app",
595+
"outputs", "apk", "debug", "app-debug.apk"),
596+
self.app.AppName() + "app-debug.apk")
597597
else:
598-
outputs = {
599-
self.app.AppName() + "app-debug.apk": os.path.join(
600-
self.output_dir, "outputs", "apk", "debug", "app-debug.apk"
601-
)
602-
}
598+
yield BuilderOutput(
599+
os.path.join(self.output_dir,
600+
"outputs", "apk", "debug", "app-debug.apk"),
601+
self.app.AppName() + "app-debug.apk")
603602
else:
604-
outputs = {
605-
self.app.AppName() + "app-debug.apk": os.path.join(
606-
self.output_dir, "outputs", "apk", "debug", "app-debug.apk"
607-
),
608-
"CHIPController.jar": os.path.join(
609-
self.output_dir, "lib", "src/controller/java/CHIPController.jar"
610-
),
611-
"CHIPInteractionModel.jar": os.path.join(
612-
self.output_dir, "lib", "src/controller/java/CHIPInteractionModel.jar"
613-
),
614-
"libMatterTlv.jar": os.path.join(
615-
self.output_dir, "lib", "src/controller/java/libMatterTlv.jar"
616-
),
617-
"AndroidPlatform.jar": os.path.join(
618-
self.output_dir, "lib", "src/platform/android/AndroidPlatform.jar"
619-
),
620-
"OnboardingPayload.jar": os.path.join(
621-
self.output_dir,
622-
"lib",
623-
"src/controller/java/OnboardingPayload.jar",
624-
),
625-
"CHIPClusters.jar": os.path.join(
626-
self.output_dir,
627-
"lib",
628-
"src/controller/java/CHIPClusters.jar",
629-
),
630-
"CHIPClusterID.jar": os.path.join(
631-
self.output_dir,
632-
"lib",
633-
"src/controller/java/CHIPClusterID.jar",
634-
),
635-
"jni/%s/libCHIPController.so"
636-
% self.board.AbiName(): os.path.join(
637-
self.output_dir,
638-
"lib",
639-
"jni",
640-
self.board.AbiName(),
641-
"libCHIPController.so",
642-
),
643-
"jni/%s/libc++_shared.so"
644-
% self.board.AbiName(): os.path.join(
645-
self.output_dir,
646-
"lib",
647-
"jni",
648-
self.board.AbiName(),
649-
"libc++_shared.so",
650-
),
651-
}
652-
653-
return outputs
603+
yield BuilderOutput(
604+
os.path.join(self.output_dir, "outputs", "apk", "debug", "app-debug.apk"),
605+
self.app.AppName() + "app-debug.apk")
606+
yield BuilderOutput(
607+
os.path.join(self.output_dir, "lib", "src", "controller", "java", "CHIPController.jar"),
608+
"CHIPController.jar")
609+
yield BuilderOutput(
610+
os.path.join(self.output_dir, "lib", "src", "controller", "java", "CHIPInteractionModel.jar"),
611+
"CHIPInteractionModel.jar")
612+
yield BuilderOutput(
613+
os.path.join(self.output_dir, "lib", "src", "controller", "java", "libMatterTlv.jar"),
614+
"libMatterTlv.jar")
615+
yield BuilderOutput(
616+
os.path.join(self.output_dir, "lib", "src", "platform", "android", "AndroidPlatform.jar"),
617+
"AndroidPlatform.jar")
618+
yield BuilderOutput(
619+
os.path.join(self.output_dir, "lib", "src", "controller", "java", "OnboardingPayload.jar"),
620+
"OnboardingPayload.jar")
621+
yield BuilderOutput(
622+
os.path.join(self.output_dir, "lib", "src", "controller", "java", "CHIPClusters.jar"),
623+
"CHIPClusters.jar")
624+
yield BuilderOutput(
625+
os.path.join(self.output_dir, "lib", "src", "controller", "java", "CHIPClusterID.jar"),
626+
"CHIPClusterID.jar")
627+
yield BuilderOutput(
628+
os.path.join(self.output_dir, "lib", "jni", self.board.AbiName(), "libCHIPController.so"),
629+
"jni/%s/libCHIPController.so" % self.board.AbiName())
630+
yield BuilderOutput(
631+
os.path.join(self.output_dir, "lib", "jni", self.board.AbiName(), "libc++_shared.so"),
632+
"jni/%s/libc++_shared.so" % self.board.AbiName())

scripts/build/builders/asr.py

+7-10
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import os
1616
from enum import Enum, auto
1717

18+
from .builder import BuilderOutput
1819
from .gn import GnBuilder
1920

2021

@@ -178,13 +179,9 @@ def GnBuildArgs(self):
178179
return self.extra_gn_options
179180

180181
def build_outputs(self):
181-
items = {
182-
'%s.out' % self.app.AppNamePrefix():
183-
os.path.join(self.output_dir, '%s.out' %
184-
self.app.AppNamePrefix()),
185-
'%s.out.map' % self.app.AppNamePrefix():
186-
os.path.join(self.output_dir,
187-
'%s.out.map' % self.app.AppNamePrefix()),
188-
}
189-
190-
return items
182+
extensions = ["out"]
183+
if self.options.enable_link_map_file:
184+
extensions.append("out.map")
185+
for ext in extensions:
186+
name = f"{self.app.AppNamePrefix()}.{ext}"
187+
yield BuilderOutput(os.path.join(self.output_dir, name), name)

scripts/build/builders/bouffalolab.py

+7-10
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import os
1717
from enum import Enum, auto
1818

19+
from .builder import BuilderOutput
1920
from .gn import GnBuilder
2021

2122

@@ -226,16 +227,12 @@ def GnBuildArgs(self):
226227
return self.argsOpt
227228

228229
def build_outputs(self):
229-
items = {
230-
'%s.out' % self.app.AppNamePrefix(self.chip_name):
231-
os.path.join(self.output_dir, '%s.out' %
232-
self.app.AppNamePrefix(self.chip_name)),
233-
'%s.out.map' % self.app.AppNamePrefix(self.chip_name):
234-
os.path.join(self.output_dir,
235-
'%s.out.map' % self.app.AppNamePrefix(self.chip_name)),
236-
}
237-
238-
return items
230+
extensions = ["out"]
231+
if self.options.enable_link_map_file:
232+
extensions.append("out.map")
233+
for ext in extensions:
234+
name = f"{self.app.AppNamePrefix(self.chip_name)}.{ext}"
235+
yield BuilderOutput(os.path.join(self.output_dir, name), name)
239236

240237
def PostBuildCommand(self):
241238

0 commit comments

Comments
 (0)