Changeset 107069 in vbox
- Timestamp:
- Nov 21, 2024 1:54:50 AM (2 months ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Makefile.kmk
r107067 r107069 2190 2190 2191 2191 efi-build: $(VBOX_VERSION_HEADER) 2192 + $(KMK) -C src/VBox/Devices/EFI/Firmware$(VBOX_EFI_FIRMWARE_SUFFIX) 2192 + $(KMK) -C src/VBox/Devices/EFI/Firmware$(VBOX_EFI_FIRMWARE_SUFFIX) --output-sync=recurse 2193 2193 2194 2194 efi-packing: 2195 + $(KMK) -C src/VBox/Devices/EFI/Firmware$(VBOX_EFI_FIRMWARE_SUFFIX) $(PATH_STAGE)/VBoxEfiFirmware.zip $(if $(VBOX_WITH_VIRT_ARMV8),$(PATH_STAGE)/VBoxEfiFirmware-armv8.zip,) 2195 + $(KMK) -C src/VBox/Devices/EFI/Firmware$(VBOX_EFI_FIRMWARE_SUFFIX) $(PATH_STAGE)/VBoxEfiFirmware.zip --output-sync=none \ 2196 $(if-expr define(VBOX_WITH_VIRT_ARMV8) && "$(KBUILD_HOST)" == "linux",$(PATH_STAGE)/VBoxEfiFirmware-armv8.zip,) 2196 2197 2197 2198 -
trunk/src/VBox/Devices/EFI/Firmware/Makefile.kmk
r107068 r107069 118 118 VBoxEfiFirmware_SOURCES = \ 119 119 $(VBoxEfiFirmware_0_OUTDIR)/x86/$(call VBOX_EFI_OUTPUT_SUBDIR,x86)/FV/OVMF.fd=>VBoxEFI32.fd \ 120 $(VBoxEfiFirmware_0_OUTDIR)/amd64/$(call VBOX_EFI_OUTPUT_SUBDIR,amd64)/FV/OVMF.fd=>VBoxEFI64.fd 120 $(VBoxEfiFirmware_0_OUTDIR)/x86/$(call VBOX_EFI_OUTPUT_SUBDIR,x86)/FV/OVMF.fd=>VBoxEFI-x86.fd \ 121 $(VBoxEfiFirmware_0_OUTDIR)/amd64/$(call VBOX_EFI_OUTPUT_SUBDIR,amd64)/FV/OVMF.fd=>VBoxEFI64.fd \ 122 $(VBoxEfiFirmware_0_OUTDIR)/amd64/$(call VBOX_EFI_OUTPUT_SUBDIR,amd64)/FV/OVMF.fd=>VBoxEFI-amd64.fd \ 123 $(VBoxEfiFirmware_0_OUTDIR)/arm32/$(call VBOX_EFI_OUTPUT_SUBDIR,arm32)/FV/QEMU_EFI.fd=>VBoxEFI-arm32.fd \ 124 $(VBoxEfiFirmware_0_OUTDIR)/arm32/$(call VBOX_EFI_OUTPUT_SUBDIR,arm32)/FV/QEMU_EFI.fd=>VBoxEFIAArch32.fd \ 125 $(VBoxEfiFirmware_0_OUTDIR)/arm64/$(call VBOX_EFI_OUTPUT_SUBDIR,arm64)/FV/QEMU_EFI.fd=>VBoxEFI-arm64.fd \ 126 $(VBoxEfiFirmware_0_OUTDIR)/arm64/$(call VBOX_EFI_OUTPUT_SUBDIR,arm64)/FV/QEMU_EFI.fd=>VBoxEFIAArch64.fd 121 127 VBoxEfiFirmware_BLDDIRS = \ 122 128 $(VBoxEfiFirmware_0_OUTDIR)/x86/ \ 123 129 $(VBoxEfiFirmware_0_OUTDIR)/x86/Conf/ \ 124 130 $(VBoxEfiFirmware_0_OUTDIR)/amd64/ \ 125 $(VBoxEfiFirmware_0_OUTDIR)/amd64/Conf/ 131 $(VBoxEfiFirmware_0_OUTDIR)/amd64/Conf/ \ 132 $(VBoxEfiFirmware_0_OUTDIR)/arm32/ \ 133 $(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/ \ 134 $(VBoxEfiFirmware_0_OUTDIR)/arm64/ \ 135 $(VBoxEfiFirmware_0_OUTDIR)/arm64/Conf/ 126 136 VBoxEfiFirmware_CLEAN = \ 127 137 $(VBoxEfiFirmware_0_OUTDIR)/x86/Conf/target.txt \ … … 130 140 $(VBoxEfiFirmware_0_OUTDIR)/amd64/Conf/target.txt \ 131 141 $(VBoxEfiFirmware_0_OUTDIR)/amd64/Conf/build_rule.txt \ 132 $(VBoxEfiFirmware_0_OUTDIR)/amd64/Conf/tools_def.txt 133 134 ifdef VBOX_WITH_VIRT_ARMV8 135 VBoxEfiFirmware_SOURCES += \ 136 $(VBoxEfiFirmware_0_OUTDIR)/arm32/$(call VBOX_EFI_OUTPUT_SUBDIR,arm32)/FV/QEMU_EFI.fd=>VBoxEFIAArch32.fd \ 137 $(VBoxEfiFirmware_0_OUTDIR)/arm64/$(call VBOX_EFI_OUTPUT_SUBDIR,arm64)/FV/QEMU_EFI.fd=>VBoxEFIAArch64.fd 138 VBoxEfiFirmware_BLDDIRS += \ 139 $(VBoxEfiFirmware_0_OUTDIR)/arm32/ \ 140 $(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/ \ 141 $(VBoxEfiFirmware_0_OUTDIR)/arm64/ \ 142 $(VBoxEfiFirmware_0_OUTDIR)/arm64/Conf/ 143 VBoxEfiFirmware_CLEAN += \ 144 $(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/target.txt \ 145 $(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/build_rule.txt \ 146 $(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/tools_def.txt \ 147 $(VBoxEfiFirmware_0_OUTDIR)/arm64/Conf/target.txt \ 148 $(VBoxEfiFirmware_0_OUTDIR)/arm64/Conf/build_rule.txt \ 149 $(VBoxEfiFirmware_0_OUTDIR)/arm64/Conf/tools_def.txt 150 endif 142 $(VBoxEfiFirmware_0_OUTDIR)/amd64/Conf/tools_def.txt \ 143 $(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/target.txt \ 144 $(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/build_rule.txt \ 145 $(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/tools_def.txt \ 146 $(VBoxEfiFirmware_0_OUTDIR)/arm64/Conf/target.txt \ 147 $(VBoxEfiFirmware_0_OUTDIR)/arm64/Conf/build_rule.txt \ 148 $(VBoxEfiFirmware_0_OUTDIR)/arm64/Conf/tools_def.txt 151 149 152 150 # Install the debug info. … … 173 171 endif 174 172 175 ifdef VBOX_WITH_VIRT_ARMV8 176 INSTALLS += VBoxEfiFirmwareDbgArm32 177 VBoxEfiFirmwareDbgArm32_INST = $(INST_VBOXDBG_SYMS)arm32/ 178 VBoxEfiFirmwareDbgArm32_MODE = 0644 179 if1of ($(VBOX_EFI_TOOL_CHAIN.arm32), VS2022 VS2019 VS2017 CLANGPDB) 180 VBoxEfiFirmwareDbgArm32_SOURCES = \ 181 $(foreach mod,$(VBOX_EFI_MODULES.arm32),$(VBoxEfiFirmware_0_OUTDIR)/arm32/$(call VBOX_EFI_OUTPUT_SUBDIR,arm32)/ARM/$(mod).pdb) 182 else 183 VBoxEfiFirmwareDbgArm32_SOURCES = \ 184 $(foreach mod,$(VBOX_EFI_MODULES_FLAT.arm32),$(VBoxEfiFirmware_0_OUTDIR)/arm32/$(call VBOX_EFI_OUTPUT_SUBDIR,arm32)/ARM/$(mod).debug) 185 endif 186 187 INSTALLS += VBoxEfiFirmwareDbgArm64 188 VBoxEfiFirmwareDbgArm64_INST = $(INST_VBOXDBG_SYMS)arm64/ 189 VBoxEfiFirmwareDbgArm64_MODE = 0644 190 if1of ($(VBOX_EFI_TOOL_CHAIN.arm64), VS2022 VS2019 VS2017 CLANGPDB) 191 VBoxEfiFirmwareDbgArm64_SOURCES = \ 192 $(foreach mod,$(VBOX_EFI_MODULES.arm64),$(VBoxEfiFirmware_0_OUTDIR)/arm64/$(call VBOX_EFI_OUTPUT_SUBDIR,arm64)/AARCH64/$(mod).pdb) 193 else 194 VBoxEfiFirmwareDbgArm64_SOURCES = \ 195 $(foreach mod,$(VBOX_EFI_MODULES_FLAT.arm64),$(VBoxEfiFirmware_0_OUTDIR)/arm64/$(call VBOX_EFI_OUTPUT_SUBDIR,arm64)/AARCH64/$(mod).debug) 196 endif 173 INSTALLS += VBoxEfiFirmwareDbgArm32 174 VBoxEfiFirmwareDbgArm32_INST = $(INST_VBOXDBG_SYMS)arm32/ 175 VBoxEfiFirmwareDbgArm32_MODE = 0644 176 if1of ($(VBOX_EFI_TOOL_CHAIN.arm32), VS2022 VS2019 VS2017 CLANGPDB) 177 VBoxEfiFirmwareDbgArm32_SOURCES = \ 178 $(foreach mod,$(VBOX_EFI_MODULES.arm32),$(VBoxEfiFirmware_0_OUTDIR)/arm32/$(call VBOX_EFI_OUTPUT_SUBDIR,arm32)/ARM/$(mod).pdb) 179 else 180 VBoxEfiFirmwareDbgArm32_SOURCES = \ 181 $(foreach mod,$(VBOX_EFI_MODULES_FLAT.arm32),$(VBoxEfiFirmware_0_OUTDIR)/arm32/$(call VBOX_EFI_OUTPUT_SUBDIR,arm32)/ARM/$(mod).debug) 182 endif 183 184 INSTALLS += VBoxEfiFirmwareDbgArm64 185 VBoxEfiFirmwareDbgArm64_INST = $(INST_VBOXDBG_SYMS)arm64/ 186 VBoxEfiFirmwareDbgArm64_MODE = 0644 187 if1of ($(VBOX_EFI_TOOL_CHAIN.arm64), VS2022 VS2019 VS2017 CLANGPDB) 188 VBoxEfiFirmwareDbgArm64_SOURCES = \ 189 $(foreach mod,$(VBOX_EFI_MODULES.arm64),$(VBoxEfiFirmware_0_OUTDIR)/arm64/$(call VBOX_EFI_OUTPUT_SUBDIR,arm64)/AARCH64/$(mod).pdb) 190 else 191 VBoxEfiFirmwareDbgArm64_SOURCES = \ 192 $(foreach mod,$(VBOX_EFI_MODULES_FLAT.arm64),$(VBoxEfiFirmware_0_OUTDIR)/arm64/$(call VBOX_EFI_OUTPUT_SUBDIR,arm64)/AARCH64/$(mod).debug) 197 193 endif 198 194 … … 204 200 VBoxEfiFirmwareCleanup: 205 201 $(if $(VBoxEfiFirmware_0_OUTDIR),,exit 1) 206 $(RM) -Rf -- "$(VBoxEfiFirmware_0_OUTDIR)/amd64/" "$(VBoxEfiFirmware_0_OUTDIR)/x86/" 207 $(if $(VBOX_WITH_VIRT_ARMV8),$(RM) -Rf -- "$(VBoxEfiFirmware_0_OUTDIR)/arm64/" "$(VBoxEfiFirmware_0_OUTDIR)/arm32/",) 202 $(RM) -Rf -- \ 203 "$(VBoxEfiFirmware_0_OUTDIR)/x86/" \ 204 "$(VBoxEfiFirmware_0_OUTDIR)/amd64/" \ 205 "$(VBoxEfiFirmware_0_OUTDIR)/arm32/" \ 206 "$(VBoxEfiFirmware_0_OUTDIR)/arm64/" 208 207 .PHONY: VBoxEfiFirmwareCleanup 209 208 … … 221 220 $(PATH_STAGE_BIN)/VBoxEFI64.fd \ 222 221 $(foreach mod,$(VBOX_EFI_MODULES_FLAT.amd64),$(PATH_STAGE)/$(INST_VBOXDBG_SYMS)/amd64/$(mod)$(VBOX_EFI_DBG_SUFF.amd64)) \ 223 $(foreach mod,$(VBOX_EFI_MODULES_FLAT.x86) ,$(PATH_STAGE)/$(INST_VBOXDBG_SYMS)/x86/$(mod)$(VBOX_EFI_DBG_SUFF.x86)) 222 $(foreach mod,$(VBOX_EFI_MODULES_FLAT.x86) ,$(PATH_STAGE)/$(INST_VBOXDBG_SYMS)/x86/$(mod)$(VBOX_EFI_DBG_SUFF.x86)) \ 223 $(if-expr "$(KBUILD_HOST)" != "linux", \ 224 $(PATH_STAGE_BIN)/VBoxEFI-arm32.fd \ 225 $(PATH_STAGE_BIN)/VBoxEFI-arm64.fd, \ 226 $(PATH_STAGE_BIN)/VBoxEFIAArch32.fd \ 227 $(PATH_STAGE_BIN)/VBoxEFIAArch64.fd) \ 228 $(foreach mod,$(VBOX_EFI_MODULES_FLAT.arm32),$(PATH_STAGE)/$(INST_VBOXDBG_SYMS)/arm32/$(mod)$(VBOX_EFI_DBG_SUFF.arm32)) \ 229 $(foreach mod,$(VBOX_EFI_MODULES_FLAT.arm64),$(PATH_STAGE)/$(INST_VBOXDBG_SYMS)/arm64/$(mod)$(VBOX_EFI_DBG_SUFF.arm64)),) 224 230 $(REDIRECT) -C "$(PATH_STAGE_BIN)" -- $(TOOL_ZIP_PACK) $(TOOL_ZIP_PACKFLAGS) -9X $@ \ 231 VBoxEFI-x86.fd \ 232 VBoxEFI-amd64.fd \ 233 VBoxEFI-arm32.fd \ 234 VBoxEFI-arm64.fd \ 225 235 VBoxEFI32.fd \ 226 VBoxEFI64.fd 236 VBoxEFI64.fd \ 237 $(if-expr "$(KBUILD_HOST)" == "linux",\ 238 VBoxEFIAArch32.fd \ 239 VBoxEFIAArch64.fd,) 227 240 $(REDIRECT) -C "$(PATH_STAGE)/$(INST_VBOXDBG_SYMS)" -- $(TOOL_ZIP_PACK) $(TOOL_ZIP_PACKFLAGS) -9X $@ \ 241 $(foreach mod,$(VBOX_EFI_MODULES_FLAT.x86) ,x86/$(mod)$(VBOX_EFI_DBG_SUFF.x86)) \ 228 242 $(foreach mod,$(VBOX_EFI_MODULES_FLAT.amd64),amd64/$(mod)$(VBOX_EFI_DBG_SUFF.amd64)) \ 229 $(foreach mod,$(VBOX_EFI_MODULES_FLAT.x86),x86/$(mod)$(VBOX_EFI_DBG_SUFF.x86)) 230 231 ifdef VBOX_WITH_VIRT_ARMV8 243 $(foreach mod,$(VBOX_EFI_MODULES_FLAT.arm32),arm32/$(mod)$(VBOX_EFI_DBG_SUFF.arm32)) \ 244 $(foreach mod,$(VBOX_EFI_MODULES_FLAT.arm64),arm64/$(mod)$(VBOX_EFI_DBG_SUFF.arm64)) 245 246 247 if defined(VBOX_WITH_VIRT_ARMV8) && "$(KBUILD_HOST)" == "linux" 232 248 VBoxEfiFirmware-armv8.zip: $(PATH_STAGE)/VBoxEfiFirmware-armv8.zip 233 249 $(PATH_STAGE)/VBoxEfiFirmware-armv8.zip: … … 341 357 endif 342 358 343 ifdef VBOX_WITH_VIRT_ARMV8 344 if1of ($(KBUILD_HOST), darwin linux) 345 ifndef TOOL_VBoxXGccArm64Elf 346 include $(KBUILD_TOOL_PATHS)/VBoxXGccArm64Elf.kmk 347 endif 348 ifndef TOOL_VBoxXGccArmNoneEabi 349 include $(KBUILD_TOOL_PATHS)/VBoxXGccArmNoneEabi.kmk 350 endif 359 if1of ($(KBUILD_HOST), darwin linux) 360 ifndef TOOL_VBoxXGccArm64Elf 361 include $(KBUILD_TOOL_PATHS)/VBoxXGccArm64Elf.kmk 362 endif 363 ifndef TOOL_VBoxXGccArmNoneEabi 364 include $(KBUILD_TOOL_PATHS)/VBoxXGccArmNoneEabi.kmk 351 365 endif 352 366 endif … … 354 368 $(VBoxEfiFirmware_0_OUTDIR)/x86/Conf/tools_def.txt \ 355 369 $(VBoxEfiFirmware_0_OUTDIR)/amd64/Conf/tools_def.txt \ 356 $( if $(VBOX_WITH_VIRT_ARMV8),$(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/tools_def.txt)\357 $( if $(VBOX_WITH_VIRT_ARMV8),$(VBoxEfiFirmware_0_OUTDIR)/arm64/Conf/tools_def.txt): \370 $(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/tools_def.txt \ 371 $(VBoxEfiFirmware_0_OUTDIR)/arm64/Conf/tools_def.txt: \ 358 372 $(VBOX_PATH_EFI_FIRMWARE)/vbox-tools_def.txt \ 359 373 $(MAKEFILE) | $$(dir $$@) … … 388 402 $(VBoxEfiFirmware_0_OUTDIR)/x86/Conf/build_rule.txt \ 389 403 $(VBoxEfiFirmware_0_OUTDIR)/amd64/Conf/build_rule.txt \ 390 $( if $(VBOX_WITH_VIRT_ARMV8),$(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/build_rule.txt)\391 $( if $(VBOX_WITH_VIRT_ARMV8),$(VBoxEfiFirmware_0_OUTDIR)/arm64/Conf/build_rule.txt): \404 $(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/build_rule.txt \ 405 $(VBoxEfiFirmware_0_OUTDIR)/arm64/Conf/build_rule.txt: \ 392 406 $(VBOX_PATH_EFI_FIRMWARE)/BaseTools/Conf/build_rule.template \ 393 407 $(MAKEFILE) | $$(dir $$@) … … 460 474 --platform OvmfPkg/OvmfPkgX64.dsc 461 475 462 ifdef VBOX_WITH_VIRT_ARMV8 463 # 464 # VBoxEFIAArch32 465 # 466 $(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/target.txt: $(MAKEFILE) | $$(dir $$@) $(VBOX_EFI_BLDPROGS) 476 # 477 # VBoxEFIAArch32 478 # 479 $(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/target.txt: $(MAKEFILE) | $$(dir $$@) $(VBOX_EFI_BLDPROGS) 467 480 $(APPEND) -tn "$@" \ 468 481 "# Automatically generated, do not edit" \ … … 479 492 "MAX_CONCURRENT_THREAD_NUMBER = $(VBOX_EFI_MAX_THREADS)" 480 493 481 482 483 484 485 486 487 488 494 $(VBoxEfiFirmware_0_OUTDIR)/arm32/$(call VBOX_EFI_OUTPUT_SUBDIR,arm32)/FV/QEMU_EFI.fd \ 495 + $(VBoxEfiFirmwareDbgArm32_SOURCES): \ 496 $(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/target.txt \ 497 $(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/tools_def.txt \ 498 $(VBoxEfiFirmware_0_OUTDIR)/arm32/Conf/build_rule.txt \ 499 $(VBOX_EFI_DEPENDENCIES) \ 500 $(VBOX_PATH_EFI_FIRMWARE)/ArmVirtPkg/ArmVirtQemu.dsc \ 501 $(VBOX_PATH_EFI_FIRMWARE)/ArmVirtPkg/ArmVirtQemu.fdf 489 502 + $(VBOX_EFI_BUILD_CMD) \ 490 503 --tagname $(VBOX_EFI_TOOL_CHAIN.arm32) \ … … 492 505 --platform ArmVirtPkg/ArmVirtQemu.dsc 493 506 494 495 496 497 507 # 508 # VBoxEFIAArch64 509 # 510 $(VBoxEfiFirmware_0_OUTDIR)/arm64/Conf/target.txt: $(MAKEFILE) | $$(dir $$@) $(VBOX_EFI_BLDPROGS) 498 511 $(APPEND) -tn "$@" \ 499 512 "# Automatically generated, do not edit" \ … … 510 523 "MAX_CONCURRENT_THREAD_NUMBER = $(VBOX_EFI_MAX_THREADS)" 511 524 512 513 514 515 516 517 518 519 525 $(VBoxEfiFirmware_0_OUTDIR)/arm64/$(call VBOX_EFI_OUTPUT_SUBDIR,arm64)/FV/QEMU_EFI.fd \ 526 + $(VBoxEfiFirmwareDbgArm64_SOURCES): \ 527 $(VBoxEfiFirmware_0_OUTDIR)/arm64/Conf/target.txt \ 528 $(VBoxEfiFirmware_0_OUTDIR)/arm64/Conf/tools_def.txt \ 529 $(VBoxEfiFirmware_0_OUTDIR)/arm64/Conf/build_rule.txt \ 530 $(VBOX_EFI_DEPENDENCIES) \ 531 $(VBOX_PATH_EFI_FIRMWARE)/ArmVirtPkg/ArmVirtQemu.dsc \ 532 $(VBOX_PATH_EFI_FIRMWARE)/ArmVirtPkg/ArmVirtQemu.fdf 520 533 + $(VBOX_EFI_BUILD_CMD) \ 521 534 --tagname $(VBOX_EFI_TOOL_CHAIN.arm64) \ 522 535 --arch AARCH64 \ 523 536 --platform ArmVirtPkg/ArmVirtQemu.dsc 524 endif525 537 526 538 … … 528 540 # Some aliases. 529 541 # 530 build-efi-x86: $$(filter %VBoxEFI32.fd,$$(VBoxEfiFirmware_2_STAGE_TARGETS)) 531 build-efi-amd64: $$(filter %VBoxEFI64.fd,$$(VBoxEfiFirmware_2_STAGE_TARGETS)) 532 533 ifdef VBOX_WITH_VIRT_ARMV8 534 build-efi-arm32: $$(filter %VBoxEFIAArch32.fd,$$(VBoxEfiFirmware_2_STAGE_TARGETS)) 535 build-efi-arm64: $$(filter %VBoxEFIAArch64.fd,$$(VBoxEfiFirmware_2_STAGE_TARGETS)) 536 endif 537 542 build-efi-x86: $$(filter %VBoxEFI32.fd %VBoxEFI-x86.fd ,$$(VBoxEfiFirmware_2_STAGE_TARGETS)) 543 build-efi-amd64: $$(filter %VBoxEFI64.fd %VBoxEFI-amd64.fd,$$(VBoxEfiFirmware_2_STAGE_TARGETS)) 544 build-efi-arm32: $$(filter %VBoxEFIAArch32.fd %VBoxEFI-arm32.fd,$$(VBoxEfiFirmware_2_STAGE_TARGETS)) 545 build-efi-arm64: $$(filter %VBoxEFIAArch64.fd %VBoxEFI-arm64.fd,$$(VBoxEfiFirmware_2_STAGE_TARGETS)) 546
Note:
See TracChangeset
for help on using the changeset viewer.