[XABT] Move JLO scanning needed for typemap generation to a linker step. #10015
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context: #9893
Context: #9930
This commit moves the process of scanning for JLOs needed for the typemap generation task to a new
FindTypeMapObjectsStep
"linker step".The types are serialized to new
<assembly>.typemap.xml
files that sit beside the source assembly. A new file was used rather than adding more sections to the.jlo.xml
file because this file contains a lot more types and will likely change more often on incremental builds, and we don't want to trigger ie: creating new Java stubs when it isn't needed.This file is then read in the existing
<GenerateTypeMappings>
task to generate the final typemap file.The existing method of JLO scanning for typemaps is still used when using LLVM marshal methods, as the marshal method rewriter runs after the linker steps, and when it changes the assemblies the MVID and type tokens no longer match the values saved in the
.typemap.xml
files.Like #9893, this temporarily leaves the old typemap generation code in place, guarded behind the
$(_AndroidJLOCheckedBuild)
flag. This flag generates the typemap both the new and old way, and errors the build if there are differences.Note that #10024 updated our "pipeline" to save assemblies after all steps have been run. However, looking for JLOs needed for typemap generation has to be run after assemblies are saved. This is because Release typemaps rely on assembly MVID and type tokens which change when the assemblies are modified.
Update the pipeline's "modified assembly saving" to itself be a pipeline step, so we can insert it before the new
FindTypeMapObjectsStep
step.