projects/generate
author rubidium
Thu, 18 Dec 2008 12:23:08 +0000
changeset 10436 8d3a9fbe8f19
parent 10400 03e9c6b00a00
permissions -rwxr-xr-x
(svn r14689) -Change: make configure die on commonly made user mistakes, like not having SDL development files or zlib headers installed; you can still compile a dedicated server or a binary without zlib, but you have to explicitly force it.
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     1
#!/bin/bash
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     2
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     3
# This file generates all project files based on sources.list, so everyone who
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     4
#  can start a bash process, can update the project files.
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     5
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     6
ROOT_DIR="`pwd`/.."
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     7
if ! [ -e "$ROOT_DIR/source.list" ]
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     8
then
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
     9
	ROOT_DIR="`pwd`"
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    10
fi
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    11
if ! [ -e "$ROOT_DIR/source.list" ]
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    12
then
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    13
	echo "Can't find source.list, needed in order to make this run. Please go to either"
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    14
	echo " the project dir, or the root dir of a clean SVN checkout."
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    15
	exit 1
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    16
fi
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    17
7897
6aa16b938b99 (svn r11448) -Add: project files for MSVC 2008 (*_vs90.*)
glx
parents: 7894
diff changeset
    18
# openttd_vs90.sln    is for MSVC 2008
6aa16b938b99 (svn r11448) -Add: project files for MSVC 2008 (*_vs90.*)
glx
parents: 7894
diff changeset
    19
# openttd_vs90.vcproj is for MSVC 2008
6aa16b938b99 (svn r11448) -Add: project files for MSVC 2008 (*_vs90.*)
glx
parents: 7894
diff changeset
    20
# langs_vs90.vcproj   is for MSVC 2008
6aa16b938b99 (svn r11448) -Add: project files for MSVC 2008 (*_vs90.*)
glx
parents: 7894
diff changeset
    21
# strgen_vs90.vcproj  is for MSVC 2008
6aa16b938b99 (svn r11448) -Add: project files for MSVC 2008 (*_vs90.*)
glx
parents: 7894
diff changeset
    22
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    23
# openttd_vs80.sln    is for MSVC 2005
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    24
# openttd_vs80.vcproj is for MSVC 2005
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    25
# langs_vs80.vcproj   is for MSVC 2005
7894
0bc87abd10ad (svn r11445) -Codechange: reorder <configuration> in openttd_vs80.vcproj, so there are less diff when it is modified by MSVC
glx
parents: 7294
diff changeset
    26
# strgen_vs80.vcproj  is for MSVC 2005
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    27
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    28
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    29
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    30
# First, collect the list of Windows files
10379
dd9d0aade65e (svn r14630) -Add: support Allegro as video backend.
rubidium
parents: 10377
diff changeset
    31
allegro_config=""
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    32
sdl_config="1"
6901
ad8e8b93060d (svn r10148) -Fix r10143: make --without-png to compile again
truelight
parents: 6177
diff changeset
    33
png_config="1"
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    34
os="MSVC"
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    35
enable_dedicated="0"
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    36
with_cocoa="0"
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    37
enable_directmusic="1"
7294
b53e8aae866c (svn r10642) -Merge (from NoAI): ./configure flag for disabling threading.
rubidium
parents: 6937
diff changeset
    38
with_threads="1"
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    39
file_prefix="..\\\\src\\\\"
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    40
6936
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    41
safety_check() {
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    42
	li=""
6937
40c760fcf1f6 (svn r10190) -Codechange: merged renderer and blitter to one single class API: blitter
truelight
parents: 6936
diff changeset
    43
	for i in `cat $1 | grep -v "#\|ottdres.rc\|win32.cpp\|win32_v.cpp" | xargs -n 1 basename | sort`; do
6936
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    44
		if [ "$li" = "$i" ]; then
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    45
			echo " !! ERROR !!"
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    46
			echo ""
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    47
			echo "The filename '$i' is already used in this project."
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    48
			echo "Because MSVC uses one single directory for all object files, it"
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    49
			echo "cannot handle filenames with the same name inside the same project."
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    50
			echo "Please rename either one of the file and try generating again."
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    51
			echo ""
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    52
			echo " !! ERROR !!"
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    53
			exit 1
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    54
		fi
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    55
		li="$i"
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    56
	done
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    57
}
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
    58
10377
7fd36921d42f (svn r14628) -Fix: projects/generate doesn't handle tabs in sources.list properly when determining whether a header is missing.
rubidium
parents: 10239
diff changeset
    59
grep '\.h' "$ROOT_DIR/source.list" | grep -v '../objs/langs/table/strings.h' | sed 's/	//' | sort > tmp.headers.source.list
10239
cf55a4c21e7f (svn r14467) -Fix [FS#2350](r14443): use '~' instead of '#' as sed separator, it could be understood in a wrong way by shell
smatz
parents: 9052
diff changeset
    60
find "$ROOT_DIR/src" \( -iname "*.h" -or -iname "*.hpp" \) -and -not -ipath "*/.svn/*" | sed "s~$ROOT_DIR/src/~~" | sort > tmp.headers.src
8972
1268a13ddcd2 (svn r12764) -Add: check for missing (forgotten) header files in the generate script.
rubidium
parents: 8934
diff changeset
    61
if [ -n "`diff tmp.headers.source.list tmp.headers.src`" ]; then
1268a13ddcd2 (svn r12764) -Add: check for missing (forgotten) header files in the generate script.
rubidium
parents: 8934
diff changeset
    62
	echo "The following headers are missing in source.list and not in /src/ or vice versa."
1268a13ddcd2 (svn r12764) -Add: check for missing (forgotten) header files in the generate script.
rubidium
parents: 8934
diff changeset
    63
	diff tmp.headers.source.list tmp.headers.src | grep '[<>]' | sort
1268a13ddcd2 (svn r12764) -Add: check for missing (forgotten) header files in the generate script.
rubidium
parents: 8934
diff changeset
    64
	echo ""
1268a13ddcd2 (svn r12764) -Add: check for missing (forgotten) header files in the generate script.
rubidium
parents: 8934
diff changeset
    65
fi
1268a13ddcd2 (svn r12764) -Add: check for missing (forgotten) header files in the generate script.
rubidium
parents: 8934
diff changeset
    66
rm tmp.headers.*
1268a13ddcd2 (svn r12764) -Add: check for missing (forgotten) header files in the generate script.
rubidium
parents: 8934
diff changeset
    67
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    68
load_main_data() {
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    69
	# Read the source.list and process it
5512
a7ed0d7f61fa (svn r7809) -Fix: convert \r to \n before parsing files with awk in projects/generate so it works using mingw/msys
glx
parents: 5475
diff changeset
    70
	RES="`cat $1 | tr '\r' '\n' | awk '
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    71
		/^(	*)#end/  { if (deep == skip) { skip -= 1; } deep -= 1; next; }
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    72
		/^(	*)#else/ { if (deep == skip) { skip -= 1; } else if (deep - 1 == skip) { skip += 1; } next; }
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    73
		/^(	*)#if/   {
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    74
			gsub("	", "", $0);
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    75
			gsub("^#if", "", $0);
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    76
			gsub("^ ", "", $0);
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    77
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    78
			if (deep != skip) { deep += 1; next; }
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    79
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    80
			deep += 1;
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    81
10379
dd9d0aade65e (svn r14630) -Add: support Allegro as video backend.
rubidium
parents: 10377
diff changeset
    82
			if ($0 == "ALLEGRO"     && "'$allegro_config'" == "")      { next; }
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    83
			if ($0 == "SDL"         && "'$sdl_config'" == "")          { next; }
6901
ad8e8b93060d (svn r10148) -Fix r10143: make --without-png to compile again
truelight
parents: 6177
diff changeset
    84
			if ($0 == "PNG"         && "'$png_config'" == "")          { next; }
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    85
			if ($0 == "OSX"         && "'$os'" != "OSX")               { next; }
6045
20affba87a19 (svn r8772) -Fix: forgot to update 'generate' file while updating 'configure' in the last 3 changes in 'configure'
truelight
parents: 5774
diff changeset
    86
			if ($0 == "OS2"         && "'$os'" != "OS2")               { next; }
20affba87a19 (svn r8772) -Fix: forgot to update 'generate' file while updating 'configure' in the last 3 changes in 'configure'
truelight
parents: 5774
diff changeset
    87
			if ($0 == "PSP"         && "'$os'" != "PSP")               { next; }
10400
03e9c6b00a00 (svn r14651) -Fix [FS#2437] (r14636): extmidi wasn't compiled/linked anymore.
rubidium
parents: 10379
diff changeset
    88
			if ($0 == "DOS"         && "'$os'" != "DOS")               { next; }
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    89
			if ($0 == "DEDICATED"   && "'$enable_dedicated'" != "1")   { next; }
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    90
			if ($0 == "COCOA"       && "'$with_cocoa'" == "0")         { next; }
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    91
			if ($0 == "BEOS"        && "'$os'" != "BEOS")              { next; }
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    92
			if ($0 == "WIN32"       && "'$os'" != "MINGW" &&
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    93
											"'$os'" != "CYGWIN" && "'$os'" != "MSVC" ) { next; }
5774
366632561f10 (svn r8326) -Fix r8304: forgot to update projects/generate to keep in mind the new WINCE tag in sources.list
truelight
parents: 5512
diff changeset
    94
			if ($0 == "WINCE"       && "'$os'" != "WINCE")             { next; }
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    95
			if ($0 == "MSVC"        && "'$os'" != "MSVC")              { next; }
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    96
			if ($0 == "DIRECTMUSIC" && "'$enable_directmusic'" != "1") { next; }
6045
20affba87a19 (svn r8772) -Fix: forgot to update 'generate' file while updating 'configure' in the last 3 changes in 'configure'
truelight
parents: 5774
diff changeset
    97
			if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" )        { next; }
8934
f46812d21fe6 (svn r12706) -Merge: the thread rewrite from NoAI. The rewrite makes the threading we have better extendable.
rubidium
parents: 8409
diff changeset
    98
			if ($0 == "HAVE_THREAD" && "'$with_threads'" == "0")       { next; }
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
    99
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   100
			skip += 1;
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   101
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   102
			next;
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   103
		}
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   104
		/^(	*)#/ {
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   105
			if (deep == skip) {
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   106
				gsub("	", "", $0);
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   107
				gsub("^#", "", $0);
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   108
				gsub("^ ", "", $0);
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   109
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   110
				if (first_time != 0) {
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   111
					print "		</Filter>";
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   112
				} else {
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   113
					first_time = 1;
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   114
				}
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   115
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   116
				print "		<Filter";
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   117
				print "			Name=\\""$0"\\"";
8409
de295d5e2bb4 (svn r11979) -Codechange: drop MSVC 2003 support because MSVC 2003 is broken in such a manner that it triggers an internal compiler error without any clue what of the code is wrong. Even trying to bisect the problem does not give a single line of code that causes the trouble.
rubidium
parents: 7897
diff changeset
   118
				print "			>";
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   119
			}
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   120
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   121
			next;
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   122
		}
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   123
		/^$/ { next }
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   124
		{
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   125
			if (deep == skip) {
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   126
				gsub("	", "", $0);
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   127
				gsub("/", "\\\\", $0);
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   128
				print "			<File";
8409
de295d5e2bb4 (svn r11979) -Codechange: drop MSVC 2003 support because MSVC 2003 is broken in such a manner that it triggers an internal compiler error without any clue what of the code is wrong. Even trying to bisect the problem does not give a single line of code that causes the trouble.
rubidium
parents: 7897
diff changeset
   129
				print "				RelativePath=\\".\\\\'$file_prefix'"$0"\\"";
de295d5e2bb4 (svn r11979) -Codechange: drop MSVC 2003 support because MSVC 2003 is broken in such a manner that it triggers an internal compiler error without any clue what of the code is wrong. Even trying to bisect the problem does not give a single line of code that causes the trouble.
rubidium
parents: 7897
diff changeset
   130
				print "				>";
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   131
				print "			</File>";
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   132
			}
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   133
		}
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   134
		END { print "		</Filter>"; }
5512
a7ed0d7f61fa (svn r7809) -Fix: convert \r to \n before parsing files with awk in projects/generate so it works using mingw/msys
glx
parents: 5475
diff changeset
   135
	'`"
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   136
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   137
	eval "$2=\"\$RES\""
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   138
}
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   139
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   140
load_lang_data() {
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   141
	RES=""
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   142
	for i in `ls $1`
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   143
	do
10239
cf55a4c21e7f (svn r14467) -Fix [FS#2350](r14443): use '~' instead of '#' as sed separator, it could be understood in a wrong way by shell
smatz
parents: 9052
diff changeset
   144
		i=`basename $i | sed s~.txt$~~g`
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   145
		RES="$RES
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   146
		<File
8409
de295d5e2bb4 (svn r11979) -Codechange: drop MSVC 2003 support because MSVC 2003 is broken in such a manner that it triggers an internal compiler error without any clue what of the code is wrong. Even trying to bisect the problem does not give a single line of code that causes the trouble.
rubidium
parents: 7897
diff changeset
   147
			RelativePath=\"..\\src\\lang\\"$i".txt\"
de295d5e2bb4 (svn r11979) -Codechange: drop MSVC 2003 support because MSVC 2003 is broken in such a manner that it triggers an internal compiler error without any clue what of the code is wrong. Even trying to bisect the problem does not give a single line of code that causes the trouble.
rubidium
parents: 7897
diff changeset
   148
			>
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   149
			<FileConfiguration
8409
de295d5e2bb4 (svn r11979) -Codechange: drop MSVC 2003 support because MSVC 2003 is broken in such a manner that it triggers an internal compiler error without any clue what of the code is wrong. Even trying to bisect the problem does not give a single line of code that causes the trouble.
rubidium
parents: 7897
diff changeset
   150
				Name=\"Debug|Win32\"
de295d5e2bb4 (svn r11979) -Codechange: drop MSVC 2003 support because MSVC 2003 is broken in such a manner that it triggers an internal compiler error without any clue what of the code is wrong. Even trying to bisect the problem does not give a single line of code that causes the trouble.
rubidium
parents: 7897
diff changeset
   151
				>
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   152
				<Tool
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   153
					Name=\"VCCustomBuildTool\"
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   154
					Description=\"Generating "$i" language file\"
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   155
					CommandLine=\"..\\objs\\strgen\\strgen.exe -s ..\\src\\lang -d ..\\bin\\lang &quot;\$(InputPath)&quot;&#x0D;&#x0A;\"
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   156
					AdditionalDependencies=\"\"
8409
de295d5e2bb4 (svn r11979) -Codechange: drop MSVC 2003 support because MSVC 2003 is broken in such a manner that it triggers an internal compiler error without any clue what of the code is wrong. Even trying to bisect the problem does not give a single line of code that causes the trouble.
rubidium
parents: 7897
diff changeset
   157
					Outputs=\"..\\bin\\lang\\"$i".lng\"
de295d5e2bb4 (svn r11979) -Codechange: drop MSVC 2003 support because MSVC 2003 is broken in such a manner that it triggers an internal compiler error without any clue what of the code is wrong. Even trying to bisect the problem does not give a single line of code that causes the trouble.
rubidium
parents: 7897
diff changeset
   158
				/>
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   159
			</FileConfiguration>
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   160
		</File>"
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   161
	done
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   162
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   163
	eval "$2=\"\$RES\""
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   164
}
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   165
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   166
generate() {
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   167
	echo "Generating $2..."
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   168
	# Everything above the !!FILES!! marker
6177
9da29043c377 (svn r8948) -Change: some sed implementations have problems with \n so rewrite r8832 using awk
glx
parents: 6097
diff changeset
   169
	cat "$ROOT_DIR/projects/$2".in | tr '\r' '\n' | awk '
5512
a7ed0d7f61fa (svn r7809) -Fix: convert \r to \n before parsing files with awk in projects/generate so it works using mingw/msys
glx
parents: 5475
diff changeset
   170
		/^$/ { next }
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   171
		/!!FILES!!/ { stop = 1; }
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   172
		{
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   173
			if (stop == 0) { print $0 }
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   174
		}
6177
9da29043c377 (svn r8948) -Change: some sed implementations have problems with \n so rewrite r8832 using awk
glx
parents: 6097
diff changeset
   175
	' > "$ROOT_DIR/projects/$2"
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   176
8409
de295d5e2bb4 (svn r11979) -Codechange: drop MSVC 2003 support because MSVC 2003 is broken in such a manner that it triggers an internal compiler error without any clue what of the code is wrong. Even trying to bisect the problem does not give a single line of code that causes the trouble.
rubidium
parents: 7897
diff changeset
   177
	echo "$1" >> "$ROOT_DIR/projects/$2"
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   178
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   179
	# Everything below the !!FILES!! marker
6177
9da29043c377 (svn r8948) -Change: some sed implementations have problems with \n so rewrite r8832 using awk
glx
parents: 6097
diff changeset
   180
	cat "$ROOT_DIR/projects/$2".in | tr '\r' '\n' | awk '
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   181
		BEGIN { stop = 1; }
5512
a7ed0d7f61fa (svn r7809) -Fix: convert \r to \n before parsing files with awk in projects/generate so it works using mingw/msys
glx
parents: 5475
diff changeset
   182
		/^$/ { next }
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   183
		/!!FILES!!/ { stop = 2; }
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   184
		{
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   185
			if (stop == 0) { print $0 }
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   186
			if (stop == 2) { stop = 0 }
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   187
		}
6177
9da29043c377 (svn r8948) -Change: some sed implementations have problems with \n so rewrite r8832 using awk
glx
parents: 6097
diff changeset
   188
	' >> "$ROOT_DIR/projects/$2"
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   189
}
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   190
6936
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
   191
safety_check "$ROOT_DIR/source.list"
3ea055cc4957 (svn r10189) -Add: added a safety check in MSVC project generate script to make sure we do not use filenames with the same name in different directories, as MSVC is plain stupid and can't handle that (go wine to Billy or something if you want it fixed properly)
truelight
parents: 6901
diff changeset
   192
5475
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   193
load_main_data "$ROOT_DIR/source.list" openttd
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   194
load_lang_data "$ROOT_DIR/src/lang/*.txt" lang
2e6990a8c7c4 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
diff changeset
   195
8409
de295d5e2bb4 (svn r11979) -Codechange: drop MSVC 2003 support because MSVC 2003 is broken in such a manner that it triggers an internal compiler error without any clue what of the code is wrong. Even trying to bisect the problem does not give a single line of code that causes the trouble.
rubidium
parents: 7897
diff changeset
   196
generate "$openttd" "openttd_vs80.vcproj"
de295d5e2bb4 (svn r11979) -Codechange: drop MSVC 2003 support because MSVC 2003 is broken in such a manner that it triggers an internal compiler error without any clue what of the code is wrong. Even trying to bisect the problem does not give a single line of code that causes the trouble.
rubidium
parents: 7897
diff changeset
   197
generate "$openttd" "openttd_vs90.vcproj"
de295d5e2bb4 (svn r11979) -Codechange: drop MSVC 2003 support because MSVC 2003 is broken in such a manner that it triggers an internal compiler error without any clue what of the code is wrong. Even trying to bisect the problem does not give a single line of code that causes the trouble.
rubidium
parents: 7897
diff changeset
   198
generate "$lang" "langs_vs80.vcproj"
de295d5e2bb4 (svn r11979) -Codechange: drop MSVC 2003 support because MSVC 2003 is broken in such a manner that it triggers an internal compiler error without any clue what of the code is wrong. Even trying to bisect the problem does not give a single line of code that causes the trouble.
rubidium
parents: 7897
diff changeset
   199
generate "$lang" "langs_vs90.vcproj"