tools/builder/Win32Builder.cs
author David Anderson <dvander@alliedmods.net>
Fri Feb 16 03:47:10 2007 +0000 (2007-02-16)
changeset 501 e209a7296936
parent 471 9728c9e59f8c
child 686 b3f80b9ced9e
permissions -rw-r--r--
removed this potential feature, not useful enough
dvander@388
     1
using System;
dvander@388
     2
using System.IO;
dvander@388
     3
using System.Diagnostics;
dvander@388
     4
dvander@388
     5
namespace builder
dvander@388
     6
{
dvander@388
     7
	public class Win32Builder : ABuilder
dvander@388
     8
	{
dvander@388
     9
		public Win32Builder(Config _cfg)
dvander@388
    10
		{
dvander@388
    11
			cfg = _cfg;
dvander@388
    12
		}
dvander@388
    13
dvander@403
    14
		public override string CompressPackage(Package pkg)
dvander@403
    15
		{
dvander@403
    16
			string lpath = null, ltarget = null;
dvander@403
    17
			
dvander@403
    18
			pkg.GetCompressBases(ref lpath, ref ltarget);
dvander@403
    19
dvander@403
    20
			string local_dir = Config.PathFormat("{0}/{1}", 
dvander@403
    21
				cfg.OutputBase,
dvander@403
    22
				lpath);
dvander@403
    23
dvander@403
    24
			string name = PackageBuildName(pkg) + ".zip";
dvander@403
    25
dvander@403
    26
			ProcessStartInfo info = new ProcessStartInfo();
dvander@403
    27
			info.FileName = cfg.Compressor;
dvander@403
    28
			info.WorkingDirectory = local_dir;
dvander@403
    29
			info.Arguments = "-r \"" + name + "\" \"" + ltarget + "\"";
dvander@403
    30
			info.UseShellExecute = false;
dvander@403
    31
dvander@403
    32
			Process p = Process.Start(info);
dvander@403
    33
			p.WaitForExit();
dvander@403
    34
dvander@403
    35
			local_dir = Config.PathFormat("{0}/{1}", local_dir, name);
dvander@403
    36
dvander@403
    37
			if (!File.Exists(local_dir))
dvander@403
    38
			{
dvander@403
    39
				return null;
dvander@403
    40
			}
dvander@403
    41
dvander@403
    42
			return name;
dvander@403
    43
		}
dvander@403
    44
dvander@388
    45
		public override bool BuildLibrary(Package pkg, Library lib, ref string _binName, ref string _binPath)
dvander@388
    46
		{
dvander@388
    47
			ProcessStartInfo info = new ProcessStartInfo();
dvander@388
    48
dvander@388
    49
			string path = Config.PathFormat("{0}/{1}/msvc8", 
dvander@388
    50
				cfg.SourceBase,
dvander@388
    51
				lib.LocalPath);
dvander@388
    52
dvander@388
    53
			/* PlatformExt ignored for us */
dvander@388
    54
			string binName = lib.Name + (lib.IsExecutable ? ".exe" : ".dll");
dvander@388
    55
dvander@388
    56
			string binpath = Config.PathFormat("{0}/{1}/{2}",
dvander@388
    57
				path,
dvander@388
    58
				lib.ReleaseBuild,
dvander@388
    59
				binName);
dvander@388
    60
			
dvander@388
    61
			if (File.Exists(binpath))
dvander@388
    62
			{
dvander@388
    63
				File.Delete(binpath);
dvander@388
    64
			}
dvander@388
    65
dvander@388
    66
			string projectFile = null;
dvander@388
    67
			if (lib.ProjectFile != null)
dvander@388
    68
			{
dvander@388
    69
				projectFile = lib.ProjectFile + ".vcproj";
dvander@388
    70
			} 
dvander@388
    71
			else 
dvander@388
    72
			{
dvander@388
    73
				projectFile = lib.Name + ".vcproj";
dvander@388
    74
			}
dvander@388
    75
dvander@388
    76
			info.WorkingDirectory = path;
dvander@388
    77
			info.FileName = cfg.BuilderPath;
dvander@388
    78
			info.UseShellExecute = false;
dvander@388
    79
dvander@468
    80
			if (cfg.BuildOptions != null)
dvander@468
    81
			{
dvander@471
    82
				info.Arguments = cfg.BuildOptions + " ";
dvander@468
    83
			}
dvander@468
    84
dvander@471
    85
			info.Arguments += "/rebuild " + lib.ReleaseBuild + " " + projectFile;
dvander@471
    86
dvander@388
    87
			Process p = Process.Start(info);
dvander@388
    88
			p.WaitForExit();
dvander@388
    89
			p.Close();
dvander@388
    90
dvander@388
    91
			if (!File.Exists(binpath))
dvander@388
    92
			{
dvander@388
    93
				return false;
dvander@388
    94
			}
dvander@388
    95
dvander@388
    96
			_binName = binName;
dvander@388
    97
			_binPath = binpath;
dvander@388
    98
dvander@388
    99
			return true;
dvander@388
   100
		}
dvander@388
   101
	}
dvander@388
   102
}