summaryrefslogtreecommitdiff
path: root/projects
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-09-12 07:11:48 +0000
committerrubidium <rubidium@openttd.org>2007-09-12 07:11:48 +0000
commit9e7931f6ea41eea7052e7f40cc841694feed252b (patch)
tree2a8a491bac20ead349d11179cf161aaf43c0cb74 /projects
parent7b7c66fb6b604e32dbcfb6104771b33fa6f32dc1 (diff)
downloadopenttd-9e7931f6ea41eea7052e7f40cc841694feed252b.tar.xz
(svn r11089) -Codechange: add revision detection to MSVC.
Diffstat (limited to 'projects')
-rw-r--r--projects/determineversion.vbs129
-rw-r--r--projects/openttd.vcproj11
-rw-r--r--projects/openttd.vcproj.in8
-rw-r--r--projects/openttd_vs80.vcproj12
-rw-r--r--projects/openttd_vs80.vcproj.in8
5 files changed, 164 insertions, 4 deletions
diff --git a/projects/determineversion.vbs b/projects/determineversion.vbs
new file mode 100644
index 000000000..fc1c31405
--- /dev/null
+++ b/projects/determineversion.vbs
@@ -0,0 +1,129 @@
+Option Explicit
+
+Dim FSO
+Set FSO = CreateObject("Scripting.FileSystemObject")
+
+Sub FindReplaceInFile(filename, to_find, replacement)
+ Dim file, data
+ Set file = FSO.OpenTextFile(filename, 1, 0, 0)
+ data = file.ReadAll
+ file.Close
+ data = Replace(data, to_find, replacement)
+ Set file = FSO.CreateTextFile(FileName, -1, 0)
+ file.Write data
+ file.Close
+End Sub
+
+Sub UpdateFile(version, cur_date, filename)
+ FSO.CopyFile filename & ".in", filename
+ FindReplaceInFile filename, "@@VERSION@@", version
+ FindReplaceInFile filename, "@@DATE@@", cur_date
+End Sub
+
+Sub UpdateFiles(version)
+ Dim cur_date
+ cur_date = DatePart("D", Date) & "." & DatePart("M", Date) & "." & DatePart("YYYY", Date)
+ UpdateFile version, cur_date, "../src/rev.cpp"
+ UpdateFile version, cur_date, "../src/ottdres.rc"
+End Sub
+
+Function DetermineSVNVersion()
+ Dim WshShell, version, url, oExec
+ Set WshShell = CreateObject("WScript.Shell")
+ On Error Resume Next
+
+ ' Try TortoiseSVN
+ ' Get the directory where TortoiseSVN (should) reside(s)
+ Dim sTortoise
+ sTortoise = WshShell.RegRead("HKLM\SOFTWARE\TortoiseSVN\Directory")
+
+ Dim file
+ ' Write some "magic" to a temporary file so we can acquire the svn revision/state
+ Set file = FSO.CreateTextFile("tsvn_tmp", -1, 0)
+ file.WriteLine "$WCREV$$WCMODS?M:$"
+ file.WriteLine "$WCURL$"
+ file.Close
+ Set oExec = WshShell.Exec(sTortoise & "\bin\SubWCRev.exe ../src tsvn_tmp tsvn_tmp")
+ ' Wait till the application is finished ...
+ Do
+ OExec.StdOut.ReadLine()
+ Loop While Not OExec.StdOut.atEndOfStream
+
+ Set file = FSO.OpenTextFile("tsvn_tmp", 1, 0, 0)
+ version = file.ReadLine
+ url = file.ReadLine
+ file.Close
+
+ Set file = FSO.GetFile("tsvn_tmp")
+ file.Delete
+
+ ' Looks like there is no TortoiseSVN installed either. Then we don't know it.
+ If InStr(version, "$") Then
+ ' Reset error and version
+ Err.Clear
+ version = "norev000"
+ ' Do we have subversion installed? Check immediatelly whether we've got a modified WC.
+ Set oExec = WshShell.Exec("svnversion ../src")
+ If Err.Number = 0 Then
+ Dim modified
+ If InStr(OExec.StdOut.ReadLine(), "M") Then
+ modified = "M"
+ Else
+ modified = ""
+ End If
+
+ ' Set the environment to english
+ WshShell.Environment("PROCESS")("LANG") = "en"
+
+ ' And use svn info to get the correct revision and branch information.
+ Set oExec = WshShell.Exec("svn info ../src")
+ If Err.Number = 0 Then
+ Dim line
+ Do
+ line = OExec.StdOut.ReadLine()
+ If InStr(line, "URL") Then
+ url = line
+ End If
+ If InStr(line, "Last Changed Rev") Then
+ version = Mid(line, 19) & modified
+ End If
+ Loop While Not OExec.StdOut.atEndOfStream
+ End If
+ End If
+ End If
+
+ If version <> "norev000" Then
+ If InStr(url, "branches") Then
+ url = Mid(url, InStr(url, "branches") + 8)
+ url = Mid(url, 1, InStr(2, url, "/") - 1)
+ version = version & Replace(url, "/", "-")
+ End If
+ End If
+
+ DetermineSVNVersion = version
+End Function
+
+Function IsCachedVersion(version)
+ Dim cache_file, cached_version
+ cached_version = ""
+ Set cache_file = FSO.OpenTextFile("../config.cache.version", 1, True, 0)
+ If Not cache_file.atEndOfStream Then
+ cached_version = cache_file.ReadLine()
+ End If
+ cache_file.Close
+
+ If version <> cached_version Then
+ Set cache_file = fso.CreateTextFile("../config.cache.version", True)
+ cache_file.WriteLine(version)
+ cache_file.Close
+ IsCachedVersion = False
+ Else
+ IsCachedVersion = True
+ End If
+End Function
+
+Dim version
+version = DetermineSVNVersion
+If Not (IsCachedVersion(version) And FSO.FileExists("../src/rev.cpp") And FSO.FileExists("../src/ottdres.rc")) Then
+ UpdateFiles version
+End If
diff --git a/projects/openttd.vcproj b/projects/openttd.vcproj
index bd6617768..fae3678b5 100644
--- a/projects/openttd.vcproj
+++ b/projects/openttd.vcproj
@@ -73,7 +73,9 @@
<Tool
Name="VCPostBuildEventTool"/>
<Tool
- Name="VCPreBuildEventTool"/>
+ Name="VCPreBuildEventTool"
+ Description="Determining version number"
+ CommandLine="$(InputDir)/determineversion.vbs"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
@@ -135,7 +137,9 @@
<Tool
Name="VCPostBuildEventTool"/>
<Tool
- Name="VCPreBuildEventTool"/>
+ Name="VCPreBuildEventTool"
+ Description="Determining version number"
+ CommandLine="$(InputDir)/determineversion.vbs"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
@@ -320,6 +324,9 @@
RelativePath=".\..\src\rail.cpp">
</File>
<File
+ RelativePath=".\..\src\rev.cpp">
+ </File>
+ <File
RelativePath=".\..\src\saveload.cpp">
</File>
<File
diff --git a/projects/openttd.vcproj.in b/projects/openttd.vcproj.in
index 0bf01c070..bf58713a0 100644
--- a/projects/openttd.vcproj.in
+++ b/projects/openttd.vcproj.in
@@ -73,7 +73,9 @@
<Tool
Name="VCPostBuildEventTool"/>
<Tool
- Name="VCPreBuildEventTool"/>
+ Name="VCPreBuildEventTool"
+ Description="Determining version number"
+ CommandLine="$(InputDir)/determineversion.vbs"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
@@ -135,7 +137,9 @@
<Tool
Name="VCPostBuildEventTool"/>
<Tool
- Name="VCPreBuildEventTool"/>
+ Name="VCPreBuildEventTool"
+ Description="Determining version number"
+ CommandLine="$(InputDir)/determineversion.vbs"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
diff --git a/projects/openttd_vs80.vcproj b/projects/openttd_vs80.vcproj
index c7128fd1e..e2a5414ba 100644
--- a/projects/openttd_vs80.vcproj
+++ b/projects/openttd_vs80.vcproj
@@ -33,6 +33,8 @@
>
<Tool
Name="VCPreBuildEventTool"
+ Description="Determining version number"
+ CommandLine="$(InputDir)/determineversion.vbs"
/>
<Tool
Name="VCCustomBuildTool"
@@ -144,6 +146,8 @@
>
<Tool
Name="VCPreBuildEventTool"
+ Description="Determining version number"
+ CommandLine="$(InputDir)/determineversion.vbs"
/>
<Tool
Name="VCCustomBuildTool"
@@ -255,6 +259,8 @@
>
<Tool
Name="VCPreBuildEventTool"
+ Description="Determining version number"
+ CommandLine="$(InputDir)/determineversion.vbs"
/>
<Tool
Name="VCCustomBuildTool"
@@ -350,6 +356,8 @@
>
<Tool
Name="VCPreBuildEventTool"
+ Description="Determining version number"
+ CommandLine="$(InputDir)/determineversion.vbs"
/>
<Tool
Name="VCCustomBuildTool"
@@ -656,6 +664,10 @@
>
</File>
<File
+ RelativePath=".\..\src\rev.cpp"
+ >
+ </File>
+ <File
RelativePath=".\..\src\saveload.cpp"
>
</File>
diff --git a/projects/openttd_vs80.vcproj.in b/projects/openttd_vs80.vcproj.in
index 83dab75d3..de8feb428 100644
--- a/projects/openttd_vs80.vcproj.in
+++ b/projects/openttd_vs80.vcproj.in
@@ -33,6 +33,8 @@
>
<Tool
Name="VCPreBuildEventTool"
+ Description="Determining version number"
+ CommandLine="$(InputDir)/determineversion.vbs"
/>
<Tool
Name="VCCustomBuildTool"
@@ -144,6 +146,8 @@
>
<Tool
Name="VCPreBuildEventTool"
+ Description="Determining version number"
+ CommandLine="$(InputDir)/determineversion.vbs"
/>
<Tool
Name="VCCustomBuildTool"
@@ -255,6 +259,8 @@
>
<Tool
Name="VCPreBuildEventTool"
+ Description="Determining version number"
+ CommandLine="$(InputDir)/determineversion.vbs"
/>
<Tool
Name="VCCustomBuildTool"
@@ -350,6 +356,8 @@
>
<Tool
Name="VCPreBuildEventTool"
+ Description="Determining version number"
+ CommandLine="$(InputDir)/determineversion.vbs"
/>
<Tool
Name="VCCustomBuildTool"