mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-05 22:04:57 +00:00
(svn r11089) -Codechange: add revision detection to MSVC.
This commit is contained in:
parent
7b7c66fb6b
commit
9e7931f6ea
@ -249,15 +249,15 @@ $(OBJS_RC): %.o: $(SRC_DIR)/%.rc $(FILE_DEP)
|
||||
$(BIN_DIR)/$(TTD): $(TTD)
|
||||
$(Q)cp $< $@
|
||||
|
||||
$(TTD): rev.o $(OBJS) $(CONFIG_CACHE_LINKER)
|
||||
$(TTD): $(OBJS) $(CONFIG_CACHE_LINKER)
|
||||
$(E) '$(STAGE) Linking $@'
|
||||
ifeq ($(OS), PSP)
|
||||
# Because of a bug in the PSP GCC tools, linking via CXX results
|
||||
# in total chaos and more problems then you can handle. So we need
|
||||
# CC to link OpenTTD for PSP
|
||||
$(Q)$(CC_HOST) $(LDFLAGS) rev.o $(OBJS) $(LIBS) -o $@
|
||||
$(Q)$(CC_HOST) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
|
||||
else
|
||||
$(Q)$(CXX_HOST) $(LDFLAGS) rev.o $(OBJS) $(LIBS) -o $@
|
||||
$(Q)$(CXX_HOST) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
|
||||
endif
|
||||
ifdef STRIP
|
||||
$(Q)$(STRIP) $@
|
||||
@ -275,19 +275,11 @@ $(ENDIAN_CHECK): $(SRC_DIR)/endian_check.cpp
|
||||
|
||||
# Revision files
|
||||
|
||||
rev.cpp: $(CONFIG_CACHE_VERSION)
|
||||
# setting the revision number in a place, there the binary can read it
|
||||
@echo 'extern const char _openttd_revision[] = "$(REV)";' > rev.cpp
|
||||
# Some additions for MorphOS versions tag
|
||||
ifeq ($(OS),MORPHOS)
|
||||
@echo '#ifdef __MORPHOS__' >> rev.cpp
|
||||
@echo 'extern const char morphos_versions_tag[] = "\\0$$VER: OpenTTD $(REV) ('`date +%d.%m.%y`') (C) OpenTTD Team [MorphOS, PowerPC]";' >> rev.cpp
|
||||
@echo '#endif' >> rev.cpp
|
||||
endif
|
||||
$(SRC_DIR)/rev.cpp: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/rev.cpp.in
|
||||
$(Q)cat $(SRC_DIR)/rev.cpp.in | sed "s#@@VERSION@@#$(REV)#g;s#@@DATE@@#`date +%d.%m.%y`#g" > $(SRC_DIR)/rev.cpp
|
||||
|
||||
rev.o: rev.cpp $(FILE_DEP)
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_HOST) $(CFLAGS) -c -o $@ $<
|
||||
$(SRC_DIR)/ottdres.rc: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/ottdres.rc.in
|
||||
$(Q)cat $(SRC_DIR)/ottdres.rc.in | sed "s#@@VERSION@@#$(REV)#g;s#@@DATE@@#`date +%d.%m.%y`#g" > $(SRC_DIR)/ottdres.rc
|
||||
|
||||
FORCE:
|
||||
|
||||
@ -295,10 +287,10 @@ depend: $(DEPS)
|
||||
|
||||
clean:
|
||||
$(E) '$(STAGE) Cleaning up object files'
|
||||
$(Q)rm -f $(DEPS) $(OBJS) $(TTD) $(TTD:%=$(BIN_DIR)/%) $(CONFIG_CACHE_COMPILER) $(CONFIG_CACHE_LINKER) $(CONFIG_CACHE_ENDIAN) $(CONFIG_CACHE_SOURCE) $(ENDIAN_TARGETS) rev.o rev.cpp
|
||||
$(Q)rm -f $(DEPS) $(OBJS) $(TTD) $(TTD:%=$(BIN_DIR)/%) $(CONFIG_CACHE_COMPILER) $(CONFIG_CACHE_LINKER) $(CONFIG_CACHE_ENDIAN) $(CONFIG_CACHE_SOURCE) $(ENDIAN_TARGETS)
|
||||
|
||||
mrproper: clean
|
||||
$(Q)rm -f rev.cpp
|
||||
$(Q)rm -f $(SRC_DIR)/rev.cpp $(SRC_DIR)/ottdres.rc
|
||||
|
||||
%.o:
|
||||
@echo '$(STAGE) No such source-file: $(@:%.o=%).[c|cpp|mm|rc]'
|
||||
|
@ -745,7 +745,7 @@ make_cflags_and_ldflags() {
|
||||
# General CFlags for BUILD
|
||||
CFLAGS_BUILD=""
|
||||
# General CFlags for HOST
|
||||
CFLAGS="$CFLAGS -D$os -DWITH_REV"
|
||||
CFLAGS="$CFLAGS -D$os"
|
||||
# CFlags for HOST and C-Compiler
|
||||
CC_FLAGS=""
|
||||
# Libs to compile. In fact this is just LDFLAGS
|
||||
|
129
projects/determineversion.vbs
Normal file
129
projects/determineversion.vbs
Normal file
@ -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
|
@ -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
|
||||
@ -319,6 +323,9 @@
|
||||
<File
|
||||
RelativePath=".\..\src\rail.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\rev.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\saveload.cpp">
|
||||
</File>
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
@ -655,6 +663,10 @@
|
||||
RelativePath=".\..\src\rail.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\rev.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\saveload.cpp"
|
||||
>
|
||||
|
@ -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"
|
||||
|
@ -57,6 +57,7 @@ pathfind.cpp
|
||||
players.cpp
|
||||
queue.cpp
|
||||
rail.cpp
|
||||
rev.cpp
|
||||
saveload.cpp
|
||||
screenshot.cpp
|
||||
#if SDL
|
||||
|
@ -3,15 +3,7 @@
|
||||
#include "../stdafx.h"
|
||||
#include "network_data.h"
|
||||
|
||||
#if defined(WITH_REV)
|
||||
extern const char _openttd_revision[];
|
||||
#elif defined(WITH_REV_HACK)
|
||||
#define WITH_REV
|
||||
extern const char _openttd_revision[] = WITH_REV_HACK;
|
||||
#else
|
||||
extern const char _openttd_revision[] = NOREV_STRING;
|
||||
#endif
|
||||
|
||||
extern const char _openttd_revision[];
|
||||
|
||||
#ifdef ENABLE_NETWORK
|
||||
|
||||
@ -1463,8 +1455,6 @@ void NetworkShutDown()
|
||||
|
||||
/**
|
||||
* Checks whether the given version string is compatible with our version.
|
||||
* It'll check the first NETWORK_REVISION_LENGTH - 1 characters (-1 for '\0')
|
||||
* against the current version and the NOREV_STRING.
|
||||
* @param other the version string to compare to
|
||||
*/
|
||||
bool IsNetworkCompatibleVersion(const char *other)
|
||||
|
@ -3,8 +3,6 @@
|
||||
#ifndef NETWORK_H
|
||||
#define NETWORK_H
|
||||
|
||||
#define NOREV_STRING "norev000"
|
||||
|
||||
#ifdef ENABLE_NETWORK
|
||||
|
||||
#include "../player.h"
|
||||
|
@ -84,14 +84,14 @@ BEGIN
|
||||
VALUE "Comments", "This program is licensed under the GNU General Public License.\0"
|
||||
VALUE "CompanyName", "OpenTTD Development Team\0"
|
||||
VALUE "FileDescription", "OpenTTD\0"
|
||||
VALUE "FileVersion", "Development Version\0"
|
||||
VALUE "FileVersion", "Development @@VERSION@@\0"
|
||||
VALUE "InternalName", "openttd\0"
|
||||
VALUE "LegalCopyright", "Copyright © OpenTTD Developers 2002-2007. All Rights Reserved.\0"
|
||||
VALUE "LegalTrademarks", "\0"
|
||||
VALUE "OriginalFilename", "openttd.exe\0"
|
||||
VALUE "PrivateBuild", "\0"
|
||||
VALUE "ProductName", "OpenTTD\0"
|
||||
VALUE "ProductVersion", "Development Version\0"
|
||||
VALUE "ProductVersion", "Development @@VERSION@@\0"
|
||||
VALUE "SpecialBuild", "-\0"
|
||||
END
|
||||
END
|
4
src/rev.cpp.in
Normal file
4
src/rev.cpp.in
Normal file
@ -0,0 +1,4 @@
|
||||
extern const char _openttd_revision[] = "@@VERSION@@";
|
||||
#ifdef __MORPHOS__
|
||||
extern const char morphos_versions_tag[] = "\\0$VER: OpenTTD @@VERSION@@ (@@DATE@@) OpenTTD Team [MorphOS, PowerPC]";
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user