diff --git a/Aegisub.sln b/Aegisub.sln
index f0ba4d232..29f175cd7 100644
--- a/Aegisub.sln
+++ b/Aegisub.sln
@@ -1,8 +1,10 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2012
+# Visual Studio 2013
+VisualStudioVersion = 12.0.21005.1
+MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Aegisub", "aegisub\build\Aegisub\Aegisub.vcxproj", "{9DDDB9E5-E4A1-423D-A224-F6D4E5AAC06A}"
ProjectSection(ProjectDependencies) = postProject
- {15C79E75-F5F6-451D-B870-94ED02AF257E} = {15C79E75-F5F6-451D-B870-94ED02AF257E}
+ {914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "csrihelper", "aegisub\build\csrihelper\csrihelper.vcxproj", "{C832EAF3-860D-4373-A02C-933626B47A5E}"
@@ -34,11 +36,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fontconfig", "aegisub\build
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} = {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}
EndProjectSection
EndProject
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "BuildTasks", "aegisub\build\BuildTasks\BuildTasks.fsproj", "{15C79E75-F5F6-451D-B870-94ED02AF257E}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fribidi", "aegisub\build\fribidi\fribidi.vcxproj", "{FB8E8D19-A4D6-4181-943C-282075F49B41}"
ProjectSection(ProjectDependencies) = postProject
- {15C79E75-F5F6-451D-B870-94ED02AF257E} = {15C79E75-F5F6-451D-B870-94ED02AF257E}
+ {914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ffms2", "aegisub\build\ffms2\ffms2.vcxproj", "{AA137613-96A1-4388-8905-71345B4F8F87}"
@@ -55,7 +55,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "aegisub\build\zlib\
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "! Update Dependencies", "aegisub\build\deps\deps.vcxproj", "{472212DF-99E8-4B73-9736-8500616D8A80}"
ProjectSection(ProjectDependencies) = postProject
- {15C79E75-F5F6-451D-B870-94ED02AF257E} = {15C79E75-F5F6-451D-B870-94ED02AF257E}
+ {914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{CEAEFCB9-3759-4D03-8D51-7287D7B7E7DF}"
@@ -66,6 +66,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{CEAEFC
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxWidgets", "aegisub\build\wx\wxWidgets.vcxproj", "{0518D6C0-7BF6-4FD1-91FB-191BD10DB2AC}"
+ ProjectSection(ProjectDependencies) = postProject
+ {914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
+ EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libass", "aegisub\build\libass\libass.vcxproj", "{8804F253-DA67-4CC4-926B-0CD2AEE5778D}"
EndProject
@@ -74,11 +77,16 @@ EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boost", "aegisub\build\boost\boost.vcxproj", "{A649D828-A399-4D81-ADEF-94CFDBA7847F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icu", "aegisub\build\icu\icu.vcxproj", "{F934AB7B-186B-4E96-B20C-A58C38C1B818}"
+ ProjectSection(ProjectDependencies) = postProject
+ {914A5B35-66B2-4293-BB6C-D93DA9BC68C6} = {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
+ EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "googletest", "aegisub\build\googletest\googletest.vcxproj", "{FBE51B37-8B12-41E8-B5E0-F00A06B4BCD2}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tests", "aegisub\build\tests\tests.vcxproj", "{49766286-2B5D-4177-A860-BD7CE1846EEF}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildTasks", "aegisub\build\BuildTasks\BuildTasks.csproj", "{914A5B35-66B2-4293-BB6C-D93DA9BC68C6}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -242,18 +250,6 @@ Global
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Release|Win32.Build.0 = Release|Win32
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Release|x64.ActiveCfg = Release|x64
{AD56899E-961B-47B7-BD0F-14D0DA50D141}.Release|x64.Build.0 = Release|x64
- {15C79E75-F5F6-451D-B870-94ED02AF257E}.Debug|Win32.ActiveCfg = Debug|Any CPU
- {15C79E75-F5F6-451D-B870-94ED02AF257E}.Debug|Win32.Build.0 = Debug|Any CPU
- {15C79E75-F5F6-451D-B870-94ED02AF257E}.Debug|x64.ActiveCfg = Debug|Any CPU
- {15C79E75-F5F6-451D-B870-94ED02AF257E}.Debug|x64.Build.0 = Debug|Any CPU
- {15C79E75-F5F6-451D-B870-94ED02AF257E}.Debug-MinDep|Win32.ActiveCfg = Debug|Any CPU
- {15C79E75-F5F6-451D-B870-94ED02AF257E}.Debug-MinDep|x64.ActiveCfg = Debug|Any CPU
- {15C79E75-F5F6-451D-B870-94ED02AF257E}.Debug-Tests|Win32.ActiveCfg = Debug|Any CPU
- {15C79E75-F5F6-451D-B870-94ED02AF257E}.Debug-Tests|x64.ActiveCfg = Debug|Any CPU
- {15C79E75-F5F6-451D-B870-94ED02AF257E}.Release|Win32.ActiveCfg = Release|Any CPU
- {15C79E75-F5F6-451D-B870-94ED02AF257E}.Release|Win32.Build.0 = Release|Any CPU
- {15C79E75-F5F6-451D-B870-94ED02AF257E}.Release|x64.ActiveCfg = Release|Any CPU
- {15C79E75-F5F6-451D-B870-94ED02AF257E}.Release|x64.Build.0 = Release|Any CPU
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Debug|Win32.ActiveCfg = Debug|Win32
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Debug|Win32.Build.0 = Debug|Win32
{FB8E8D19-A4D6-4181-943C-282075F49B41}.Debug|x64.ActiveCfg = Debug|x64
@@ -391,6 +387,14 @@ Global
{49766286-2B5D-4177-A860-BD7CE1846EEF}.Debug-Tests|x64.ActiveCfg = Debug|x64
{49766286-2B5D-4177-A860-BD7CE1846EEF}.Release|Win32.ActiveCfg = Release|Win32
{49766286-2B5D-4177-A860-BD7CE1846EEF}.Release|x64.ActiveCfg = Release|x64
+ {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Debug-MinDep|Win32.ActiveCfg = Debug|Any CPU
+ {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Debug-MinDep|x64.ActiveCfg = Debug|Any CPU
+ {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Debug-Tests|Win32.ActiveCfg = Debug|Any CPU
+ {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Debug-Tests|x64.ActiveCfg = Debug|Any CPU
+ {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Release|Win32.ActiveCfg = Release|Any CPU
+ {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}.Release|x64.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/aegisub/build/BuildTasks/BuildTasks.fsproj b/aegisub/build/BuildTasks/BuildTasks.csproj
similarity index 50%
rename from aegisub/build/BuildTasks/BuildTasks.fsproj
rename to aegisub/build/BuildTasks/BuildTasks.csproj
index e0242e081..8ea795379 100644
--- a/aegisub/build/BuildTasks/BuildTasks.fsproj
+++ b/aegisub/build/BuildTasks/BuildTasks.csproj
@@ -1,71 +1,73 @@
-
-
-
-
- Debug
- AnyCPU
- 2.0
- 15c79e75-f5f6-451d-b870-94ed02af257e
- Library
- BuildTakss
- BuildTasks
- v4.5
- BuildTasks
- BuildTasks
- true
- ..\..\..\
- 4.3.0.0
-
-
-
- $(AegisubBinaryDir)
- $(AegisubObjectDir)
-
-
- true
- full
- false
- false
- DEBUG;TRACE
- 3
- Program
- C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
- Z:\src\temp\aegisub\aegisub
- /p:BuildProjectReferences=false build\deps\deps.vcxproj
-
-
- pdbonly
- true
- true
- TRACE
- 3
-
-
- 12
-
-
-
-
-
-
-
-
-
- True
-
-
- ..\..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Debug
+ AnyCPU
+ {914A5B35-66B2-4293-BB6C-D93DA9BC68C6}
+ Library
+ Properties
+ BuildTasks
+ BuildTasks
+ v4.5
+ 512
+ ..\..\..\
+
+
+
+ $(AegisubBinaryDir)
+ $(AegisubObjectDir)
+
+
+ true
+ full
+ false
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/aegisub/build/BuildTasks/BuildTasks.fs b/aegisub/build/BuildTasks/BuildTasks.fs
deleted file mode 100644
index a7ff6658d..000000000
--- a/aegisub/build/BuildTasks/BuildTasks.fs
+++ /dev/null
@@ -1,127 +0,0 @@
-// Copyright (c) 2012, Thomas Goyne
-//
-// Permission to use, copy, modify, and distribute this software for any
-// purpose with or without fee is hereby granted, provided that the above
-// copyright notice and this permission notice appear in all copies.
-//
-// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-//
-// Aegisub Project http://www.aegisub.org/
-
-module BuildTasks
-
-open System
-open System.Diagnostics
-open Microsoft.Build.Evaluation
-open Microsoft.Build.Framework
-open Microsoft.Build.Utilities
-
-/// Read all of the defined properties from the calling project file and stuff
-/// them in a Map
-let propertyMap (be : IBuildEngine) =
- use reader = Xml.XmlReader.Create(be.ProjectFileOfTaskNode)
- let project = new Project(reader)
- project.AllEvaluatedProperties
- |> Seq.filter (fun x -> not x.IsEnvironmentProperty)
- |> Seq.filter (fun x -> not x.IsGlobalProperty)
- |> Seq.filter (fun x -> not x.IsReservedProperty)
- |> Seq.map (fun x -> (x.Name, x.EvaluatedValue))
- |> Map.ofSeq
-
-/// Convert an absolute windows path to an msys path
-let mungePath path =
- let matchre pat str =
- let m = System.Text.RegularExpressions.Regex.Match(str, pat)
- if m.Success
- then List.tail [ for g in m.Groups -> g.Value ]
- else []
- match matchre "([A-Za-z]):\\\\(.*)" path with
- | drive :: path :: [] -> sprintf "/%s/%s" drive (path.Replace('\\', '/'))
- | _ -> path
-
-type ShellWrapper(conf : ITaskItem) =
- inherit ToolTask()
-
- member val Arguments = "" with get, set
- member val WorkingDirectory = "" with get, set
-
- // ToolTask overrides
- override val ToolName = "sh.exe" with get
- override this.GenerateFullPathToTool() = conf.GetMetadata "Sh"
- override this.GenerateCommandLineCommands() = this.Arguments
- override this.GetWorkingDirectory() = this.WorkingDirectory
-
- override this.Execute() =
- if this.GenerateFullPathToTool() |> IO.File.Exists |> not then
- failwith "sh.exe not found. Make sure the MSYS root is set to a correct location."
-
- if not <| IO.Directory.Exists this.WorkingDirectory then ignore <| IO.Directory.CreateDirectory this.WorkingDirectory
-
- this.UseCommandProcessor <- false
- this.StandardOutputImportance <- "High"
- this.EnvironmentVariables <- [| for x in ["CC"; "CPP"; "CFLAGS"; "PATH"; "INCLUDE"; "LIB"]
- -> sprintf "%s=%s" <| x <| conf.GetMetadata(x).Replace("\n", "").Replace(" ", "") |]
- base.Execute()
-
-type ExecShellScript() =
- inherit Task()
-
- // Task arguments
- [] member val WorkingDirectory = "" with get, set
- [] member val Command = "" with get, set
- [] member val Configuration : ITaskItem = null with get, set
- member val Arguments = "" with get, set
-
- member private this.realArgs () =
- let cleanArgs = this.Arguments.Replace("\r", "").Replace('\n', ' ')
- sprintf "-c '%s %s'" (mungePath this.Command) cleanArgs
-
- override this.Execute() =
- try
- let sw = ShellWrapper(this.Configuration,
- BuildEngine = this.BuildEngine,
- HostObject = this.HostObject,
- Arguments = this.realArgs(),
- WorkingDirectory = this.WorkingDirectory)
-
- sw.Execute()
- with
- | Failure(e) -> this.Log.LogError(e); false
- | e -> this.Log.LogErrorFromException(e); false
-
-type MsysPath() =
- inherit Task()
-
- member val Path = "" with get, set
- [