Mercurial > hg > openttd
view projects/generate @ 6097:0a7a812e54ea draft
(svn r8832) -Change: rewrite the solution file generator a little so it makes project files that look more like the ones generated by respectively MSVC2003 and MSVC2005.
For some reason the internal formatting of the XML between MSVC2003 and MSVC2005 differs, so adding a file in MSVC2005 would result in basically adding the entire openttd_vs80.vcproj to the diff.
author | rubidium <rubidium@openttd.org> |
---|---|
date | Wed, 21 Feb 2007 17:59:34 +0000 |
parents | 5b541e0c8c93 |
children | ed54dc50aeaf |
line wrap: on
line source
#!/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" os="MSVC" enable_dedicated="0" with_cocoa="0" enable_directmusic="1" file_prefix="..\\\\src\\\\" 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 == "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 RES="`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 if [ "$3" = "msvc2003" ]; then echo "$1" | sed 's@\
\
@\n@' >> "$ROOT_DIR/projects/$2" else echo "$1" | sed ' s@Filter="">@>@; s@^\([ ]*\)\([^ <].*[^/]\)>$@\1\2\n\1>@g; s@^ \([ ]*\)\([^ <].*\)/>$@ \1\2\n\1/>@g; ' >> "$ROOT_DIR/projects/$2" fi # Everything below the !!FILES!! marker RES="`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\"`" } 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"