#!/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 " ";
} else {
first_time = 1;
}
print " ";
}
next;
}
/^$/ { next }
{
if (deep == skip) {
gsub(" ", "", $0);
gsub("/", "\\\\", $0);
print " ";
print " ";
}
}
END { print " "; }
'`"
eval "$2=\"\$RES\""
}
load_lang_data() {
RES=""
for i in `ls $1`
do
i=`basename $i | sed s/.txt$//g`
RES="$RES
"
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"
}
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"