Switch to VC++ 2013 on Windows

Remove the faux-variadic make_unique since 2013 has real variadic
templates.

Switch to the non-deprecated windows version check functions.

Switch to the develop branch of boost since master doesn't fully support
VS 2013 atm.

Fix some assorted compilation errors.

Hardcode the paths to a bunch of Visual Studio things since it's now
expanding the relevant macros to nothing for whatever reason.
This commit is contained in:
Thomas Goyne 2013-12-11 12:30:27 -08:00
parent 5493c025bc
commit af96b305bf
9 changed files with 45 additions and 38 deletions

View File

@ -66,7 +66,7 @@ type ShellWrapper(conf : ITaskItem) =
this.UseCommandProcessor <- false
this.StandardOutputImportance <- "High"
this.EnvironmentVariables <- [| for x in ["CC"; "CPP"; "CFLAGS"; "PATH"; "INCLUDE"; "LIB"]
-> sprintf "%s=%s" <| x <| conf.GetMetadata x |]
-> sprintf "%s=%s" <| x <| conf.GetMetadata(x).Replace("\n", "").Replace(" ", "") |]
base.Execute()
type ExecShellScript() =

View File

@ -14,6 +14,7 @@
<ProjectName>BuildTasks</ProjectName>
<RestorePackages>true</RestorePackages>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\..\</SolutionDir>
<TargetFSharpCoreVersion>4.3.0.0</TargetFSharpCoreVersion>
</PropertyGroup>
<Import Project="$(MSBuildThisFileDirectory)..\paths.props" />
<PropertyGroup>
@ -40,15 +41,18 @@
<WarningLevel>3</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<MinimumVisualStudioVersion Condition="'$(MinimumVisualStudioVersion)' == ''">11</MinimumVisualStudioVersion>
<MinimumVisualStudioVersion Condition="'$(MinimumVisualStudioVersion)' == ''">12</MinimumVisualStudioVersion>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets" Condition=" Exists('$(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets')" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets" />
<ItemGroup>
<Compile Include="BuildTasks.fs" />
<Compile Include="DependencyFetchers.fs" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Reference Include="FSharp.Core, Version=$(TargetFSharpCoreVersion), Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Private>True</Private>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib">
<HintPath>..\..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
@ -57,7 +61,6 @@
<Reference Include="Microsoft.Build.Framework" />
<Reference Include="Microsoft.Build.Utilities.v4.0" />
<Reference Include="mscorlib" />
<Reference Include="FSharp.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Net" />
@ -65,4 +68,4 @@
<Reference Include="System.Xml" />
</ItemGroup>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
</Project>
</Project>

View File

@ -33,7 +33,7 @@
<UseDebugLibraries Condition="'$(Configuration)'=='Release'" >false</UseDebugLibraries>
<WholeProgramOptimization Condition="'$(Configuration)'=='Release'" >true</WholeProgramOptimization>
<CharacterSet >Unicode</CharacterSet>
<PlatformToolset >v110_xp</PlatformToolset>
<PlatformToolset >v120_xp</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

View File

@ -8,12 +8,32 @@
<ExecShellScript Include=".">
<CC>cl</CC>
<CFLAGS>-nologo</CFLAGS>
<PATH>$(MsysBasePath)\bin;$(NativeExecutablePath)</PATH>
<INCLUDE>$(MSBuildProjectDirectory);$(AegisubSourceBase)\src\msvc;$(AegisubSourceBase)\include;$(IncludePath)</INCLUDE>
<LIB>$(AegisubLibraryDir);$(LibraryPath)</LIB>
<Configuration>$(Configuration)</Configuration>
<Platform>$(Platform)</Platform>
<Sh>$(MsysBasePath)\bin\sh.exe</Sh>
<INCLUDE>
$(MSBuildProjectDirectory);
$(AegisubSourceBase)\src\msvc;
$(AegisubSourceBase)\include;
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include;
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include;
c:\Program Files (x86)\Windows Kits\8.1\Include\um;
c:\Program Files (x86)\Windows Kits\8.1\Include\shared
</INCLUDE>
<PATH Condition="'$(Platform)'=='Win32'">$(MsysBasePath)\bin;C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin</PATH>
<PATH Condition="'$(Platform)'=='x64'">$(MsysBasePath)\bin;C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64</PATH>
<LIB Condition="'$(Platform)'=='Win32'">
$(AegisubLibraryDir);
c:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86;
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib;
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\lib
</LIB>
<LIB Condition="'$(Platform)'=='x64'">
$(AegisubLibraryDir);
c:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64;
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\amd64;
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\lib\amd64
</LIB>
</ExecShellScript>
</ItemGroup>

View File

@ -55,20 +55,10 @@ namespace agi {
/// @param name New name for the thread
void SetThreadName(const char *name);
#ifdef _MSC_VER
#define MAKE_UNIQUE(TEMPLATE_LIST, PADDING_LIST, LIST, COMMA, X1, X2, X3, X4) \
template<class T COMMA LIST(_CLASS_TYPE)> \
inline std::unique_ptr<T> make_unique(LIST(_TYPE_REFREF_ARG)) { \
return std::unique_ptr<T>(new T(LIST(_FORWARD_ARG))); \
}
_VARIADIC_EXPAND_0X(MAKE_UNIQUE, , , , )
#undef MAKE_UNIQUE
#else
template<typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args) {
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}
#endif
/// A thin wrapper around this_thread::sleep_for that uses std::thread on
/// Windows (to avoid having to compile boost.thread) and boost::thread

View File

@ -30,19 +30,13 @@ using agi::charset::ConvertLocal;
#include <boost/filesystem.hpp>
namespace bfs = boost::filesystem;
#include <versionhelpers.h>
#undef CreateDirectory
namespace {
FINDEX_INFO_LEVELS find_info_level() {
OSVERSIONINFO osvi;
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
if (osvi.dwMajorVersion > 6 || (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion >= 1))
return FindExInfoBasic;
else
return FindExInfoStandard;
return IsWindowsVistaOrGreater() ? FindExInfoBasic : FindExInfoStandard;
}
}

View File

@ -812,7 +812,7 @@ bool DirectSoundPlayer2::IsThreadAlive()
thread.reset();
}
return thread;
return !!thread;
}
void DirectSoundPlayer2::Play(int64_t start,int64_t count)

View File

@ -108,14 +108,14 @@ FFMS_Index *FFmpegSourceProvider::DoIndexing(FFMS_Indexer *Indexer, agi::fs::pat
int calls;
};
progress state = { ps, 0 };
Index = FFMS_DoIndexing(Indexer, Trackmask, FFMS_TRACKMASK_NONE, nullptr, nullptr, IndexEH,
static_cast<TIndexCallback>([](int64_t Current, int64_t Total, void *Private) -> int {
auto state = static_cast<progress *>(Private);
if (++state->calls % 10 == 0)
state->ps->SetProgress(Current, Total);
return state->ps->IsCancelled();
}),
&state, &ErrInfo);
TIndexCallback callback = [](int64_t Current, int64_t Total, void *Private) -> int {
auto state = static_cast<progress *>(Private);
if (++state->calls % 10 == 0)
state->ps->SetProgress(Current, Total);
return state->ps->IsCancelled();
};
Index = FFMS_DoIndexing(Indexer, Trackmask, FFMS_TRACKMASK_NONE,
nullptr, nullptr, IndexEH, callback, &state, &ErrInfo);
});
if (Index == nullptr) {

2
deps/boost vendored

@ -1 +1 @@
Subproject commit 55e528420dcc2cef01ca17f1d51d349debcc9b81
Subproject commit f866ff6fea187a5c9ad80895f078dec577cdc304