+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <ProjectGuid>{75DC22B1-113F-4A66-96B9-2FF8208C10E8}</ProjectGuid>
- <AssemblyName>Build.UpdateVersion</AssemblyName>
- <RootNamespace>Build.UpdateVersion</RootNamespace>
- <OutputType>Exe</OutputType>
- <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProductVersion>10.0.0</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)' == 'Documentation' ">
- <DefineConstants>TRACE</DefineConstants>
- <WarningLevel>4</WarningLevel>
- <OutputPath>..\..\Binaries\Tools\Release\</OutputPath>
- <Optimize>true</Optimize>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
- <DefineConstants>TRACE;DEBUG</DefineConstants>
- <DebugSymbols>True</DebugSymbols>
- <DebugType>full</DebugType>
- <WarningLevel>4</WarningLevel>
- <OutputPath>..\..\Binaries\Tools\Debug\</OutputPath>
- <Optimize>false</Optimize>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
- <DefineConstants>TRACE</DefineConstants>
- <WarningLevel>4</WarningLevel>
- <OutputPath>..\..\Binaries\Tools\Release\</OutputPath>
- <Optimize>true</Optimize>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)' == 'Nsis' ">
- <DefineConstants>TRACE</DefineConstants>
- <WarningLevel>4</WarningLevel>
- <OutputPath>..\..\Binaries\Tools\Release\</OutputPath>
- <Optimize>true</Optimize>
- </PropertyGroup>
- <ItemGroup>
- <Compile Include="Program.cs" />
- </ItemGroup>
- <ItemGroup>
- <Reference Include="System" />
- </ItemGroup>
- <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
- <PropertyGroup>
- <PreBuildEvent>
- </PreBuildEvent>
- <PostBuildEvent>
- </PostBuildEvent>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugMinimal|AnyCPU' ">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>..\..\Binaries\Tools\Debug\</OutputPath>
- <DefineConstants>TRACE;DEBUG</DefineConstants>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseMinimal|AnyCPU' ">
- <Optimize>true</Optimize>
- <OutputPath>..\..\Binaries\Tools\Release\</OutputPath>
- <DefineConstants>TRACE</DefineConstants>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <Target Name="BeforeBuild">
- <Delete Files="..\..\Timestamp.txt" />
- <Delete Files="..\..\Version.txt" />
- </Target>
- <Target Name="AfterBuild">
- <Exec Command="$(OutputPath)\Build.UpdateVersion.exe" Condition="$(OS) == 'Windows_NT'" />
- <Exec Command="mono $(OutputPath)\Build.UpdateVersion.exe" Condition="$(OS) != 'Windows_NT'" />
- </Target>
-</Project>
+++ /dev/null
-#region License
-//
-// The Open Toolkit Library License
-//
-// Copyright (c) 2006 - 2010 the Open Toolkit library.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights to
-// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-// the Software, and to permit persons to whom the Software is furnished to do
-// so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-//
-#endregion
-
-using System;
-using System.Diagnostics;
-using System.IO;
-
-namespace Build.UpdateVersion
-{
- class Program
- {
- const string Major = "1";
- const string Minor = "2";
-
- static string RootDirectory;
- static string SourceDirectory;
-
- public static void Main()
- {
- string wdir = Environment.CurrentDirectory;
- if (Directory.GetParent(wdir).Name == "Source")
- {
- // Running through msbuild inside Source/Build.UpdateVersion/
- RootDirectory = "../..";
- SourceDirectory = "..";
- }
- else
- {
- // Running manually inside Binaries/OpenTK/[Debug|Release]/
- RootDirectory = "../../..";
- SourceDirectory = "../../../Source";
- }
-
- DateTime now = DateTime.UtcNow;
- string timestamp = now.ToString("u").Split(' ')[0];
- // Build number is defined as the number of days since 1/1/2010.
- double timespan = now.Subtract(new DateTime(2010, 1, 1)).TotalDays;
- string build = ((int)timespan).ToString();
- // Revision number is defined as the number of (git/svn/bzr) commits,
- // or as the fraction of the current day, expressed in seconds, in case the
- // working directory is not under source control.
- string revision = RetrieveRevisionNumber(now);
-
- string major = Major;
- string minor = Minor;
-
- // Version is defined as {Major}.{Minor}.{Build}.{Revision}
- string version = String.Format("{0}.{1}.{2}.{3}-pre", major, minor, build, revision);
-
- Console.WriteLine("API compatibility key: {0}.{1}", major, minor);
- Console.WriteLine("Build date: {0}", timestamp);
-
- GenerateTimestamp(timestamp, Path.Combine(RootDirectory, "Timestamp.txt"));
- GenerateVersion(version, Path.Combine(RootDirectory, "Version.txt"));
- GenerateAssemblyInfo(major, minor, version, Path.Combine(SourceDirectory, "GlobalAssemblyInfo.cs"));
- }
-
- static void GenerateTimestamp(string timestamp, string file)
- {
- System.IO.File.WriteAllLines(file, new string[] { timestamp });
- }
-
- static void GenerateVersion(string version, string file)
- {
- File.WriteAllLines(file, new string[] { version });
- }
-
- static void GenerateAssemblyInfo(string major, string minor, string version, string file)
- {
- File.WriteAllLines(file, new string[]
- {
- "// This file is auto-generated through Source/Build.Tasks/GenerateAssemblyInfo.cs.",
- "// Do not edit by hand!",
- "",
- "using System;",
- "using System.Reflection;",
- "using System.Resources;",
- "using System.Runtime.CompilerServices;",
- "using System.Runtime.InteropServices;",
- "",
- "[assembly: AssemblyCompany(\"The Open Toolkit Library\")]",
- "[assembly: AssemblyProduct(\"The Open Toolkit Library\")]",
- "[assembly: AssemblyCopyright(\"Copyright © 2006 - 2014 the Open Toolkit Library\")]",
- "[assembly: AssemblyTrademark(\"OpenTK\")]",
- String.Format("[assembly: AssemblyVersion(\"{0}.{1}.0.0\")]", major, minor),
- String.Format("[assembly: AssemblyFileVersion(\"{0}\")]", version),
- });
- }
-
- static string RetrieveRevisionNumber(DateTime now)
- {
- double timespan = now.Subtract(new DateTime(2010, 1, 1)).TotalDays;
- string revision = RetrieveGitRevision() ?? RetrieveSvnRevision() ?? RetrieveBzrRevision() ?? "0";
- revision = revision.Trim();
- return revision;
- }
-
- static string RetrieveSeconds(double timespan)
- {
- string revision = ((int)((timespan - (int)timespan) * UInt16.MaxValue)).ToString();
- return revision;
- }
-
- static string RetrieveGitRevision()
- {
- try
- {
- string output = RunProcess("git", "rev-list HEAD --count", RootDirectory);
- return output.Trim(' ', '\n');
- }
- catch (Exception e)
- {
- Debug.Print("Failed to retrieve git revision. Error: {0}", e);
- }
- return null;
- }
-
-
- static string RetrieveSvnRevision()
- {
- try
- {
- string output = RunProcess("svn", "info", RootDirectory);
-
- const string RevisionText = "Revision: ";
- int index = output.IndexOf(RevisionText);
- if (index > -1)
- return output.Substring(index + RevisionText.Length, 5)
- .Replace('\r', ' ').Replace('\n', ' ').Trim();
- }
- catch (Exception e)
- {
- Debug.Print("Failed to retrieve svn revision. Error: {0}", e);
- }
- return null;
- }
-
- static string RetrieveBzrRevision()
- {
- try
- {
- string output = RunProcess("bzr", "revno", RootDirectory);
- return output != null && !output.StartsWith("bzr") ? output : null;
- }
- catch (Exception e)
- {
- Debug.Print("Failed to retrieve svn revision. Error: {0}", e);
- }
- return null;
- }
-
- static string RunProcess(string cmd, string args, string wdir)
- {
- ProcessStartInfo info = new ProcessStartInfo(cmd, args);
- info.WorkingDirectory = wdir;
- info.RedirectStandardOutput = true;
- info.RedirectStandardError = true;
- info.UseShellExecute = false;
- Process p = new Process();
- p.StartInfo = info;
- p.Start();
- p.WaitForExit();
- string output = p.StandardOutput.ReadToEnd();
- return output;
- }
- }
-}
\ No newline at end of file