(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 | ||||
| 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 | ||||
| --------- | ||||
|  | ||||
|   | ||||
| @@ -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) <20> OpenTTD Team [MorphOS, PowerPC]"; >> rev.c | ||||
| echo #endif >> rev.c | ||||
| goto end | ||||
|  | ||||
| :end | ||||
| cd os\os2 | ||||
| del svnver.tmp > nul 2> nul | ||||
| 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
	 Celestar
					Celestar