mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-08 01:10:28 +00:00
201 lines
5.3 KiB
Bash
Executable File
201 lines
5.3 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"
|
|
with_threads="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; }
|
|
if ($0 == "NO_THREADS" && "'$with_threads'" == "0") { 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"
|