summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorArnavion <arnavion@gmail.com>2013-12-27 12:05:07 -0800
committerArnavion <arnavion@gmail.com>2013-12-27 12:05:07 -0800
commitc7bf4b0474c613f81e3724043386373d7bc7d2a3 (patch)
tree82a47c7c7306a736f0d6ec8afbd17ac0eb45f68e
parent61ceaef57e19f7b19669bca4f7972123d2e6b119 (diff)
Replaced use of T4 templates with PS-based templates.
TextTransform.exe is not available with Express versions of Visual Studio.
-rw-r--r--config-win32.h.tt6
-rw-r--r--src/common/common.vcxproj6
-rw-r--r--src/fe-gtk/fe-gtk.vcxproj4
-rw-r--r--src/fe-gtk/hexchat.rc.tt4
-rw-r--r--version-template.ps112
-rw-r--r--version.include.tt12
-rw-r--r--win32/hexchat.props2
-rw-r--r--win32/installer/hexchat.iss.tt4
-rw-r--r--win32/installer/installer.vcxproj2
-rw-r--r--win32/version.txt.tt2
10 files changed, 28 insertions, 26 deletions
diff --git a/config-win32.h.tt b/config-win32.h.tt
index 8f21d0b1..fc1679f6 100644
--- a/config-win32.h.tt
+++ b/config-win32.h.tt
@@ -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
diff --git a/src/common/common.vcxproj b/src/common/common.vcxproj
index 39c50222..720faae7 100644
--- a/src/common/common.vcxproj
+++ b/src/common/common.vcxproj
@@ -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>

diff --git a/src/fe-gtk/fe-gtk.vcxproj b/src/fe-gtk/fe-gtk.vcxproj
index f7341904..6b6301b2 100644
--- a/src/fe-gtk/fe-gtk.vcxproj
+++ b/src/fe-gtk/fe-gtk.vcxproj
@@ -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>

diff --git a/src/fe-gtk/hexchat.rc.tt b/src/fe-gtk/hexchat.rc.tt
index 87507340..2b384c49 100644
--- a/src/fe-gtk/hexchat.rc.tt
+++ b/src/fe-gtk/hexchat.rc.tt
@@ -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"

 

diff --git a/version-template.ps1 b/version-template.ps1
new file mode 100644
index 00000000..18eb90d9
--- /dev/null
+++ b/version-template.ps1
@@ -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)
diff --git a/version.include.tt b/version.include.tt
deleted file mode 100644
index ab77a6d9..00000000
--- a/version.include.tt
+++ /dev/null
@@ -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('.');
-#>
\ No newline at end of file
diff --git a/win32/hexchat.props b/win32/hexchat.props
index 3acfd913..8f5b6644 100644
--- a/win32/hexchat.props
+++ b/win32/hexchat.props
@@ -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>

diff --git a/win32/installer/hexchat.iss.tt b/win32/installer/hexchat.iss.tt
index 1ba55303..74156720 100644
--- a/win32/installer/hexchat.iss.tt
+++ b/win32/installer/hexchat.iss.tt
@@ -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\"
diff --git a/win32/installer/installer.vcxproj b/win32/installer/installer.vcxproj
index 09654ab0..0e46f373 100644
--- a/win32/installer/installer.vcxproj
+++ b/win32/installer/installer.vcxproj
@@ -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"

diff --git a/win32/version.txt.tt b/win32/version.txt.tt
index 64e50010..778db65c 100644
--- a/win32/version.txt.tt
+++ b/win32/version.txt.tt
@@ -1 +1 @@
-<#@ include file="..\version.include.tt" #><#= string.Join(".", versionParts) #>
\ No newline at end of file
+<#= [string]::Join('.', $versionParts) #>
\ No newline at end of file