--HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401887
		
			
				
	
	
		
			119 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.IO;
 | |
| using System.Diagnostics;
 | |
| 
 | |
| namespace builder
 | |
| {
 | |
| 	public class LinuxBuilder : ABuilder
 | |
| 	{
 | |
| 		public LinuxBuilder(Config _cfg)
 | |
| 		{
 | |
| 			cfg = _cfg;
 | |
| 		}
 | |
| 
 | |
| 		public override string GetPawnCompilerName()
 | |
| 		{
 | |
| 			return "spcomp";
 | |
| 		}
 | |
| 
 | |
| 		public override bool BuildLibrary(Package pkg, Library lib)
 | |
| 		{
 | |
| 			ProcessStartInfo info = new ProcessStartInfo();
 | |
| 
 | |
| 			string path = Config.PathFormat("{0}/{1}", 
 | |
| 				cfg.source_path,
 | |
| 				lib.source_path);
 | |
| 
 | |
| 			/* PlatformExt ignored for us */
 | |
| 			string binName = lib.binary_name;
 | |
| 			
 | |
| 			if (!lib.is_executable)
 | |
| 			{
 | |
| 				if (lib.has_platform_ext)
 | |
| 				{
 | |
| 					binName += "_i486.so";
 | |
| 				} 
 | |
| 				else 
 | |
| 				{
 | |
| 					binName += ".so";
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			string output_folder = (lib.release_mode == ReleaseMode.ReleaseMode_Release) ? "Release" : "Debug";
 | |
| 
 | |
| 			if (lib.build_mode == BuildMode.BuildMode_Episode2)
 | |
| 			{
 | |
| 				output_folder += ".orangebox";
 | |
| 			}
 | |
| 			else if (lib.build_mode == BuildMode.BuildMode_OldMetamod)
 | |
| 			{
 | |
| 				output_folder += ".original";
 | |
| 			}
 | |
| 
 | |
| 			string binpath = Config.PathFormat("{0}/{1}/{2}",
 | |
| 				path,
 | |
| 				output_folder,
 | |
| 				binName);
 | |
| 			
 | |
| 			if (File.Exists(binpath))
 | |
| 			{
 | |
| 				File.Delete(binpath);
 | |
| 			}
 | |
| 
 | |
| 			string makefile_args = "";
 | |
| 
 | |
| 			if (lib.build_mode == BuildMode.BuildMode_Episode1)
 | |
| 			{
 | |
| 				makefile_args = null;
 | |
| 			}
 | |
| 			else if (lib.build_mode == BuildMode.BuildMode_Episode2)
 | |
| 			{
 | |
| 				makefile_args = "ENGINE=\"orangebox\"";
 | |
| 			}
 | |
| 			else if (lib.build_mode == BuildMode.BuildMode_OldMetamod)
 | |
| 			{
 | |
| 				makefile_args = "ENGINE=\"original\"";
 | |
| 			}
 | |
| 
 | |
| 			/* Clean the project first */
 | |
| 			info.WorkingDirectory = path;
 | |
| 			info.FileName = cfg.builder_path;
 | |
| 			info.Arguments = makefile_args + " clean";
 | |
| 			info.UseShellExecute = false;
 | |
| 
 | |
| 			Process p = Process.Start(info);
 | |
| 			p.WaitForExit();
 | |
| 			p.Close();
 | |
| 
 | |
| 			/* Now build it */
 | |
| 			info.WorkingDirectory = path;
 | |
| 			info.FileName = cfg.builder_path;
 | |
| 			info.Arguments = makefile_args;
 | |
| 			info.UseShellExecute = false;
 | |
| 
 | |
| 			if (cfg.build_options != null)
 | |
| 			{
 | |
| 				info.Arguments += " " + cfg.build_options;
 | |
| 			}
 | |
| 
 | |
| 			p = Process.Start(info);
 | |
| 			p.WaitForExit();
 | |
| 			p.Close();
 | |
| 
 | |
| 			if (!File.Exists(binpath))
 | |
| 			{
 | |
| 				return false;
 | |
| 			}
 | |
| 			
 | |
| 			path = Config.PathFormat("{0}/{1}/{2}/{3}",
 | |
| 				cfg.pkg_path,
 | |
| 				pkg.GetBaseFolder(),
 | |
| 				lib.package_path,
 | |
| 				binName);
 | |
| 			File.Copy(binpath, path, true);
 | |
| 
 | |
| 			return true;
 | |
| 		}
 | |
| 	}
 | |
| }
 |