freeswitch/w32/switch_version.props

96 lines
3.7 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets">
<Import Project="basedir.props" Condition=" '$(BaseDirImported)' == ''"/>
</ImportGroup>
<PropertyGroup>
<switch_versionPropsImported>true</switch_versionPropsImported>
</PropertyGroup>
<UsingTask TaskName="SwitchVersionTask"
TaskFactory="CodeTaskFactory"
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<Task>
<Reference Include="Microsoft.Build" />
<Reference Include="Microsoft.Build.Framework" />
<Code Type="Class" Language="cs">
<![CDATA[
using System;
using System.IO;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using Microsoft.Build.Framework;
public class SwitchVersionTask : Microsoft.Build.Utilities.Task
{
private string basedir;
private string TemplatePath;
private string DestinationPath;
public override bool Execute()
{
basedir = Path.GetFullPath(@"$(BaseDir)");
Log.LogMessage(MessageImportance.High,
"Parsing FreeSWITCH version.");
string ConfigureAC = File.ReadAllText(@"$(BaseDir)configure.ac");
string pattern = @"AC_SUBST\((SWITCH_VERSION_[A-Z_]+),.*\[(.?)\]\)";
Dictionary<string, string> v = new Dictionary<string, string>();
string year = DateTime.UtcNow.Year.ToString();
v.Add("SWITCH_VERSION_YEAR", year);
foreach (Match m in Regex.Matches(ConfigureAC, pattern)) {
v.Add(m.Groups[1].Value.Trim(), m.Groups[2].Value.Trim());
Log.LogMessage(MessageImportance.High,
m.Groups[1].Value + " = '" + m.Groups[2].Value + "'");
}
//---------------------------------------------------------
Log.LogMessage(MessageImportance.High,
"Generating switch_version.h");
TemplatePath = basedir + @"src\include\switch_version.h.template";
DestinationPath = basedir + @"src\include\switch_version.h";
string template = File.ReadAllText(TemplatePath);
foreach (var version_bit in v) {
template = template.Replace("@" + version_bit.Key + "@", version_bit.Value);
}
File.WriteAllText(DestinationPath, template);
//---------------------------------------------------------
Log.LogMessage(MessageImportance.High,
"Generating switch_version.inc");
TemplatePath = @"$(ProjectDir)\switch_version.inc.template";
DestinationPath = @"$(ProjectDir)\switch_version.inc";
template = File.ReadAllText(TemplatePath);
foreach (var version_bit in v) {
template = template.Replace("@" + version_bit.Key + "@", version_bit.Value);
}
File.WriteAllText(DestinationPath, template);
//---------------------------------------------------------
return true;
}
}
]]>
</Code>
</Task>
</UsingTask>
<Target Name="SwitchVersionTarget" BeforeTargets="CustomBuild;Build">
<SwitchVersionTask>
</SwitchVersionTask>
</Target>
</Project>