@@ -8,6 +8,30 @@ DirectoryPath ANDROID_NDK_HOME = Argument("ndk", EnvironmentVariable("ANDROID_ND
8
8
string SUPPORT_VULKAN_VAR = Argument ( "supportVulkan" , EnvironmentVariable ( "SUPPORT_VULKAN" ) ?? "true" ) ;
9
9
bool SUPPORT_VULKAN = SUPPORT_VULKAN_VAR == "1" || SUPPORT_VULKAN_VAR . ToLower ( ) == "true" ;
10
10
11
+ Information ( "Android NDK Path: {0}" , ANDROID_NDK_HOME ) ;
12
+ Information ( "Building Vulkan: {0}" , SUPPORT_VULKAN ) ;
13
+
14
+ void CheckAlignment ( FilePath so )
15
+ {
16
+ Information ( $ "Making sure that everything is 16 KB aligned...") ;
17
+
18
+ var prebuilt = ANDROID_NDK_HOME . CombineWithFilePath ( "toolchains/llvm/prebuilt" ) . FullPath ;
19
+ var objdump = GetFiles ( $ "{ prebuilt } /*/bin/llvm-objdump*") . FirstOrDefault ( ) ?? throw new Exception ( "Could not find llvm-objdump" ) ;
20
+ RunProcess ( objdump . FullPath , $ "-p { so } ", out var stdout ) ;
21
+
22
+ var loads = stdout
23
+ . Where ( l => l . Trim ( ) . StartsWith ( "LOAD" ) )
24
+ . ToList ( ) ;
25
+
26
+ if ( loads . Any ( l => ! l . Trim ( ) . EndsWith ( "align 2**14" ) ) ) {
27
+ Information ( String . Join ( Environment . NewLine + " " , stdout ) ) ;
28
+ throw new Exception ( $ "{ so } contained a LOAD that was not 16 KB aligned.") ;
29
+ } else {
30
+ Information ( "Everything is 16 KB aligned:" ) ;
31
+ Information ( String . Join ( Environment . NewLine , loads ) ) ;
32
+ }
33
+ }
34
+
11
35
Task ( "libSkiaSharp" )
12
36
. IsDependentOn ( "git-sync-deps" )
13
37
. WithCriteria ( IsRunningOnMacOs ( ) || IsRunningOnWindows ( ) )
@@ -38,12 +62,15 @@ Task("libSkiaSharp")
38
62
$ "skia_use_vulkan={ SUPPORT_VULKAN } ". ToLower ( ) +
39
63
$ "skia_enable_skottie=true " +
40
64
$ "extra_cflags=[ '-DSKIA_C_DLL', '-DHAVE_SYSCALL_GETRANDOM', '-DXML_DEV_URANDOM' ] " +
65
+ $ "extra_ldflags=[ '-Wl,-z,max-page-size=16384' ] " +
41
66
$ "ndk='{ ANDROID_NDK_HOME } ' " +
42
67
$ "ndk_api=21") ;
43
68
69
+ var so = SKIA_PATH . CombineWithFilePath ( $ "out/android/{ arch } /libSkiaSharp.so") ;
44
70
var outDir = OUTPUT_PATH . Combine ( arch ) ;
45
71
EnsureDirectoryExists ( outDir ) ;
46
- CopyFileToDirectory ( SKIA_PATH . CombineWithFilePath ( $ "out/android/{ arch } /libSkiaSharp.so") , outDir ) ;
72
+ CopyFileToDirectory ( so , outDir ) ;
73
+ CheckAlignment ( so ) ;
47
74
}
48
75
} ) ;
49
76
@@ -68,9 +95,11 @@ Task("libHarfBuzzSharp")
68
95
WorkingDirectory = "libHarfBuzzSharp" ,
69
96
} ) ;
70
97
98
+ var so = $ "libHarfBuzzSharp/libs/{ arch } /libHarfBuzzSharp.so";
71
99
var outDir = OUTPUT_PATH . Combine ( arch ) ;
72
100
EnsureDirectoryExists ( outDir ) ;
73
- CopyFileToDirectory ( $ "libHarfBuzzSharp/libs/{ arch } /libHarfBuzzSharp.so", outDir ) ;
101
+ CopyFileToDirectory ( so , outDir ) ;
102
+ CheckAlignment ( so ) ;
74
103
}
75
104
} ) ;
76
105
0 commit comments