IEnumerable <Config> GetAotConfigs() { if (!Directory.Exists(AotOutputDirectory)) { Directory.CreateDirectory(AotOutputDirectory); } var sdkBinDirectory = MonoAndroidHelper.GetOSBinPath(); foreach (var abi in SupportedAbis) { string aotCompiler = ""; string outdir = ""; string mtriple = ""; AndroidTargetArch arch; switch (abi) { case "armeabi-v7a": aotCompiler = Path.Combine(sdkBinDirectory, "cross-arm"); outdir = Path.Combine(AotOutputDirectory, "armeabi-v7a"); mtriple = "armv7-linux-gnueabi"; arch = AndroidTargetArch.Arm; break; case "arm64": case "arm64-v8a": case "aarch64": aotCompiler = Path.Combine(sdkBinDirectory, "cross-arm64"); outdir = Path.Combine(AotOutputDirectory, "arm64-v8a"); mtriple = "aarch64-linux-android"; arch = AndroidTargetArch.Arm64; break; case "x86": aotCompiler = Path.Combine(sdkBinDirectory, "cross-x86"); outdir = Path.Combine(AotOutputDirectory, "x86"); mtriple = "i686-linux-android"; arch = AndroidTargetArch.X86; break; case "x86_64": aotCompiler = Path.Combine(sdkBinDirectory, "cross-x86_64"); outdir = Path.Combine(AotOutputDirectory, "x86_64"); mtriple = "x86_64-linux-android"; arch = AndroidTargetArch.X86_64; break; // case "mips": default: throw new Exception("Unsupported Android target architecture ABI: " + abi); } if (EnableLLVM && !NdkUtil.ValidateNdkPlatform(LogMessage, LogCodedError, AndroidNdkDirectory, arch, enableLLVM:EnableLLVM)) { yield return(Config.Invalid); yield break; } outdir = Path.GetFullPath(outdir); if (!Directory.Exists(outdir)) { Directory.CreateDirectory(outdir); } // dont use a full path if the outdir is withing the WorkingDirectory. if (outdir.StartsWith(WorkingDirectory, StringComparison.InvariantCultureIgnoreCase)) { outdir = outdir.Replace(WorkingDirectory + Path.DirectorySeparatorChar, string.Empty); } int level = 0; string toolPrefix = EnableLLVM ? NdkUtil.GetNdkToolPrefix(AndroidNdkDirectory, arch, level = GetNdkApiLevel(AndroidNdkDirectory, AndroidApiLevel, arch)) : Path.Combine(AndroidBinUtilsDirectory, $"{NdkUtil.GetArchDirName (arch)}-"); var toolchainPath = toolPrefix.Substring(0, toolPrefix.LastIndexOf(Path.DirectorySeparatorChar)); var ldFlags = string.Empty; if (EnableLLVM) { if (string.IsNullOrEmpty(AndroidNdkDirectory)) { yield return(Config.Invalid); yield break; } string androidLibPath = string.Empty; try { androidLibPath = NdkUtil.GetNdkPlatformLibPath(AndroidNdkDirectory, arch, level); } catch (InvalidOperationException ex) { Diagnostic.Error(5101, ex.Message); } string toolchainLibDir; if (NdkUtil.UsingClangNDK) { toolchainLibDir = GetNdkToolchainLibraryDir(toolchainPath, arch); } else { toolchainLibDir = GetNdkToolchainLibraryDir(toolchainPath); } var libs = new List <string>(); if (NdkUtil.UsingClangNDK) { libs.Add($"-L{toolchainLibDir}"); libs.Add($"-L{androidLibPath}"); if (arch == AndroidTargetArch.Arm) { // Needed for -lunwind to work string compilerLibDir = Path.Combine(toolchainPath, "..", "sysroot", "usr", "lib", NdkUtil.GetArchDirName(arch)); libs.Add($"-L{compilerLibDir}"); } } libs.Add($"\\\"{Path.Combine (toolchainLibDir, "libgcc.a")}\\\""); libs.Add($"\\\"{Path.Combine (androidLibPath, "libc.so")}\\\""); libs.Add($"\\\"{Path.Combine (androidLibPath, "libm.so")}\\\""); ldFlags = string.Join(";", libs); } foreach (var assembly in ResolvedAssemblies) { string outputFile = Path.Combine(outdir, string.Format("libaot-{0}.so", Path.GetFileName(assembly.ItemSpec))); string seqpointsFile = Path.Combine(outdir, string.Format("{0}.msym", Path.GetFileName(assembly.ItemSpec))); string tempDir = Path.Combine(outdir, Path.GetFileName(assembly.ItemSpec)); if (!Directory.Exists(tempDir)) { Directory.CreateDirectory(tempDir); } List <string> aotOptions = new List <string> (); if (Profiles != null && Profiles.Length > 0) { aotOptions.Add("profile-only"); foreach (var p in Profiles) { var fp = Path.GetFullPath(p.ItemSpec); aotOptions.Add($"profile={fp}"); } } if (!string.IsNullOrEmpty(AotAdditionalArguments)) { aotOptions.Add(AotAdditionalArguments); } if (sequencePointsMode == SequencePointsMode.Offline) { aotOptions.Add($"msym-dir={outdir}"); } if (AotMode != AotMode.Normal) { aotOptions.Add(AotMode.ToString().ToLowerInvariant()); } aotOptions.Add($"outfile={outputFile}"); aotOptions.Add("asmwriter"); aotOptions.Add($"mtriple={mtriple}"); aotOptions.Add($"tool-prefix={toolPrefix}"); aotOptions.Add($"llvm-path={sdkBinDirectory}"); aotOptions.Add($"temp-path={tempDir}"); aotOptions.Add($"ld-flags={ldFlags}"); // we need to quote the entire --aot arguments here to make sure it is parsed // on windows as one argument. Otherwise it will be split up into multiple // values, which wont work. string aotOptionsStr = (EnableLLVM ? "--llvm " : "") + $"\"--aot={string.Join (",", aotOptions)}\""; if (!string.IsNullOrEmpty(ExtraAotOptions)) { aotOptionsStr += (aotOptions.Count > 0 ? " " : "") + ExtraAotOptions; } // Due to a Monodroid MSBuild bug we can end up with paths to assemblies that are not in the intermediate // assembly directory (typically obj/assemblies). This can lead to problems with the Mono loader not being // able to find their dependency laters, since framework assemblies are stored in different directories. // This can happen when linking is disabled (AndroidLinkMode=None). Workaround this problem by resolving // the paths to the right assemblies manually. var resolvedPath = Path.GetFullPath(assembly.ItemSpec); var intermediateAssemblyPath = Path.Combine(IntermediateAssemblyDir, Path.GetFileName(assembly.ItemSpec)); if (LinkMode.ToLowerInvariant() == "none") { if (!resolvedPath.Contains(IntermediateAssemblyDir) && File.Exists(intermediateAssemblyPath)) { resolvedPath = intermediateAssemblyPath; } } var assembliesPath = Path.GetFullPath(Path.GetDirectoryName(resolvedPath)); var assemblyPath = Path.GetFullPath(resolvedPath); yield return(new Config(assembliesPath, aotCompiler, aotOptionsStr, assemblyPath, outputFile, Path.Combine(tempDir, "response.txt"))); } } }
public BindDefinition(object targetInstance, Member targetMember, string sourceProperty, LinkMode linkMode) { this.linkMode = linkMode; TargetInstance = targetInstance; TargetMember = targetMember; SourceProperty = sourceProperty; }
protected override string GenerateCommandLineCommands() { var args = GenerateCommandLineArguments(); List <string> unescapedArgs = new List <string> (); TargetArchitecture architectures; if (string.IsNullOrEmpty(Architectures) || !Enum.TryParse(Architectures, out architectures)) { architectures = TargetArchitecture.Default; } if (architectures == TargetArchitecture.ARMv6) { Log.LogError(MSBStrings.E0053); return(null); } args.AddQuotedLine((SdkIsSimulator ? "--sim=" : "--dev=") + Path.GetFullPath(AppBundleDir)); args.AddQuotedLine($"--executable={ExecutableName}"); if (IsAppExtension) { args.AddLine("--extension"); } if (Debug) { if (FastDev && !SdkIsSimulator) { args.AddLine("--fastdev"); } } if (LinkerDumpDependencies) { args.AddLine("--linkerdumpdependencies"); } if (!string.IsNullOrEmpty(Interpreter)) { args.AddLine($"--interpreter={Interpreter}"); } switch (LinkMode.ToLowerInvariant()) { case "sdkonly": args.AddLine("--linksdkonly"); break; case "none": args.AddLine("--nolink"); break; } args.AddQuotedLine($"--sdk={SdkVersion}"); if (UseFloat32 /* We want to compile 32-bit floating point code to use 32-bit floating point operations */) { args.AddLine("--aot-options=-O=float32"); } else { args.AddLine("--aot-options=-O=-float32"); } if (LinkDescriptions != null) { foreach (var desc in LinkDescriptions) { args.AddQuotedLine($"--xml={desc.ItemSpec}"); } } if (EnableBitcode) { switch (Platform) { case ApplePlatform.WatchOS: args.AddLine("--bitcode=full"); break; case ApplePlatform.TVOS: args.AddLine("--bitcode=asmonly"); break; default: throw new InvalidOperationException(string.Format("Bitcode is currently not supported on {0}.", Platform)); } } string thumb = UseThumb && UseLlvm ? "+thumb2" : ""; string llvm = UseLlvm ? "+llvm" : ""; string abi = ""; if (SdkIsSimulator) { if (architectures.HasFlag(TargetArchitecture.i386)) { abi += (abi.Length > 0 ? "," : "") + "i386"; } if (architectures.HasFlag(TargetArchitecture.x86_64)) { abi += (abi.Length > 0 ? "," : "") + "x86_64"; } if (string.IsNullOrEmpty(abi)) { architectures = TargetArchitecture.i386; abi = "i386"; } } else { if (architectures == TargetArchitecture.Default) { architectures = TargetArchitecture.ARMv7; } if (architectures.HasFlag(TargetArchitecture.ARMv7)) { abi += (abi.Length > 0 ? "," : "") + "armv7" + llvm + thumb; } if (architectures.HasFlag(TargetArchitecture.ARMv7s)) { abi += (abi.Length > 0 ? "," : "") + "armv7s" + llvm + thumb; } if (architectures.HasFlag(TargetArchitecture.ARM64)) { // Note: ARM64 does not have thumb. abi += (abi.Length > 0 ? "," : "") + "arm64" + llvm; } if (architectures.HasFlag(TargetArchitecture.ARMv7k)) { abi += (abi.Length > 0 ? "," : "") + "armv7k" + llvm; } if (architectures.HasFlag(TargetArchitecture.ARM64_32)) { abi += (abi.Length > 0 ? "," : "") + "arm64_32" + llvm; } if (string.IsNullOrEmpty(abi)) { abi = "armv7" + llvm + thumb; } } // Output the CompiledArchitectures CompiledArchitectures = architectures.ToString(); args.AddLine($"--abi={abi}"); // output symbols to preserve when stripping args.AddQuotedLine($"--symbollist={Path.GetFullPath (SymbolsList)}"); // don't have mtouch generate the dsyms... args.AddLine("--dsym=no"); var gcc = new GccOptions(); if (!string.IsNullOrEmpty(ExtraArgs)) { var extraArgs = CommandLineArgumentBuilder.Parse(ExtraArgs); var target = MainAssembly.ItemSpec; string projectDir; if (ProjectDir.StartsWith("~/", StringComparison.Ordinal)) { // Note: Since the Visual Studio plugin doesn't know the user's home directory on the Mac build host, // it simply uses paths relative to "~/". Expand these paths to their full path equivalents. var home = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); projectDir = Path.Combine(home, ProjectDir.Substring(2)); } else { projectDir = ProjectDir; } var customTags = new Dictionary <string, string> (StringComparer.OrdinalIgnoreCase) { { "projectdir", projectDir }, // Apparently msbuild doesn't propagate the solution path, so we can't get it. // { "solutiondir", proj.ParentSolution != null ? proj.ParentSolution.BaseDirectory : proj.BaseDirectory }, { "appbundledir", AppBundleDir }, { "targetpath", Path.Combine(Path.GetDirectoryName(target), Path.GetFileName(target)) }, { "targetdir", Path.GetDirectoryName(target) }, { "targetname", Path.GetFileName(target) }, { "targetext", Path.GetExtension(target) }, }; for (int i = 0; i < extraArgs.Length; i++) { var argument = extraArgs[i]; int startIndex = 0; while (argument.Length > startIndex && argument[startIndex] == '-') { startIndex++; } int endIndex = startIndex; while (endIndex < argument.Length && argument[endIndex] != '=') { endIndex++; } int length = endIndex - startIndex; if (length == 9 && string.CompareOrdinal(argument, startIndex, "gcc_flags", 0, 9) == 0) { // user-defined -gcc_flags argument string flags = null; if (endIndex < extraArgs[i].Length) { flags = Unquote(argument, endIndex + 1); } else if (i + 1 < extraArgs.Length) { flags = extraArgs[++i]; } if (!string.IsNullOrEmpty(flags)) { var gccArgs = CommandLineArgumentBuilder.Parse(flags); for (int j = 0; j < gccArgs.Length; j++) { gcc.Arguments.Add(StringParserService.Parse(gccArgs[j], customTags)); } } } else { // other user-defined mtouch arguments unescapedArgs.Add(StringParserService.Parse(argument, customTags)); } } } BuildNativeReferenceFlags(gcc); gcc.Arguments.AddQuoted(LinkNativeCodeTaskBase.GetEmbedEntitlementsInExecutableLinkerFlags(CompiledEntitlements)); foreach (var framework in gcc.Frameworks) { args.AddQuotedLine($"--framework={framework}"); } foreach (var framework in gcc.WeakFrameworks) { args.AddQuotedLine($"--weak-framework={framework}"); } if (gcc.Cxx) { args.AddLine("--cxx"); } if (gcc.Arguments.Length > 0) { unescapedArgs.Add($"--gcc_flags={gcc.Arguments.ToString ()}"); } foreach (var asm in References) { if (IsFrameworkItem(asm)) { args.AddQuotedLine($"--reference={ResolveFrameworkFile (asm.ItemSpec)}"); } else { args.AddQuotedLine($"--reference={Path.GetFullPath (asm.ItemSpec)}"); } } foreach (var ext in AppExtensionReferences) { args.AddQuotedLine($"--app-extension={Path.GetFullPath (ext.ItemSpec)}"); } if (!string.IsNullOrWhiteSpace(License)) { args.AddLine($"--license={License}"); } return(CreateResponseFile(args, unescapedArgs)); }
public Link(ref ptr <OutBuf> Out = default, ref ptr <sym.Symbols> Syms = default, ref ptr <sys.Arch> Arch = default, long Debugvlog = default, ref ptr <bufio.Writer> Bso = default, bool Loaded = default, bool IsELF = default, objabi.HeadType HeadType = default, bool linkShared = default, LinkMode LinkMode = default, BuildMode BuildMode = default, bool canUsePlugins = default, bool compressDWARF = default, ref ptr <sym.Symbol> Tlsg = default, slice <@string> Libdir = default, slice <ptr <sym.Library> > Library = default, map <@string, ptr <sym.Library> > LibraryByPkg = default, slice <Shlib> Shlibs = default, long Tlsoffset = default, slice <ptr <sym.Symbol> > Textp = default, slice <ptr <sym.Symbol> > Filesyms = default, ref ptr <sym.Symbol> Moduledata = default, map <@string, @string> PackageFile = default, map <@string, @string> PackageShlib = default, slice <ptr <sym.Symbol> > tramps = default, map <unresolvedSymKey, bool> unresolvedSymSet = default, map <ptr <sym.Symbol>, ptr <sym.Symbol> > Reachparent = default, slice <ptr <sym.CompilationUnit> > compUnits = default, ref ptr <sym.CompilationUnit> runtimeCU = default, slice <byte> relocbuf = default, ref ptr <loader.Loader> loader = default, slice <cgodata> cgodata = default, map <@string, bool> cgo_export_static = default, map <@string, bool> cgo_export_dynamic = default) { this.Out = Out; this.Syms = Syms; this.Arch = Arch; this.Debugvlog = Debugvlog; this.Bso = Bso; this.Loaded = Loaded; this.IsELF = IsELF; this.HeadType = HeadType; this.linkShared = linkShared; this.LinkMode = LinkMode; this.BuildMode = BuildMode; this.canUsePlugins = canUsePlugins; this.compressDWARF = compressDWARF; this.Tlsg = Tlsg; this.Libdir = Libdir; this.Library = Library; this.LibraryByPkg = LibraryByPkg; this.Shlibs = Shlibs; this.Tlsoffset = Tlsoffset; this.Textp = Textp; this.Filesyms = Filesyms; this.Moduledata = Moduledata; this.PackageFile = PackageFile; this.PackageShlib = PackageShlib; this.tramps = tramps; this.unresolvedSymSet = unresolvedSymSet; this.Reachparent = Reachparent; this.compUnits = compUnits; this.runtimeCU = runtimeCU; this.relocbuf = relocbuf; this.loader = loader; this.cgodata = cgodata; this.cgo_export_static = cgo_export_static; this.cgo_export_dynamic = cgo_export_dynamic; }
/// <summary> /// Sets the module's link mode /// </summary> /// <seealso cref="LinkMode"/> public MarkNavbarItemsAsActive WithLinkMode(LinkMode linkMode) { LinkMode = linkMode; return(this); }
IEnumerable <Config> GetAotConfigs() { if (!Directory.Exists(AotOutputDirectory)) { Directory.CreateDirectory(AotOutputDirectory); } var sdkBinDirectory = MonoAndroidHelper.GetOSBinPath(); var abis = SupportedAbis.Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries); foreach (var abi in abis) { string aotCompiler = ""; string outdir = ""; string mtriple = ""; AndroidTargetArch arch; switch (abi) { case "armeabi-v7a": aotCompiler = Path.Combine(sdkBinDirectory, "cross-arm"); outdir = Path.Combine(AotOutputDirectory, "armeabi-v7a"); mtriple = "armv7-linux-gnueabi"; arch = AndroidTargetArch.Arm; break; case "arm64": case "arm64-v8a": case "aarch64": aotCompiler = Path.Combine(sdkBinDirectory, "cross-arm64"); outdir = Path.Combine(AotOutputDirectory, "arm64-v8a"); mtriple = "aarch64-linux-android"; arch = AndroidTargetArch.Arm64; break; case "x86": aotCompiler = Path.Combine(sdkBinDirectory, "cross-x86"); outdir = Path.Combine(AotOutputDirectory, "x86"); mtriple = "i686-linux-android"; arch = AndroidTargetArch.X86; break; case "x86_64": aotCompiler = Path.Combine(sdkBinDirectory, "cross-x86_64"); outdir = Path.Combine(AotOutputDirectory, "x86_64"); mtriple = "x86_64-linux-android"; arch = AndroidTargetArch.X86_64; break; // case "mips": default: throw new Exception("Unsupported Android target architecture ABI: " + abi); } if (!NdkUtil.ValidateNdkPlatform(Log, AndroidNdkDirectory, arch, enableLLVM:EnableLLVM)) { yield return(Config.Invalid); yield break; } if (!ValidateAotConfiguration(Log, arch, EnableLLVM)) { yield return(Config.Invalid); yield break; } outdir = Path.GetFullPath(outdir); if (!Directory.Exists(outdir)) { Directory.CreateDirectory(outdir); } int level = GetNdkApiLevel(AndroidNdkDirectory, AndroidApiLevel, arch); string toolPrefix = NdkUtil.GetNdkToolPrefix(AndroidNdkDirectory, arch, level); var toolchainPath = toolPrefix.Substring(0, toolPrefix.LastIndexOf(Path.DirectorySeparatorChar)); var ldFlags = string.Empty; if (EnableLLVM) { string androidLibPath = string.Empty; try { androidLibPath = NdkUtil.GetNdkPlatformLibPath(AndroidNdkDirectory, arch, level); } catch (InvalidOperationException ex) { Diagnostic.Error(5101, ex.Message); } string toolchainLibDir; if (NdkUtil.UsingClangNDK) { toolchainLibDir = GetNdkToolchainLibraryDir(toolchainPath, arch); } else { toolchainLibDir = GetNdkToolchainLibraryDir(toolchainPath); } var libs = new List <string>(); if (NdkUtil.UsingClangNDK) { libs.Add($"-L{GetShortPath (toolchainLibDir)}"); libs.Add($"-L{GetShortPath (androidLibPath)}"); if (arch == AndroidTargetArch.Arm) { // Needed for -lunwind to work string compilerLibDir = Path.Combine(toolchainPath, "..", "sysroot", "usr", "lib", NdkUtil.GetArchDirName(arch)); libs.Add($"-L{GetShortPath (compilerLibDir)}"); } } libs.Add(GetShortPath(Path.Combine(toolchainLibDir, "libgcc.a"))); libs.Add(GetShortPath(Path.Combine(androidLibPath, "libc.so"))); libs.Add(GetShortPath(Path.Combine(androidLibPath, "libm.so"))); ldFlags = string.Join(";", libs); } foreach (var assembly in ResolvedAssemblies) { string outputFile = Path.Combine(outdir, string.Format("libaot-{0}.so", Path.GetFileName(assembly.ItemSpec))); string seqpointsFile = Path.Combine(outdir, string.Format("{0}.msym", Path.GetFileName(assembly.ItemSpec))); string tempDir = Path.Combine(outdir, Path.GetFileName(assembly.ItemSpec)); if (!Directory.Exists(tempDir)) { Directory.CreateDirectory(tempDir); } List <string> aotOptions = new List <string> (); if (!string.IsNullOrEmpty(AotAdditionalArguments)) { aotOptions.Add(AotAdditionalArguments); } if (sequencePointsMode == SequencePointsMode.Offline) { aotOptions.Add("msym-dir=" + GetShortPath(outdir)); } if (AotMode != AotMode.Normal) { aotOptions.Add(AotMode.ToString().ToLowerInvariant()); } aotOptions.Add("outfile=" + GetShortPath(outputFile)); aotOptions.Add("asmwriter"); aotOptions.Add("mtriple=" + mtriple); aotOptions.Add("tool-prefix=" + GetShortPath(toolPrefix)); aotOptions.Add("ld-flags=" + ldFlags); aotOptions.Add("llvm-path=" + GetShortPath(sdkBinDirectory)); aotOptions.Add("temp-path=" + GetShortPath(tempDir)); string aotOptionsStr = (EnableLLVM ? "--llvm " : "") + "--aot=" + string.Join(",", aotOptions); if (!string.IsNullOrEmpty(ExtraAotOptions)) { aotOptionsStr += (aotOptions.Count > 0 ? "," : "") + ExtraAotOptions; } // Due to a Monodroid MSBuild bug we can end up with paths to assemblies that are not in the intermediate // assembly directory (typically obj/assemblies). This can lead to problems with the Mono loader not being // able to find their dependency laters, since framework assemblies are stored in different directories. // This can happen when linking is disabled (AndroidLinkMode=None). Workaround this problem by resolving // the paths to the right assemblies manually. var resolvedPath = Path.GetFullPath(assembly.ItemSpec); var intermediateAssemblyPath = Path.Combine(IntermediateAssemblyDir, Path.GetFileName(assembly.ItemSpec)); if (LinkMode.ToLowerInvariant() == "none") { if (!resolvedPath.Contains(IntermediateAssemblyDir) && File.Exists(intermediateAssemblyPath)) { resolvedPath = intermediateAssemblyPath; } } var assembliesPath = Path.GetFullPath(Path.GetDirectoryName(resolvedPath)); var assemblyPath = QuoteFileName(Path.GetFullPath(resolvedPath)); yield return(new Config(assembliesPath, QuoteFileName(aotCompiler), aotOptionsStr, assemblyPath, outputFile)); } } }
/// <summary> /// 打开视频 /// </summary> /// <param name="Channel">打开视频的通道</param> /// <param name="Stream">视频的流类型</param> /// <param name="Mode">连接方式</param> /// <returns>true表示成功,false表示失败</returns> public bool DvcOpenRealPlay(byte videoChannel, StreamType Stream, LinkMode Mode) { if (DvcUserID < 0) throw new InvalidOperationException(); if (videoChannel <= 0 || videoChannel > DvcInfo.byChanNum) throw new ArgumentOutOfRangeException(); DvcRealDataCallBackHandle = new HCSDK.HCNetSDK.RealDataCallBack_V30(DvcRealDataCallback); DvcCliInfo.hPlayWnd = this.Handle; DvcCliInfo.lChannel = videoChannel; DvcCliInfo.lLinkMode = ((int)Stream) | ((int)Mode); DvcPlayHandle = HCSDK.HCNetSDK.NET_DVR_RealPlay_V30(DvcUserID, ref DvcCliInfo, DvcRealDataCallBackHandle, IntPtr.Zero, true); this.isRealPlaying = true; if (DvcPlayHandle < 0) return false; else { //Default Close Sound HCSDK.HCNetSDK.NET_DVR_CloseSoundShare(DvcPlayHandle); this.videoChannel = videoChannel; OnOpen(); return true; } }
/// <summary> /// Turns all URLs and e-mail addresses into clickable links. /// </summary> /// <param name="htmlAttributes">Adds HTML attributes to the links.</param> /// <param name="textReplacer">Lambda expression to change what text is shown inside the link tag.</param> /// <param name="linkMode">Option to limit what should be linked.</param> public static string AutoLink(this string text, IDictionary <string, string> htmlAttributes = null, Func <string, string> textReplacer = null, LinkMode linkMode = LinkMode.All) { textReplacer = textReplacer ?? (x => x); var replacer = new AutoLinkReplacer(htmlAttributes, textReplacer, linkMode); return(replacer.Replace(text)); }
public AutoLinkReplacer(IDictionary <string, string> dictionary, Func <string, string> textReplacer, LinkMode linkMode) { LinkMode = linkMode; HtmlAttributes = dictionary; TextReplacer = textReplacer; }
public static void Eval(Leaf leaf, LinkMsg msg, TCPPacketReader packet, ulong time, LinkMode mode) { switch (msg) { case LinkMsg.MSG_LINK_LEAF_AVATAR: break; case LinkMsg.MSG_LINK_LEAF_CUSTOM_NAME: break; case LinkMsg.MSG_LINK_LEAF_EMOTE_TEXT: break; case LinkMsg.MSG_LINK_LEAF_LOGIN: LeafLogin(leaf, packet, time, mode); break; case LinkMsg.MSG_LINK_LEAF_PERSONAL_MESSAGE: break; case LinkMsg.MSG_LINK_LEAF_PRIVATE_IGNORED: break; case LinkMsg.MSG_LINK_LEAF_PRIVATE_TEXT: break; case LinkMsg.MSG_LINK_LEAF_PUBLIC_TEXT: break; case LinkMsg.MSG_LINK_LEAF_USERLIST_END: break; case LinkMsg.MSG_LINK_LEAF_USERLIST_ITEM: break; } }
private static void LeafLogin(Leaf leaf, TCPPacketReader packet, ulong time, LinkMode mode) { }
private async Task AddContentItemsAsync(NavigationBuilder listTypeMenu, LinkMode nodeLinkMode) { foreach (var ci in await getContentItemsAsync()) { var cim = await _contentManager.PopulateAspectAsync <ContentItemMetadata>(ci); switch (nodeLinkMode) { case LinkMode.Admin: if (cim.AdminRouteValues.Any() && ci.DisplayText != null) { listTypeMenu.Add(new LocalizedString(ci.DisplayText, ci.DisplayText), m => { m.Action(cim.AdminRouteValues["Action"] as string, cim.AdminRouteValues["Controller"] as string, cim.AdminRouteValues); m.Resource(ci); m.Priority(_node.Priority); m.Position(_node.Position); m.LocalNav(); AddPrefixToClasses(_node.IconForContentItems).ToList().ForEach(c => m.AddClass(c)); m.Permission(ContentTypePermissionsHelper.CreateDynamicPermission( ContentTypePermissionsHelper.PermissionTemplates[CommonPermissions.EditContent.Name], _contentType)); }); } break; case LinkMode.Display: if (cim.DisplayRouteValues.Any() && ci.DisplayText != null) { listTypeMenu.Add(new LocalizedString(ci.DisplayText, ci.DisplayText), m => { m.Action(cim.DisplayRouteValues["Action"] as string, cim.DisplayRouteValues["Controller"] as string, cim.DisplayRouteValues); m.Resource(ci); m.Priority(_node.Priority); m.Position(_node.Position); m.LocalNav(); AddPrefixToClasses(_node.IconForContentItems).ToList().ForEach(c => m.AddClass(c)); m.Permission(ContentTypePermissionsHelper.CreateDynamicPermission( ContentTypePermissionsHelper.PermissionTemplates[CommonPermissions.EditContent.Name], _contentType)); }); } break; case LinkMode.Edit: if (cim.EditorRouteValues.Any() && ci.DisplayText != null) { listTypeMenu.Add(new LocalizedString(ci.DisplayText, ci.DisplayText), m => { m.Action(cim.EditorRouteValues["Action"] as string, cim.EditorRouteValues["Controller"] as string, cim.EditorRouteValues); m.Resource(ci); m.Priority(_node.Priority); m.Position(_node.Position); m.LocalNav(); AddPrefixToClasses(_node.IconForContentItems).ToList().ForEach(c => m.AddClass(c)); m.Permission(ContentTypePermissionsHelper.CreateDynamicPermission( ContentTypePermissionsHelper.PermissionTemplates[CommonPermissions.EditContent.Name], _contentType)); }); } break; case LinkMode.Create: if (cim.CreateRouteValues.Any() && ci.DisplayText != null) { listTypeMenu.Add(new LocalizedString(ci.DisplayText, ci.DisplayText), m => { m.Action(cim.CreateRouteValues["Action"] as string, cim.CreateRouteValues["Controller"] as string, cim.CreateRouteValues); m.Resource(ci); m.Priority(_node.Priority); m.Position(_node.Position); m.LocalNav(); AddPrefixToClasses(_node.IconForContentItems).ToList().ForEach(c => m.AddClass(c)); m.Permission(ContentTypePermissionsHelper.CreateDynamicPermission( ContentTypePermissionsHelper.PermissionTemplates[CommonPermissions.EditContent.Name], _contentType)); }); } break; default: throw new ArgumentOutOfRangeException(nameof(nodeLinkMode), nodeLinkMode, null); } } }
public AutoLinkReplacer(IDictionary<string, string> dictionary, Func<string, string> textReplacer, LinkMode linkMode) { LinkMode = linkMode; HtmlAttributes = dictionary; TextReplacer = textReplacer; }
/// <summary> /// Turns all URLs and e-mail addresses into clickable links. /// </summary> /// <param name="htmlAttributes">Adds HTML attributes to the links.</param> /// <param name="textReplacer">Lambda expression to change what text is shown inside the link tag.</param> /// <param name="linkMode">Option to limit what should be linked.</param> public static string AutoLink(this string text, IDictionary<string, string> htmlAttributes=null, Func<string, string> textReplacer=null, LinkMode linkMode=LinkMode.All) { textReplacer = textReplacer ?? (x => x); var replacer = new AutoLinkReplacer(htmlAttributes, textReplacer, linkMode); return replacer.Replace(text); }
protected override string GenerateCommandLineCommands() { var args = new CommandLineArgumentBuilder(); List <string> unescapedArgs = new List <string> (); TargetArchitecture architectures; bool msym; if (string.IsNullOrEmpty(Architectures) || !Enum.TryParse(Architectures, out architectures)) { architectures = TargetArchitecture.Default; } if (architectures == TargetArchitecture.ARMv6) { Log.LogError("Target architecture ARMv6 is no longer supported in Xamarin.iOS. Please select a supported architecture."); return(null); } if (!string.IsNullOrEmpty(IntermediateOutputPath)) { Directory.CreateDirectory(IntermediateOutputPath); args.AddQuotedLine($"--cache={Path.GetFullPath (IntermediateOutputPath)}"); } args.AddQuotedLine((SdkIsSimulator ? "--sim=" : "--dev=") + Path.GetFullPath(AppBundleDir)); if (AppleSdkSettings.XcodeVersion.Major >= 5 && IPhoneSdks.MonoTouch.Version.CompareTo(new IPhoneSdkVersion(6, 3, 7)) < 0) { args.AddLine("--compiler=clang"); } args.AddQuotedLine($"--executable={ExecutableName}"); if (IsAppExtension) { args.AddLine("--extension"); } if (Debug) { if (FastDev && !SdkIsSimulator) { args.AddLine("--fastdev"); } args.AddLine("--debug"); } if (Profiling) { args.AddLine("--profiling"); } if (LinkerDumpDependencies) { args.AddLine("--linkerdumpdependencies"); } if (EnableSGenConc) { args.AddLine("--sgen-conc"); } if (!string.IsNullOrEmpty(Interpreter)) { args.AddLine($"--interpreter={Interpreter}"); } switch (LinkMode.ToLowerInvariant()) { case "sdkonly": args.AddLine("--linksdkonly"); break; case "none": args.AddLine("--nolink"); break; } if (!string.IsNullOrEmpty(I18n)) { args.AddQuotedLine($"--i18n={I18n}"); } args.AddQuotedLine($"--sdkroot={SdkRoot}"); args.AddQuotedLine($"--sdk={SdkVersion}"); if (!minimumOSVersion.IsUseDefault) { args.AddQuotedLine($"--targetver={minimumOSVersion.ToString ()}"); } if (UseFloat32 /* We want to compile 32-bit floating point code to use 32-bit floating point operations */) { args.AddLine("--aot-options=-O=float32"); } else { args.AddLine("--aot-options=-O=-float32"); } if (!EnableGenericValueTypeSharing) { args.AddLine("--gsharedvt=false"); } if (LinkDescriptions != null) { foreach (var desc in LinkDescriptions) { args.AddQuotedLine($"--xml={desc.ItemSpec}"); } } if (EnableBitcode) { switch (Framework) { case ApplePlatform.WatchOS: args.AddLine("--bitcode=full"); break; case ApplePlatform.TVOS: args.AddLine("--bitcode=asmonly"); break; default: throw new InvalidOperationException(string.Format("Bitcode is currently not supported on {0}.", Framework)); } } if (!string.IsNullOrEmpty(HttpClientHandler)) { args.AddLine($"--http-message-handler={HttpClientHandler}"); } string thumb = UseThumb && UseLlvm ? "+thumb2" : ""; string llvm = UseLlvm ? "+llvm" : ""; string abi = ""; if (SdkIsSimulator) { if (architectures.HasFlag(TargetArchitecture.i386)) { abi += (abi.Length > 0 ? "," : "") + "i386"; } if (architectures.HasFlag(TargetArchitecture.x86_64)) { abi += (abi.Length > 0 ? "," : "") + "x86_64"; } if (string.IsNullOrEmpty(abi)) { architectures = TargetArchitecture.i386; abi = "i386"; } } else { if (architectures == TargetArchitecture.Default) { architectures = TargetArchitecture.ARMv7; } if (architectures.HasFlag(TargetArchitecture.ARMv7)) { abi += (abi.Length > 0 ? "," : "") + "armv7" + llvm + thumb; } if (architectures.HasFlag(TargetArchitecture.ARMv7s)) { abi += (abi.Length > 0 ? "," : "") + "armv7s" + llvm + thumb; } if (architectures.HasFlag(TargetArchitecture.ARM64)) { // Note: ARM64 does not have thumb. abi += (abi.Length > 0 ? "," : "") + "arm64" + llvm; } if (architectures.HasFlag(TargetArchitecture.ARMv7k)) { abi += (abi.Length > 0 ? "," : "") + "armv7k" + llvm; } if (architectures.HasFlag(TargetArchitecture.ARM64_32)) { abi += (abi.Length > 0 ? "," : "") + "arm64_32" + llvm; } if (string.IsNullOrEmpty(abi)) { abi = "armv7" + llvm + thumb; } } // Output the CompiledArchitectures CompiledArchitectures = architectures.ToString(); args.AddLine($"--abi={abi}"); // output symbols to preserve when stripping args.AddQuotedLine($"--symbollist={Path.GetFullPath (SymbolsList)}"); // don't have mtouch generate the dsyms... args.AddLine("--dsym=no"); if (!string.IsNullOrEmpty(ArchiveSymbols) && bool.TryParse(ArchiveSymbols.Trim(), out msym)) { args.AddLine($"--msym={(msym ? "yes" : "no")}"); } var gcc = new GccOptions(); if (!string.IsNullOrEmpty(ExtraArgs)) { var extraArgs = CommandLineArgumentBuilder.Parse(ExtraArgs); var target = MainAssembly.ItemSpec; string projectDir; if (ProjectDir.StartsWith("~/", StringComparison.Ordinal)) { // Note: Since the Visual Studio plugin doesn't know the user's home directory on the Mac build host, // it simply uses paths relative to "~/". Expand these paths to their full path equivalents. var home = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); projectDir = Path.Combine(home, ProjectDir.Substring(2)); } else { projectDir = ProjectDir; } var customTags = new Dictionary <string, string> (StringComparer.OrdinalIgnoreCase) { { "projectdir", projectDir }, // Apparently msbuild doesn't propagate the solution path, so we can't get it. // { "solutiondir", proj.ParentSolution != null ? proj.ParentSolution.BaseDirectory : proj.BaseDirectory }, { "appbundledir", AppBundleDir }, { "targetpath", Path.Combine(Path.GetDirectoryName(target), Path.GetFileName(target)) }, { "targetdir", Path.GetDirectoryName(target) }, { "targetname", Path.GetFileName(target) }, { "targetext", Path.GetExtension(target) }, }; for (int i = 0; i < extraArgs.Length; i++) { var argument = extraArgs[i]; int startIndex = 0; while (argument.Length > startIndex && argument[startIndex] == '-') { startIndex++; } int endIndex = startIndex; while (endIndex < argument.Length && argument[endIndex] != '=') { endIndex++; } int length = endIndex - startIndex; if (length == 9 && string.CompareOrdinal(argument, startIndex, "gcc_flags", 0, 9) == 0) { // user-defined -gcc_flags argument string flags = null; if (endIndex < extraArgs[i].Length) { flags = Unquote(argument, endIndex + 1); } else if (i + 1 < extraArgs.Length) { flags = extraArgs[++i]; } if (!string.IsNullOrEmpty(flags)) { var gccArgs = CommandLineArgumentBuilder.Parse(flags); for (int j = 0; j < gccArgs.Length; j++) { gcc.Arguments.Add(StringParserService.Parse(gccArgs[j], customTags)); } } } else { // other user-defined mtouch arguments unescapedArgs.Add(StringParserService.Parse(argument, customTags)); } } } BuildNativeReferenceFlags(gcc); BuildEntitlementFlags(gcc); foreach (var framework in gcc.Frameworks) { args.AddQuotedLine($"--framework={framework}"); } foreach (var framework in gcc.WeakFrameworks) { args.AddQuotedLine($"--weak-framework={framework}"); } if (gcc.Cxx) { args.AddLine("--cxx"); } if (gcc.Arguments.Length > 0) { unescapedArgs.Add($"--gcc_flags={gcc.Arguments.ToString ()}"); } foreach (var asm in References) { if (IsFrameworkItem(asm)) { args.AddQuotedLine($"-r={ResolveFrameworkFile (asm.ItemSpec)}"); } else { args.AddQuotedLine($"-r={Path.GetFullPath (asm.ItemSpec)}"); } } foreach (var ext in AppExtensionReferences) { args.AddQuotedLine($"--app-extension={Path.GetFullPath (ext.ItemSpec)}"); } args.AddLine($"--target-framework={TargetFrameworkIdentifier},{TargetFrameworkVersion}"); args.AddQuotedLine($"--root-assembly={Path.GetFullPath (MainAssembly.ItemSpec)}"); var v = VerbosityUtils.Merge(ExtraArgs, (LoggerVerbosity)Verbosity); if (v.Length > 0) { foreach (var arg in v) { args.AddLine(arg); } } if (!string.IsNullOrWhiteSpace(License)) { args.AddLine($"--license={License}"); } // Generate a response file var responseFile = Path.GetFullPath(ResponseFilePath); if (File.Exists(responseFile)) { File.Delete(responseFile); } try { using (var fs = File.Create(responseFile)) { using (var writer = new StreamWriter(fs)) writer.Write(args); } } catch (Exception ex) { Log.LogWarning("Failed to create response file '{0}': {1}", responseFile, ex); } // Some arguments can not safely go in the response file and are // added separately. They must go _after_ the response file // as they may override options passed in the response file var actualArgs = new CommandLineArgumentBuilder(); actualArgs.AddQuoted($"@{responseFile}"); foreach (var arg in unescapedArgs) { actualArgs.AddQuoted(arg); } return(actualArgs.ToString()); }
public static void Eval(Leaf leaf, LinkMsg msg, TCPPacketReader packet, ulong time, LinkMode mode) { switch (msg) { case LinkMsg.MSG_LINK_LEAF_AVATAR: LeafAvatar(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_CUSTOM_NAME: LeafCustomName(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_EMOTE_TEXT: LeafEmoteText(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_LOGIN: LeafLogin(leaf, packet, time, mode); break; case LinkMsg.MSG_LINK_LEAF_PERSONAL_MESSAGE: LeafPersonalMessage(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_PRIVATE_IGNORED: LeafPrivateIgnored(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_PRIVATE_TEXT: LeafPrivateText(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_PUBLIC_TEXT: LeafPublicText(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_USERLIST_END: LeafUserlistEnd(leaf); break; case LinkMsg.MSG_LINK_LEAF_USERLIST_ITEM: LeafUserlistItem(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_JOIN: LeafJoin(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_PART: LeafPart(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_PING: LeafPing(leaf, time); break; case LinkMsg.MSG_LINK_LEAF_USER_UPDATED: LeafUserUpdated(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_NICK_CHANGED: LeafNickChanged(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_VROOM_CHANGED: LeafVroomChanged(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_IUSER: LeafIUser(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_IUSER_BIN: LeafIUserBin(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_ADMIN: LeafAdmin(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_NO_ADMIN: LeafNoAdmin(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_BROWSE: LeafBrowse(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_BROWSE_DATA: LeafBrowseData(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_CUSTOM_DATA_TO: LeafCustomDataTo(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_CUSTOM_DATA_ALL: LeafCustomDataAll(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_PRINT_ALL: LeafPrintAll(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_PRINT_VROOM: LeafPrintVroom(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_PRINT_LEVEL: LeafPrintLevel(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_PUBLIC_TO_USER: LeafPublicToUser(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_EMOTE_TO_USER: LeafEmoteToUser(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_PUBLIC_TO_LEAF: LeafPublicToLeaf(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_EMOTE_TO_LEAF: LeafEmoteToLeaf(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_NUDGE: LeafNudge(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_SCRIBBLE_USER: LeafScribbleUser(leaf, packet); break; case LinkMsg.MSG_LINK_LEAF_SCRIBBLE_LEAF: LeafScribbleLeaf(leaf, packet); break; } }
bool DoExecute() { Log.LogDebugMessage("Aot:", AndroidAotMode); Log.LogDebugMessage(" AndroidApiLevel: {0}", AndroidApiLevel); Log.LogDebugMessage(" AndroidAotMode: {0}", AndroidAotMode); Log.LogDebugMessage(" AndroidSequencePointsMode: {0}", AndroidSequencePointsMode); Log.LogDebugMessage(" AndroidNdkDirectory: {0}", AndroidNdkDirectory); Log.LogDebugMessage(" AotOutputDirectory: {0}", AotOutputDirectory); Log.LogDebugMessage(" EnableLLVM: {0}", EnableLLVM); Log.LogDebugMessage(" IntermediateAssemblyDir: {0}", IntermediateAssemblyDir); Log.LogDebugMessage(" LinkMode: {0}", LinkMode); Log.LogDebugMessage(" SdkBinDirectory: {0}", SdkBinDirectory); Log.LogDebugMessage(" SupportedAbis: {0}", SupportedAbis); Log.LogDebugTaskItems(" ResolvedAssemblies:", ResolvedAssemblies); Log.LogDebugTaskItems(" AdditionalNativeLibraryReferences:", AdditionalNativeLibraryReferences); bool hasValidAotMode = GetAndroidAotMode(AndroidAotMode, out AotMode); if (!hasValidAotMode) { Log.LogCodedError("XA3001", "Invalid AOT mode: {0}", AndroidAotMode); return(false); } TryGetSequencePointsMode(AndroidSequencePointsMode, out sequencePointsMode); var nativeLibs = new List <string> (); if (!Directory.Exists(AotOutputDirectory)) { Directory.CreateDirectory(AotOutputDirectory); } // Check that we have a compatible NDK version for the targeted ABIs. NdkUtil.NdkVersion ndkVersion; bool hasNdkVersion = NdkUtil.GetNdkToolchainRelease(AndroidNdkDirectory, out ndkVersion); var abis = SupportedAbis.Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries); foreach (var abi in abis) { string aotCompiler = ""; string outdir = ""; string mtriple = ""; AndroidTargetArch arch; switch (abi) { case "armeabi": aotCompiler = Path.Combine(SdkBinDirectory, "cross-arm"); outdir = Path.Combine(AotOutputDirectory, "armeabi"); mtriple = "armv5-linux-gnueabi"; arch = AndroidTargetArch.Arm; break; case "armeabi-v7a": aotCompiler = Path.Combine(SdkBinDirectory, "cross-arm"); outdir = Path.Combine(AotOutputDirectory, "armeabi-v7a"); mtriple = "armv7-linux-gnueabi"; arch = AndroidTargetArch.Arm; break; case "arm64": case "arm64-v8a": case "aarch64": aotCompiler = Path.Combine(SdkBinDirectory, "cross-arm64"); outdir = Path.Combine(AotOutputDirectory, "arm64-v8a"); mtriple = "aarch64-linux-android"; arch = AndroidTargetArch.Arm64; break; case "x86": aotCompiler = Path.Combine(SdkBinDirectory, "cross-x86"); outdir = Path.Combine(AotOutputDirectory, "x86"); mtriple = "i686-linux-android"; arch = AndroidTargetArch.X86; break; case "x86_64": aotCompiler = Path.Combine(SdkBinDirectory, "cross-x86_64"); outdir = Path.Combine(AotOutputDirectory, "x86_64"); mtriple = "x86_64-linux-android"; arch = AndroidTargetArch.X86_64; break; // case "mips": default: throw new Exception("Unsupported Android target architecture ABI: " + abi); } if (!NdkUtil.ValidateNdkPlatform(Log, AndroidNdkDirectory, arch, enableLLVM:EnableLLVM)) { return(false); } if (!ValidateAotConfiguration(Log, arch, EnableLLVM)) { return(false); } outdir = Path.GetFullPath(outdir); if (!Directory.Exists(outdir)) { Directory.CreateDirectory(outdir); } var toolPrefix = NdkUtil.GetNdkToolPrefix(AndroidNdkDirectory, arch); var toolchainPath = toolPrefix.Substring(0, toolPrefix.LastIndexOf(Path.DirectorySeparatorChar)); var ldFlags = string.Empty; if (EnableLLVM) { int level = GetNdkApiLevel(AndroidNdkDirectory, AndroidApiLevel, arch); string androidLibPath = string.Empty; try { androidLibPath = NdkUtil.GetNdkPlatformLibPath(AndroidNdkDirectory, arch, level); } catch (InvalidOperationException ex) { Diagnostic.Error(5101, ex.Message); } var libs = new List <string>() { QuoteFileName(Path.Combine(GetNdkToolchainLibraryDir(toolchainPath), "libgcc.a")), QuoteFileName(Path.Combine(androidLibPath, "libc.so")), QuoteFileName(Path.Combine(androidLibPath, "libm.so")) }; ldFlags = string.Join(";", libs); } foreach (var assembly in ResolvedAssemblies) { string outputFile = Path.Combine(outdir, string.Format("libaot-{0}.so", Path.GetFileName(assembly.ItemSpec))); string seqpointsFile = Path.Combine(outdir, string.Format("{0}.msym", Path.GetFileName(assembly.ItemSpec))); string aotOptions = string.Format( "{0}--aot={8}{1}outfile={2},asmwriter,mtriple={3},tool-prefix={4},ld-flags={5},llvm-path={6},temp-path={7}", EnableLLVM ? "--llvm " : string.Empty, AotMode != AotMode.Normal ? string.Format("{0},", AotMode.ToString().ToLowerInvariant()) : string.Empty, QuoteFileName(outputFile), mtriple, QuoteFileName(toolPrefix), ldFlags, QuoteFileName(SdkBinDirectory), QuoteFileName(outdir), sequencePointsMode == SequencePointsMode.Offline ? string.Format("gen-seq-points-file={0},", seqpointsFile) : string.Empty ); // Due to a Monodroid MSBuild bug we can end up with paths to assemblies that are not in the intermediate // assembly directory (typically obj/assemblies). This can lead to problems with the Mono loader not being // able to find their dependency laters, since framework assemblies are stored in different directories. // This can happen when linking is disabled (AndroidLinkMode=None). Workaround this problem by resolving // the paths to the right assemblies manually. var resolvedPath = Path.GetFullPath(assembly.ItemSpec); var intermediateAssemblyPath = Path.Combine(IntermediateAssemblyDir, Path.GetFileName(assembly.ItemSpec)); if (LinkMode.ToLowerInvariant() == "none") { if (!resolvedPath.Contains(IntermediateAssemblyDir) && File.Exists(intermediateAssemblyPath)) { resolvedPath = intermediateAssemblyPath; } } var assembliesPath = Path.GetFullPath(Path.GetDirectoryName(resolvedPath)); var assemblyPath = QuoteFileName(Path.GetFullPath(resolvedPath)); if (!RunAotCompiler(assembliesPath, aotCompiler, aotOptions, assemblyPath)) { Log.LogCodedError("XA3001", "Could not AOT the assembly: {0}", assembly.ItemSpec); return(false); } nativeLibs.Add(outputFile); } } NativeLibrariesReferences = nativeLibs.ToArray(); Log.LogDebugTaskItems("Aot Outputs:"); Log.LogDebugTaskItems(" NativeLibrariesReferences: ", NativeLibrariesReferences); return(true); }
/// <summary> /// 预览 /// </summary> /// <param name="CH">通道</param> /// <param name="Handle">句柄</param> /// <param name="StreamType">码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推</param> /// <param name="Mode">连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP </param> /// <param name="Blocked">0- 非阻塞取流,1- 阻塞取流</param> public void RealPlay(int CH, IntPtr Handle, Action <int, int, IntPtr, uint, IntPtr> RealDataCallBack = null, Action <int, int, IntPtr, uint, IntPtr> StdDataEvent = null, Action <int, int, IntPtr, uint, IntPtr> RealDataEvent = null, int StreamType = 0, LinkMode Mode = LinkMode.TCP, bool Blocked = true) { NET_DVR_PREVIEWINFO lpPreviewInfo = new NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = Handle; lpPreviewInfo.lChannel = CH; lpPreviewInfo.dwStreamType = (uint)StreamType; lpPreviewInfo.dwLinkMode = (uint)Mode; lpPreviewInfo.bBlocked = Blocked; lpPreviewInfo.dwDisplayBufNum = (uint)this.BufferFrame; IntPtr pUser = new IntPtr(); REALDATACALLBACK RealData = null; if (RealDataCallBack != null) { RealData = new REALDATACALLBACK(RealDataCallBack); } System.Threading.Thread.Sleep(1000); if (Environment.Is64BitProcess) { m_lRealHandle = HCNetSDKia64.NET_DVR_RealPlay_V40(this.lUserID, ref lpPreviewInfo, RealData, pUser); } else { m_lRealHandle = HCNetSDK.NET_DVR_RealPlay_V40(this.lUserID, ref lpPreviewInfo, RealData, pUser); } if (m_lRealHandle < 0) { Error(); } if (StdDataEvent != null) { if (Environment.Is64BitProcess) { HCNetSDKia64.NET_DVR_SetStandardDataCallBack(this.lUserID, new StdDataCallBack(StdDataEvent), pUser); } else { HCNetSDK.NET_DVR_SetStandardDataCallBack(this.lUserID, new StdDataCallBack(StdDataEvent), pUser); } } if (RealDataEvent != null) { if (Environment.Is64BitProcess) { HCNetSDKia64.NET_DVR_SetRealDataCallBack(this.lUserID, new RealDataCallBack(RealDataEvent), pUser); } else { HCNetSDK.NET_DVR_SetRealDataCallBack(this.lUserID, new RealDataCallBack(RealDataEvent), pUser); } } }
public CustomizeMacActions(LinkMode mode, IEnumerable <string> skipped_assemblies) : base(mode == LinkMode.SDKOnly, skipped_assemblies) { link_mode = mode; }
/// <summary> /// 本地录像 /// </summary> /// <param name="CH"></param> /// <param name="FilePath"></param> /// <param name="Handle"></param> /// <param name="StreamType"></param> /// <param name="Mode"></param> /// <param name="Blocked"></param> public void StartRec(int CH, string FilePath, IntPtr Handle, int StreamType = 0, LinkMode Mode = LinkMode.TCP, bool Blocked = true) { if (m_lRealHandle < 0) { RealPlay(CH, Handle, null, null, null, StreamType, Mode, Blocked); } if (m_lRealHandle < 0) { Error(); } if (Environment.Is64BitProcess) { mRec = HCNetSDKia64.NET_DVR_SaveRealData(this.m_lRealHandle, FilePath); } else { mRec = HCNetSDK.NET_DVR_SaveRealData(this.m_lRealHandle, FilePath); } }
public CustomizeMacActions(LinkMode mode, IEnumerable<string> skipped_assemblies) : base(mode == LinkMode.SDKOnly, skipped_assemblies) { link_mode = mode; }
public Target(ref ptr <sys.Arch> Arch = default, objabi.HeadType HeadType = default, LinkMode LinkMode = default, BuildMode BuildMode = default, bool linkShared = default, bool canUsePlugins = default, bool IsELF = default) { this.Arch = Arch; this.HeadType = HeadType; this.LinkMode = LinkMode; this.BuildMode = BuildMode; this.linkShared = linkShared; this.canUsePlugins = canUsePlugins; this.IsELF = IsELF; }