Replaced use of T4 templates with PS-based templates.

TextTransform.exe is not available with Express versions of Visual Studio.
This commit is contained in:
Arnavion 2013-12-27 12:05:07 -08:00
parent 61ceaef57e
commit c7bf4b0474
10 changed files with 28 additions and 26 deletions

View File

@ -1,4 +1,4 @@
<#@ include file="version.include.tt" #>#define LOCALEDIR ".\\share\\locale"
#define LOCALEDIR ".\\share\\locale"
#define ENABLE_NLS
#define USE_GMODULE
#define USE_PLUGIN
@ -8,12 +8,12 @@
#define ISO_CODES_PREFIX ".\\"
#define ISO_CODES_LOCALEDIR LOCALEDIR
#define PACKAGE_NAME "hexchat"
#define PACKAGE_VERSION "<#= string.Join(".", versionParts) #>"
#define PACKAGE_VERSION "<#= [string]::Join('.', $versionParts) #>"
#define HEXCHATLIBDIR ".\\plugins"
#define HEXCHATSHAREDIR "."
#define OLD_PERL
#define GETTEXT_PACKAGE "hexchat"
#define PACKAGE_TARNAME "hexchat-<#= string.Join(".", versionParts) #>"
#define PACKAGE_TARNAME "hexchat-<#= [string]::Join('.', $versionParts) #>"
#ifndef USE_IPV6
#define socklen_t int
#endif

View File

@ -159,8 +159,10 @@
<Command>
<![CDATA[
SET SOLUTIONDIR=$(SolutionDir)..\
$(TextTransformPath) -out "%SOLUTIONDIR%config-win32.h" "%SOLUTIONDIR%config-win32.h.tt"
$(TextTransformPath) -out "%SOLUTIONDIR%win32\version.txt" "%SOLUTIONDIR%win32\version.txt.tt"
powershell "$(SolutionDir)..\version-template.ps1" "$(SolutionDir)..\config-win32.h.tt" "$(SolutionDir)..\config-win32.h"
powershell "$(SolutionDir)..\version-template.ps1" "$(SolutionDir)..\win32\version.txt.tt" "$(SolutionDir)..\win32\version.txt.tmp"
REM version.txt must be in UTF-8 without trailing newline
powershell "[string] $content = Get-Content '$(SolutionDir)..\win32\version.txt.tmp' -Encoding UTF8; [System.IO.File]::WriteAllText('$(SolutionDir)..\win32\version.txt', $content); Remove-Item '$(SolutionDir)..\win32\version.txt.tmp';"
]]>
</Command>
</PreBuildEvent>

View File

@ -100,7 +100,9 @@
<Command>
<![CDATA[
SET SOLUTIONDIR=$(SolutionDir)..\
$(TextTransformPath) -out hexchat.rc hexchat.rc.tt
powershell "$(SolutionDir)..\version-template.ps1" "$(SolutionDir)..\src\fe-gtk\hexchat.rc.tt" "$(SolutionDir)..\src\fe-gtk\hexchat.rc.utf8"
REM hexchat.rc needs to be in UCS-2 or Resource Compiler will complain
powershell "Get-Content -Encoding UTF8 '$(SolutionDir)..\src\fe-gtk\hexchat.rc.utf8' | Out-File '$(SolutionDir)..\src\fe-gtk\hexchat.rc'; Remove-Item '$(SolutionDir)..\src\fe-gtk\hexchat.rc.utf8'"
"$(DepsRoot)\bin\glib-compile-resources.exe" --generate-source --sourcedir $(DataDir) --target "$(ProjectDir)resources.c" "$(DataDir)hexchat.gresource.xml"
]]>
</Command>

View File

@ -1,7 +1,7 @@
<#@ include file="..\..\version.include.tt" #>#include <winver.h>
#include <winver.h>
#include "../../config-win32.h"
#define COMMA_VERSION <#= string.Join(",", versionParts) #>,0
#define COMMA_VERSION <#= [string]::Join(',', $versionParts) #>,0
XC_ICON ICON "../../data/icons/hexchat.ico"

12
version-template.ps1 Normal file
View File

@ -0,0 +1,12 @@
param ([string] $templateFilename, [string] $outputFilename)
$versionParts = Select-String -Path "${env:SOLUTIONDIR}configure.ac" -Pattern '^AC_INIT\(\[HexChat\],\[([^]]+)\]\)$' | Select-Object -First 1 | %{ $_.Matches[0].Groups[1].Value.Split('.') }
[string[]] $contents = Get-Content $templateFilename -Encoding UTF8 | %{
while ($_ -match '^(.*?)<#=(.*?)#>(.*?)$') {
$_ = $Matches[1] + $(Invoke-Expression $Matches[2]) + $Matches[3]
}
$_
}
[System.IO.File]::WriteAllLines($outputFilename, $contents)

View File

@ -1,12 +0,0 @@
<#@
template debug="false" hostspecific="false" language="C#" #><#@
assembly name="System.Core" #><#@
import namespace="System.IO" #><#@
import namespace="System.Linq" #><#@
import namespace="System.Text.RegularExpressions" #><#
var versionParts = File.ReadLines(Path.Combine(System.Environment.GetEnvironmentVariable("SOLUTIONDIR"), "configure.ac"))
.Select(line => Regex.Match(line, @"^AC_INIT\(\[HexChat\],\[([^]]+)\]\)$"))
.First(match => match.Success)
.Groups[1].Value
.Split('.');
#>

View File

@ -94,8 +94,6 @@ copy "$(HexChatBin)hcsysinfo.dll" "$(HexChatRel)\plugins"
xcopy /q /s /i "$(HexChatBin)locale" "$(HexChatRel)\share\locale"
xcopy /q /s /i "$(DepsRoot)\share\locale" "$(HexChatRel)\share\locale"
</HexChatCopy>
<TextTransformPath Condition="'$(Platform)'=='Win32'">"%PROGRAMFILES%\Common Files\microsoft shared\TextTemplating\12.0\TextTransform.exe"</TextTransformPath>
<TextTransformPath Condition="'$(Platform)'=='x64'">"%PROGRAMFILES(x86)%\Common Files\microsoft shared\TextTemplating\12.0\TextTransform.exe"</TextTransformPath>
<IsccPath Condition="'$(Platform)'=='Win32'">"%PROGRAMFILES%\Inno Setup 5\iscc.exe"</IsccPath>
<IsccPath Condition="'$(Platform)'=='x64'">"%PROGRAMFILES(x86)%\Inno Setup 5\iscc.exe"</IsccPath>
</PropertyGroup>

View File

@ -1,5 +1,5 @@
<#@ include file="..\..\version.include.tt" #>#define APPNAM "HexChat"
#define APPVER "<#= string.Join(".", versionParts) #>"
#define APPNAM "HexChat"
#define APPVER "<#= [string]::Join('.', $versionParts) #>"
; These are defined by our installer project at build time
;#define APPARCH "x64"
;#define PROJECTDIR "C:\...\hexchat\win32\installer\"

View File

@ -64,7 +64,7 @@
<Command>
<![CDATA[
SET SOLUTIONDIR=$(SolutionDir)..\
$(TextTransformPath) -out "%SOLUTIONDIR%win32\installer\hexchat.iss" "%SOLUTIONDIR%win32\installer\hexchat.iss.tt"
powershell "$(SolutionDir)..\version-template.ps1" "$(SolutionDir)..\win32\installer\hexchat.iss.tt" "$(SolutionDir)..\win32\installer\hexchat.iss"
del "$(OutDir)hexchat.iss"
type hexchat.iss >> "$(OutDir)hexchat.iss"
$(IsccPath) /dPROJECTDIR="$(ProjectDir)" /dAPPARCH="$(Platform)" "$(OutDir)hexchat.iss"

View File

@ -1 +1 @@
<#@ include file="..\version.include.tt" #><#= string.Join(".", versionParts) #>
<#= [string]::Join('.', $versionParts) #>