11// Tools needed by cake addins
2- #tool nuget : ? package= ILRepack & version = 2.0 .13
32#tool nuget : ? package= Cake . MonoApiTools & version = 3.0 .1
4- //#tool nuget:?package=Microsoft.DotNet.BuildTools.GenAPI&version=1.0.0-beta-00081
53#tool nuget: ? package = vswhere
64
75// Cake Addins
@@ -46,6 +44,8 @@ if (IsRunningOnWindows ()) {
4644}
4745var MONODROID_PATH = MONODROID_BASE_PATH . Combine ( ANDROID_SDK_VERSION ) ;
4846
47+ var ANDROIDX_MAPPER_EXE = $ "util/AndroidXMapper/AndroidXMapper/bin/{ BUILD_CONFIG } /net47/AndroidXMapper.exe";
48+
4949Information ( "MONODROID_BASE_PATH: {0}" , MONODROID_BASE_PATH ) ;
5050Information ( "MONODROID_PATH: {0}" , MONODROID_PATH ) ;
5151
@@ -160,8 +160,6 @@ Task("samples")
160160 } ) ;
161161} ) ;
162162
163- Task( "nuget-fat" ) ;
164-
165163Task ( "nuget-validation" )
166164 . Does ( ( ) =>
167165{
@@ -202,6 +200,18 @@ Task("nuget-validation")
202200
203201} ) ;
204202
203+ Task ( "androidxmapper" )
204+ . Does ( ( ) =>
205+ {
206+ MSBuild (
207+ "./util/AndroidXMapper/AndroidXMapper.sln" , c => {
208+ c . Configuration = BUILD_CONFIG ;
209+ c . MaxCpuCount = 0 ;
210+ c . Verbosity = VERBOSITY ;
211+ c . Restore = true ;
212+ } ) ;
213+ } ) ;
214+
205215Task ( "diff" )
206216 . IsDependentOn ( "merge" )
207217 . Does ( ( ) =>
@@ -225,32 +235,42 @@ Task ("diff")
225235 MonoApiMarkdown ( "./output/api-info.previous.xml" , "./output/api-info.xml" , "./output/api-diff.md" ) ;
226236} ) ;
227237
238+ Task ( "generate-mapping" )
239+ . IsDependentOn ( "androidxmapper" )
240+ . IsDependentOn ( "merge" )
241+ . Does ( ( ) =>
242+ {
243+ DownloadFile ( BASE_API_INFO_URL , "./output/api-info.previous.xml" ) ;
244+
245+ StartProcess ( ANDROIDX_MAPPER_EXE ,
246+ $ "generate -v " +
247+ $ " -s output/api-info.previous.xml " +
248+ $ " -x output/api-info.xml " +
249+ $ " -j util/AndroidXMapper/Resources/androidx-class-mapping.csv " +
250+ $ " -m util/AndroidXMapper/Resources/override-mapping.csv " +
251+ $ " -o output/androidx-mapping.csv") ;
252+ } ) ;
253+
228254Task ( "merge" )
255+ . IsDependentOn ( "androidxmapper" )
229256 . IsDependentOn ( "libs" )
230257 . Does ( ( ) =>
231258{
232259 EnsureDirectoryExists ( "./output/" ) ;
233260
234- if ( FileExists ( "./output/AndroidX.Merged.dll" ) )
235- DeleteFile ( "./output/AndroidX.Merged.dll" ) ;
236-
237261 var allDlls = GetFiles ( $ "./generated/*/bin/{ BUILD_CONFIG } /{ TF_MONIKER } /Xamarin.*.dll") ;
238262
239263 var mergeDlls = allDlls
240264 . GroupBy ( d => new FileInfo ( d . FullPath ) . Name )
241265 . Select ( g => g . FirstOrDefault ( ) )
242266 . ToList ( ) ;
243267
244- Information ( "Merging: \n - {0}" , string . Join ( "\n - " , mergeDlls ) ) ;
245-
246- ILRepack ( "./output/AndroidX.Merged.dll" , mergeDlls . First ( ) , mergeDlls . Skip ( 1 ) , new ILRepackSettings {
247- CopyAttrs = true ,
248- AllowMultiple = true ,
249- //TargetKind = ILRepack.TargetKind.Dll,
250- Libs = new List < DirectoryPath > {
251- MONODROID_PATH
252- } ,
253- } ) ;
268+ StartProcess ( ANDROIDX_MAPPER_EXE ,
269+ $ "merge" +
270+ $ " -a { string . Join ( " -a " , mergeDlls ) } " +
271+ $ " -o output/AndroidX.Merged.dll " +
272+ $ " -s \" { MONODROID_PATH } \" " +
273+ $ " --inject-assemblyname") ;
254274} ) ;
255275
256276Task ( "ci-setup" )
@@ -301,6 +321,7 @@ Task ("ci")
301321 . IsDependentOn ( "binderate" )
302322 . IsDependentOn ( "nuget" )
303323 . IsDependentOn ( "nuget-validation" )
324+ . IsDependentOn ( "generate-mapping" )
304325 . IsDependentOn ( "diff" )
305326 . IsDependentOn ( "samples" ) ;
306327
0 commit comments