 79cd3f5db0
			
		
	
	79cd3f5db0
	
	
	
		
			
			-Codechange: introduced a hierachy of blitters to avoid a lot of code duplication Note: this allows much easier adding other types of video-drivers, like OpenGL
		
			
				
	
	
		
			199 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			199 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| # This file generates all project files based on sources.list, so everyone who
 | |
| #  can start a bash process, can update the project files.
 | |
| 
 | |
| ROOT_DIR="`pwd`/.."
 | |
| if ! [ -e "$ROOT_DIR/source.list" ]
 | |
| then
 | |
| 	ROOT_DIR="`pwd`"
 | |
| fi
 | |
| if ! [ -e "$ROOT_DIR/source.list" ]
 | |
| then
 | |
| 	echo "Can't find source.list, needed in order to make this run. Please go to either"
 | |
| 	echo " the project dir, or the root dir of a clean SVN checkout."
 | |
| 	exit 1
 | |
| fi
 | |
| 
 | |
| # openttd_vs80.sln    is for MSVC 2005
 | |
| # openttd_vs80.vcproj is for MSVC 2005
 | |
| # langs_vs80.vcproj   is for MSVC 2005
 | |
| # strgen_vs80.vcprojc is vor MSVC 2005
 | |
| 
 | |
| # openttd.sln         is for MSVC 2003
 | |
| # openttd.vcproj      is for MSVC 2003
 | |
| # langs.vcproj        is for MSVC 2003
 | |
| # strgen.vcproj       is for MSVC 2003
 | |
| 
 | |
| # openttd.tgt         is for WatCom
 | |
| 
 | |
| 
 | |
| 
 | |
| # First, collect the list of Windows files
 | |
| sdl_config="1"
 | |
| png_config="1"
 | |
| os="MSVC"
 | |
| enable_dedicated="0"
 | |
| with_cocoa="0"
 | |
| enable_directmusic="1"
 | |
| file_prefix="..\\\\src\\\\"
 | |
| 
 | |
| safety_check() {
 | |
| 	li=""
 | |
| 	for i in `cat $1 | grep -v "#\|ottdres.rc\|win32.cpp\|win32_v.cpp" | xargs -n 1 basename | sort`; do
 | |
| 		if [ "$li" = "$i" ]; then
 | |
| 			echo " !! ERROR !!"
 | |
| 			echo ""
 | |
| 			echo "The filename '$i' is already used in this project."
 | |
| 			echo "Because MSVC uses one single directory for all object files, it"
 | |
| 			echo "cannot handle filenames with the same name inside the same project."
 | |
| 			echo "Please rename either one of the file and try generating again."
 | |
| 			echo ""
 | |
| 			echo " !! ERROR !!"
 | |
| 			exit 1
 | |
| 		fi
 | |
| 		li="$i"
 | |
| 	done
 | |
| }
 | |
| 
 | |
| load_main_data() {
 | |
| 	# Read the source.list and process it
 | |
| 	RES="`cat $1 | tr '\r' '\n' | awk '
 | |
| 		/^(	*)#end/  { if (deep == skip) { skip -= 1; } deep -= 1; next; }
 | |
| 		/^(	*)#else/ { if (deep == skip) { skip -= 1; } else if (deep - 1 == skip) { skip += 1; } next; }
 | |
| 		/^(	*)#if/   {
 | |
| 			gsub("	", "", $0);
 | |
| 			gsub("^#if", "", $0);
 | |
| 			gsub("^ ", "", $0);
 | |
| 
 | |
| 			if (deep != skip) { deep += 1; next; }
 | |
| 
 | |
| 			deep += 1;
 | |
| 
 | |
| 			if ($0 == "SDL"         && "'$sdl_config'" == "")          { next; }
 | |
| 			if ($0 == "PNG"         && "'$png_config'" == "")          { next; }
 | |
| 			if ($0 == "OSX"         && "'$os'" != "OSX")               { next; }
 | |
| 			if ($0 == "OS2"         && "'$os'" != "OS2")               { next; }
 | |
| 			if ($0 == "PSP"         && "'$os'" != "PSP")               { next; }
 | |
| 			if ($0 == "DEDICATED"   && "'$enable_dedicated'" != "1")   { next; }
 | |
| 			if ($0 == "COCOA"       && "'$with_cocoa'" == "0")         { next; }
 | |
| 			if ($0 == "BEOS"        && "'$os'" != "BEOS")              { next; }
 | |
| 			if ($0 == "WIN32"       && "'$os'" != "MINGW" &&
 | |
| 											"'$os'" != "CYGWIN" && "'$os'" != "MSVC" ) { next; }
 | |
| 			if ($0 == "WINCE"       && "'$os'" != "WINCE")             { next; }
 | |
| 			if ($0 == "MSVC"        && "'$os'" != "MSVC")              { next; }
 | |
| 			if ($0 == "DIRECTMUSIC" && "'$enable_directmusic'" != "1") { next; }
 | |
| 			if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" )        { next; }
 | |
| 
 | |
| 			skip += 1;
 | |
| 
 | |
| 			next;
 | |
| 		}
 | |
| 		/^(	*)#/ {
 | |
| 			if (deep == skip) {
 | |
| 				gsub("	", "", $0);
 | |
| 				gsub("^#", "", $0);
 | |
| 				gsub("^ ", "", $0);
 | |
| 
 | |
| 				if (first_time != 0) {
 | |
| 					print "		</Filter>";
 | |
| 				} else {
 | |
| 					first_time = 1;
 | |
| 				}
 | |
| 
 | |
| 				print "		<Filter";
 | |
| 				print "			Name=\\""$0"\\"";
 | |
| 				print "			Filter=\\"\\">";
 | |
| 			}
 | |
| 
 | |
| 			next;
 | |
| 		}
 | |
| 		/^$/ { next }
 | |
| 		{
 | |
| 			if (deep == skip) {
 | |
| 				gsub("	", "", $0);
 | |
| 				gsub("/", "\\\\", $0);
 | |
| 				print "			<File";
 | |
| 				print "				RelativePath=\\".\\\\'$file_prefix'"$0"\\">";
 | |
| 				print "			</File>";
 | |
| 			}
 | |
| 		}
 | |
| 		END { print "		</Filter>"; }
 | |
| 	'`"
 | |
| 
 | |
| 	eval "$2=\"\$RES\""
 | |
| }
 | |
| 
 | |
| load_lang_data() {
 | |
| 	RES=""
 | |
| 	for i in `ls $1`
 | |
| 	do
 | |
| 		i=`basename $i | sed s/.txt$//g`
 | |
| 		RES="$RES
 | |
| 		<File
 | |
| 			RelativePath=\"..\\src\\lang\\"$i".txt\">
 | |
| 			<FileConfiguration
 | |
| 				Name=\"Debug|Win32\">
 | |
| 				<Tool
 | |
| 					Name=\"VCCustomBuildTool\"
 | |
| 					Description=\"Generating "$i" language file\"
 | |
| 					CommandLine=\"..\\objs\\strgen\\strgen.exe -s ..\\src\\lang -d ..\\bin\\lang "\$(InputPath)"
\"
 | |
| 					AdditionalDependencies=\"\"
 | |
| 					Outputs=\"..\\bin\\lang\\"$i".lng\"/>
 | |
| 			</FileConfiguration>
 | |
| 		</File>"
 | |
| 	done
 | |
| 
 | |
| 	eval "$2=\"\$RES\""
 | |
| }
 | |
| 
 | |
| generate() {
 | |
| 	echo "Generating $2..."
 | |
| 	# Everything above the !!FILES!! marker
 | |
| 	cat "$ROOT_DIR/projects/$2".in | tr '\r' '\n' | awk '
 | |
| 		/^$/ { next }
 | |
| 		/!!FILES!!/ { stop = 1; }
 | |
| 		{
 | |
| 			if (stop == 0) { print $0 }
 | |
| 		}
 | |
| 	' > "$ROOT_DIR/projects/$2"
 | |
| 
 | |
| 	# The files-list
 | |
| 	echo "$1" | awk -v type="$3" '
 | |
| 		/
/ {
 | |
| 			if (type == "msvc2003") gsub("
", "\n", $0);
 | |
| 		}
 | |
| 		/Filter="">/ {
 | |
| 			if (type == "msvc2005") gsub("Filter=\"\">", ">", $0);
 | |
| 		}
 | |
| 		/"\/>/ {
 | |
| 			if (type == "msvc2005") gsub("/>", "\n" substr($0, 1, index($0, $1) - 2) "/>", $0);
 | |
| 		}
 | |
| 		/">/ {
 | |
| 			if (type == "msvc2005") gsub(">", "\n" substr($0, 1, index($0, $1) - 1) ">", $0);
 | |
| 		}
 | |
| 		{ print $0 }
 | |
| 	' >> "$ROOT_DIR/projects/$2"
 | |
| 
 | |
| 	# Everything below the !!FILES!! marker
 | |
| 	cat "$ROOT_DIR/projects/$2".in | tr '\r' '\n' | awk '
 | |
| 		BEGIN { stop = 1; }
 | |
| 		/^$/ { next }
 | |
| 		/!!FILES!!/ { stop = 2; }
 | |
| 		{
 | |
| 			if (stop == 0) { print $0 }
 | |
| 			if (stop == 2) { stop = 0 }
 | |
| 		}
 | |
| 	' >> "$ROOT_DIR/projects/$2"
 | |
| }
 | |
| 
 | |
| safety_check "$ROOT_DIR/source.list"
 | |
| 
 | |
| load_main_data "$ROOT_DIR/source.list" openttd
 | |
| load_lang_data "$ROOT_DIR/src/lang/*.txt" lang
 | |
| 
 | |
| generate "$openttd" "openttd.vcproj"      "msvc2003"
 | |
| generate "$openttd" "openttd_vs80.vcproj" "msvc2005"
 | |
| generate "$lang" "langs.vcproj"           "msvc2003"
 | |
| generate "$lang" "langs_vs80.vcproj"      "msvc2005"
 |