mirror of
				https://github.com/Ryujinx/Opentk.git
				synced 2025-11-04 15:05:07 +00:00 
			
		
		
		
	Removed passing of options and replaced checks with option object access.
This commit is contained in:
		
							parent
							
								
									fec6c18702
								
							
						
					
					
						commit
						77ebecb9f7
					
				| 
						 | 
				
			
			@ -52,10 +52,7 @@ namespace OpenTK.Rewrite
 | 
			
		|||
            }
 | 
			
		||||
 | 
			
		||||
            var program = new Program();
 | 
			
		||||
            var file = args[0];
 | 
			
		||||
            var key = args[1];
 | 
			
		||||
            var options = args.Where(a => a.StartsWith("-") || a.StartsWith("/"));
 | 
			
		||||
            program.Rewrite(file, key, options);
 | 
			
		||||
            program.Rewrite();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // mscorlib types
 | 
			
		||||
| 
						 | 
				
			
			@ -69,13 +66,8 @@ namespace OpenTK.Rewrite
 | 
			
		|||
        // OpenTK.BindingsBase
 | 
			
		||||
        private static TypeDefinition TypeBindingsBase;
 | 
			
		||||
 | 
			
		||||
        private static bool dllimport;
 | 
			
		||||
 | 
			
		||||
        private void Rewrite(string file, string keyfile, IEnumerable<string> options)
 | 
			
		||||
        private void Rewrite()
 | 
			
		||||
        {
 | 
			
		||||
            IEnumerable<string> optionsEnumerated = options as IList<string> ?? options.ToList();
 | 
			
		||||
            dllimport = optionsEnumerated.Contains("-dllimport");
 | 
			
		||||
 | 
			
		||||
            // Specify assembly read and write parameters
 | 
			
		||||
            // We want to keep a valid symbols file (pdb or mdb)
 | 
			
		||||
            var read_params = new ReaderParameters();
 | 
			
		||||
| 
						 | 
				
			
			@ -85,11 +77,11 @@ namespace OpenTK.Rewrite
 | 
			
		|||
            read_params.ReadWrite = true;
 | 
			
		||||
            write_params.WriteSymbols = true;
 | 
			
		||||
 | 
			
		||||
            if (!String.IsNullOrEmpty(keyfile) && File.Exists(keyfile))
 | 
			
		||||
            if (!String.IsNullOrEmpty(Options.StrongNameKey) && File.Exists(Options.StrongNameKey))
 | 
			
		||||
            {
 | 
			
		||||
                keyfile = Path.GetFullPath(keyfile);
 | 
			
		||||
                string absoluteKeyFilePath = Path.GetFullPath(Options.StrongNameKey);
 | 
			
		||||
 | 
			
		||||
                using (var fs = new FileStream(keyfile, FileMode.Open, FileAccess.Read))
 | 
			
		||||
                using (var fs = new FileStream(absoluteKeyFilePath, FileMode.Open, FileAccess.Read))
 | 
			
		||||
                {
 | 
			
		||||
                    var keypair = new System.Reflection.StrongNameKeyPair(fs);
 | 
			
		||||
                    write_params.StrongNameKeyPair = keypair;
 | 
			
		||||
| 
						 | 
				
			
			@ -103,7 +95,7 @@ namespace OpenTK.Rewrite
 | 
			
		|||
            // Load assembly and process all modules
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                using (AssemblyDefinition assembly = AssemblyDefinition.ReadAssembly(file, read_params))
 | 
			
		||||
                using (AssemblyDefinition assembly = AssemblyDefinition.ReadAssembly(Options.TargetAssembly, read_params))
 | 
			
		||||
                {
 | 
			
		||||
                    var rewritten = assembly.CustomAttributes.FirstOrDefault(a => a.AttributeType.Name == "RewrittenAttribute");
 | 
			
		||||
                    if (rewritten == null)
 | 
			
		||||
| 
						 | 
				
			
			@ -143,7 +135,7 @@ namespace OpenTK.Rewrite
 | 
			
		|||
                        {
 | 
			
		||||
                            foreach (var type in module.Types)
 | 
			
		||||
                            {
 | 
			
		||||
                                Rewrite(type, optionsEnumerated);
 | 
			
		||||
                                Rewrite(type);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
| 
						 | 
				
			
			@ -163,7 +155,7 @@ namespace OpenTK.Rewrite
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void Rewrite(TypeDefinition type, IEnumerable<string> options)
 | 
			
		||||
        private void Rewrite(TypeDefinition type)
 | 
			
		||||
        {
 | 
			
		||||
            var entry_points = type.Fields.FirstOrDefault(f => f.Name == "EntryPoints");
 | 
			
		||||
            if (entry_points != null)
 | 
			
		||||
| 
						 | 
				
			
			@ -173,7 +165,7 @@ namespace OpenTK.Rewrite
 | 
			
		|||
                entry_signatures.AddRange(type.Methods
 | 
			
		||||
                    .Where(t => t.CustomAttributes.Any(a => a.AttributeType.Name == "SlotAttribute")));
 | 
			
		||||
 | 
			
		||||
                Rewrite(type, entry_points, entry_signatures, options);
 | 
			
		||||
                Rewrite(type, entry_points, entry_signatures);
 | 
			
		||||
 | 
			
		||||
                RemoveNativeSignatures(type, entry_signatures);
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -191,7 +183,7 @@ namespace OpenTK.Rewrite
 | 
			
		|||
        private static int GetSlot(MethodDefinition signature)
 | 
			
		||||
        {
 | 
			
		||||
            // Pretend there is no slots if we want to force everything to work through DllImport (Android & iOS)
 | 
			
		||||
            if (dllimport)
 | 
			
		||||
            if (Options.UseDLLImport)
 | 
			
		||||
            {
 | 
			
		||||
                return -1;
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -207,14 +199,13 @@ namespace OpenTK.Rewrite
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
        private void Rewrite(TypeDefinition type, FieldDefinition entry_points,
 | 
			
		||||
            List<MethodDefinition> entry_signatures, IEnumerable<string> options)
 | 
			
		||||
            List<MethodDefinition> entry_signatures)
 | 
			
		||||
        {
 | 
			
		||||
            // Rewrite all wrapper methods
 | 
			
		||||
            var wrapper_signatures = new List<MethodDefinition>();
 | 
			
		||||
            wrapper_signatures.AddRange(type.Methods
 | 
			
		||||
                .Where(m => m.IsPublic && m.CustomAttributes.Any(a => a.AttributeType.Name == "AutoGeneratedAttribute")));
 | 
			
		||||
 | 
			
		||||
            IEnumerable<string> optionsEnumerated = options as IList<string> ?? options.ToList();
 | 
			
		||||
            foreach (var wrapper in wrapper_signatures)
 | 
			
		||||
            {
 | 
			
		||||
                var autogenerated = wrapper.CustomAttributes
 | 
			
		||||
| 
						 | 
				
			
			@ -226,7 +217,7 @@ namespace OpenTK.Rewrite
 | 
			
		|||
                    var signature = entry_signatures.FirstOrDefault(s => s.Name == signature_name);
 | 
			
		||||
                    int slot = GetSlot(signature);
 | 
			
		||||
 | 
			
		||||
                    ProcessMethod(wrapper, signature, slot, entry_points, optionsEnumerated);
 | 
			
		||||
                    ProcessMethod(wrapper, signature, slot, entry_points);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -236,7 +227,7 @@ namespace OpenTK.Rewrite
 | 
			
		|||
            {
 | 
			
		||||
                foreach (var nested_type in type.NestedTypes)
 | 
			
		||||
                {
 | 
			
		||||
                    Rewrite(nested_type, entry_points, entry_signatures, optionsEnumerated);
 | 
			
		||||
                    Rewrite(nested_type, entry_points, entry_signatures);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -283,7 +274,7 @@ namespace OpenTK.Rewrite
 | 
			
		|||
 | 
			
		||||
        // Create body for method
 | 
			
		||||
        private static void ProcessMethod(MethodDefinition wrapper, MethodDefinition native, int slot,
 | 
			
		||||
                                  FieldDefinition entry_points, IEnumerable<string> options)
 | 
			
		||||
                                  FieldDefinition entry_points)
 | 
			
		||||
        {
 | 
			
		||||
            var body = wrapper.Body;
 | 
			
		||||
            var il = body.GetILProcessor();
 | 
			
		||||
| 
						 | 
				
			
			@ -294,8 +285,7 @@ namespace OpenTK.Rewrite
 | 
			
		|||
            // and push each parameter on the stack
 | 
			
		||||
 | 
			
		||||
            DebugVariables vars = null;
 | 
			
		||||
            IEnumerable<string> optionsEnumerated = options as IList<string> ?? options.ToList();
 | 
			
		||||
            if (optionsEnumerated.Contains("-debug"))
 | 
			
		||||
            if (Options.EnableDebugCalls)
 | 
			
		||||
            {
 | 
			
		||||
                vars = EmitDebugPrologue(wrapper, il);
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -333,7 +323,7 @@ namespace OpenTK.Rewrite
 | 
			
		|||
 | 
			
		||||
            EmitParameterEpilogues(wrapper, native, body, il, generatedVariables);
 | 
			
		||||
 | 
			
		||||
            if (optionsEnumerated.Contains("-debug"))
 | 
			
		||||
            if (Options.EnableDebugCalls)
 | 
			
		||||
            {
 | 
			
		||||
                EmitDebugEpilogue(wrapper, il, vars);
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue