#!/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"