(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
	 Celestar
					Celestar