(svn r2032) -Codechange: A less hackish version of SVN version detection for OS/2 (orudge)
This commit is contained in:
		@@ -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
 | 
					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
 | 
					create an appropriate rev.c file. You'll need the SVN tools in your path
 | 
				
			||||||
makefile, as well as the SVN tools (specifically, "svnversion"). For this to
 | 
					(specifically, "svnversion"). If "svnversion" can't be found, a generic rev.c
 | 
				
			||||||
work successfully, you'll need the SVN tools installed and in your path, as
 | 
					with the revision set to "norev000" will be created. To specifically force a
 | 
				
			||||||
well as some of the GNU tools (GNU make, and some tools from textutils,
 | 
					version number, set the environment variable "RELEASE" to the number (eg, "0.3.6")
 | 
				
			||||||
possibly others too) - otherwise, a generic rev.c with the revision set to
 | 
					-before- starting the Open Watcom IDE (which must be launched from the same shell
 | 
				
			||||||
"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
 | 
					session). Also, beware, as you WILL cause incompatibilities if you try to
 | 
				
			||||||
play a multiplayer game with a different version.
 | 
					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
 | 
					Compiling
 | 
				
			||||||
---------
 | 
					---------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,33 +1,30 @@
 | 
				
			|||||||
@echo off
 | 
					@echo off
 | 
				
			||||||
echo Running SVN version detection script...
 | 
					echo Running SVN version detection script...
 | 
				
			||||||
rem
 | 
					rem
 | 
				
			||||||
rem Requires subversion (`svnversion'), GNU make and some other GNU tools (eg, textutils)
 | 
					rem Requires subversion (`svnversion') to be installed
 | 
				
			||||||
rem installed - a hack, I know, but it seems to work if you have the appropriate tools
 | 
					 | 
				
			||||||
rem installed.
 | 
					 | 
				
			||||||
rem
 | 
					rem
 | 
				
			||||||
cd ..\..
 | 
					cd ..\..
 | 
				
			||||||
if not exist .svn goto nosvn
 | 
					if not exist .svn goto nosvn
 | 
				
			||||||
make -f os/os2/svn_version.mak
 | 
					if not "%RELEASE%"=="" goto forcerelease
 | 
				
			||||||
if not %ERRORLEVEL%==0 goto nomake
 | 
					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
 | 
					goto end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:nomake
 | 
					:forcerelease
 | 
				
			||||||
gmake -f os/os2/svn_version.mak
 | 
					echo Forcing release string "%RELEASE%"...
 | 
				
			||||||
if not %ERRORLEVEL%==0 goto nomake2
 | 
					echo const char _openttd_revision[] = "%RELEASE%"; > rev.c
 | 
				
			||||||
 | 
					echo const int _revision_number = 0; >> rev.c
 | 
				
			||||||
goto end
 | 
					goto end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:nomake2
 | 
					 | 
				
			||||||
echo Neither `make` nor `gmake' could be found, SVN version detection unable to
 | 
					 | 
				
			||||||
echo run. Default rev.c used...
 | 
					 | 
				
			||||||
:nosvn
 | 
					:nosvn
 | 
				
			||||||
 | 
					echo Error executing `svnversion' or no SVN data detected
 | 
				
			||||||
echo const char _openttd_revision[] = "norev000"; > rev.c
 | 
					echo const char _openttd_revision[] = "norev000"; > rev.c
 | 
				
			||||||
echo const int _revision_number = 0; >> 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) <20> OpenTTD Team [MorphOS, PowerPC]"; >> rev.c
 | 
					 | 
				
			||||||
echo #endif >> rev.c
 | 
					 | 
				
			||||||
goto end
 | 
					goto end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:end
 | 
					:end
 | 
				
			||||||
cd os\os2
 | 
					cd os\os2
 | 
				
			||||||
 | 
					del svnver.tmp > nul 2> nul
 | 
				
			||||||
rem end
 | 
					rem end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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}') <20> 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
									
								
							
							
						
						
									
										3
									
								
								os/os2/svnver1.c
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										4
									
								
								os/os2/svnver2.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					";
 | 
				
			||||||
 | 
					const int _revision_number = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* rev.c part 2 for OS/2 - ensure no newline at start of file! */
 | 
				
			||||||
		Reference in New Issue
	
	Block a user