(svn r2032) -Codechange: A less hackish version of SVN version detection for OS/2 (orudge)

This commit is contained in:
Celestar 2005-03-19 23:23:56 +00:00
parent f179dc7acc
commit 1990c139d5
5 changed files with 23 additions and 59 deletions

View File

@ -103,20 +103,14 @@ A Note About Subversion Revision Numbers
----------------------------------------
The project file uses a bit of a hack to find out the SVN revision number and
create an appropriate rev.c file. It does this using a batch file and a GNU
makefile, as well as the SVN tools (specifically, "svnversion"). For this to
work successfully, you'll need the SVN tools installed and in your path, as
well as some of the GNU tools (GNU make, and some tools from textutils,
possibly others too) - otherwise, a generic rev.c with the revision set to
"norev000" will be created. To specifically force a version number, set
the environment variable "RELEASE" to the number (eg, "0.3.6") -before-
starting the Open Watcom IDE (which must be launched from the same shell
create an appropriate rev.c file. You'll need the SVN tools in your path
(specifically, "svnversion"). If "svnversion" can't be found, a generic rev.c
with the revision set to "norev000" will be created. To specifically force a
version number, set the environment variable "RELEASE" to the number (eg, "0.3.6")
-before- starting the Open Watcom IDE (which must be launched from the same shell
session). Also, beware, as you WILL cause incompatibilities if you try to
play a multiplayer game with a different version.
Apologies for the complicated hack used here, but it's a bit of a pain to do,
as any Windows MSVC user will tell you. ;)
Compiling
---------

View File

@ -1,33 +1,30 @@
@echo off
echo Running SVN version detection script...
rem
rem Requires subversion (`svnversion'), GNU make and some other GNU tools (eg, textutils)
rem installed - a hack, I know, but it seems to work if you have the appropriate tools
rem installed.
rem Requires subversion (`svnversion') to be installed
rem
cd ..\..
if not exist .svn goto nosvn
make -f os/os2/svn_version.mak
if not %ERRORLEVEL%==0 goto nomake
if not "%RELEASE%"=="" goto forcerelease
svnversion -n . > os\os2\svnver.tmp
if not "%ERRORLEVEL%"=="0" goto nosvn
copy os\os2\svnver1.c+os\os2\svnver.tmp+os\os2\svnver2.c rev.c /a /y > nul 2> nul
goto end
:nomake
gmake -f os/os2/svn_version.mak
if not %ERRORLEVEL%==0 goto nomake2
:forcerelease
echo Forcing release string "%RELEASE%"...
echo const char _openttd_revision[] = "%RELEASE%"; > rev.c
echo const int _revision_number = 0; >> rev.c
goto end
:nomake2
echo Neither `make` nor `gmake' could be found, SVN version detection unable to
echo run. Default rev.c used...
:nosvn
echo Error executing `svnversion' or no SVN data detected
echo const char _openttd_revision[] = "norev000"; > rev.c
echo const int _revision_number = 0; >> rev.c
echo #ifdef __MORPHOS__ >> rev.c
echo const char morphos_versions_tag[] = "\\0$VER: OpenTTD norev000 (00.00.00) © OpenTTD Team [MorphOS, PowerPC]"; >> rev.c
echo #endif >> rev.c
goto end
:end
cd os\os2
del svnver.tmp > nul 2> nul
rem end

View File

@ -1,34 +0,0 @@
all : rev.c
# What revision are we compiling, if we have an idea?
REV_NUMBER := $(shell if test -d .svn; then svnversion . | tr -dc 0-9; fi)
ifdef RELEASE
REV:=$(RELEASE)
else
REV := $(shell if test -d .svn; then svnversion . | awk '{ print "r"$$0 }'; fi)
tmp_test:=$(shell echo "$(REV)" | grep "M" )
ifdef tmp_test
REV_NUMBER:=1
endif
endif
ifndef REV_NUMBER
REV_NUMBER:=0
endif
rev.c: FORCE
@# setting the revision number in a place, there the binary can read it
@echo 'const char _openttd_revision[] = "$(REV)";' >>rev.c.new
@echo 'const int _revision_number = $(REV_NUMBER);' >>rev.c.new
@# some additions for MorphOS versions tag
@echo '#ifdef __MORPHOS__' >>rev.c.new
@echo 'const char morphos_versions_tag[] = "\\0$$VER: OpenTTD $(REV) ('${BUILDDATE}') © OpenTTD Team [MorphOS, PowerPC]";' >>rev.c.new
@echo '#endif' >>rev.c.new
@# Only update the real rev.c if it actually changed, to prevent
@# useless rebuilds.
@cmp -s rev.c rev.c.new 2>/dev/null || mv rev.c.new rev.c
@rm -f rev.c.new
FORCE:

3
os/os2/svnver1.c Normal file
View File

@ -0,0 +1,3 @@
/* rev.c part #1 for OS/2 - ensure no newline at end of file! */
const char _openttd_revision[] = "

4
os/os2/svnver2.c Normal file
View File

@ -0,0 +1,4 @@
";
const int _revision_number = 0;
/* rev.c part 2 for OS/2 - ensure no newline at start of file! */