native/tvos/build.cake (65 lines of code) (raw):

DirectoryPath ROOT_PATH = MakeAbsolute(Directory("../..")); DirectoryPath OUTPUT_PATH = MakeAbsolute(ROOT_PATH.Combine("output/native/tvos")); #load "../../scripts/cake/native-shared.cake" #load "../../scripts/cake/xcode.cake" string GetDeploymentTarget(string arch) { return "11.0"; } Task("libSkiaSharp") .IsDependentOn("git-sync-deps") .WithCriteria(IsRunningOnMacOs()) .Does(() => { Build("appletvsimulator", "x86_64", "x64"); Build("appletvos", "arm64", "arm64"); CreateFatFramework(OUTPUT_PATH.Combine("libSkiaSharp")); void Build(string sdk, string arch, string skiaArch) { if (Skip(arch)) return; GnNinja($"tvos/{arch}", "skia modules/skottie", $"target_os='tvos' " + $"target_cpu='{skiaArch}' " + $"min_ios_version='{GetDeploymentTarget(arch)}' " + $"skia_use_harfbuzz=false " + $"skia_use_icu=false " + $"skia_use_metal=true " + $"skia_use_piex=true " + $"skia_use_sfntly=false " + $"skia_use_system_expat=false " + $"skia_use_system_libjpeg_turbo=false " + $"skia_use_system_libpng=false " + $"skia_use_system_libwebp=false " + $"skia_use_system_zlib=false " + $"skia_enable_skottie=true " + $"extra_cflags=[ '-DSKIA_C_DLL', '-DHAVE_ARC4RANDOM_BUF' ] "); RunXCodeBuild("libSkiaSharp/libSkiaSharp.xcodeproj", "libSkiaSharp", sdk, arch, properties: new Dictionary<string, string> { { "TVOS_DEPLOYMENT_TARGET", GetDeploymentTarget(arch) }, }); SafeCopy( $"libSkiaSharp/bin/{CONFIGURATION}/{sdk}/{arch}.xcarchive", OUTPUT_PATH.Combine($"libSkiaSharp/{arch}.xcarchive")); } }); Task("libHarfBuzzSharp") .WithCriteria(IsRunningOnMacOs()) .Does(() => { Build("appletvsimulator", "x86_64"); Build("appletvos", "arm64"); CreateFatFramework(OUTPUT_PATH.Combine("libHarfBuzzSharp")); void Build(string sdk, string arch) { if (Skip(arch)) return; RunXCodeBuild("libHarfBuzzSharp/libHarfBuzzSharp.xcodeproj", "libHarfBuzzSharp", sdk, arch, properties: new Dictionary<string, string> { { "TVOS_DEPLOYMENT_TARGET", GetDeploymentTarget(arch) }, }); SafeCopy( $"libHarfBuzzSharp/bin/{CONFIGURATION}/{sdk}/{arch}.xcarchive", OUTPUT_PATH.Combine($"libHarfBuzzSharp/{arch}.xcarchive")); } }); Task("Default") .IsDependentOn("libSkiaSharp") .IsDependentOn("libHarfBuzzSharp"); RunTarget(TARGET);