rubidium@5643: #!/bin/bash
rubidium@5643:
rubidium@5643: # This file generates all project files based on sources.list, so everyone who
rubidium@5643: # can start a bash process, can update the project files.
rubidium@5643:
rubidium@5643: ROOT_DIR="`pwd`/.."
rubidium@5643: if ! [ -e "$ROOT_DIR/source.list" ]
rubidium@5643: then
rubidium@5643: ROOT_DIR="`pwd`"
rubidium@5643: fi
rubidium@5643: if ! [ -e "$ROOT_DIR/source.list" ]
rubidium@5643: then
rubidium@5643: echo "Can't find source.list, needed in order to make this run. Please go to either"
rubidium@5643: echo " the project dir, or the root dir of a clean SVN checkout."
rubidium@5643: exit 1
rubidium@5643: fi
rubidium@5643:
rubidium@5643: # openttd_vs80.sln is for MSVC 2005
rubidium@5643: # openttd_vs80.vcproj is for MSVC 2005
rubidium@5643: # langs_vs80.vcproj is for MSVC 2005
rubidium@5643: # strgen_vs80.vcprojc is vor MSVC 2005
rubidium@5643:
rubidium@5643: # openttd.sln is for MSVC 2003
rubidium@5643: # openttd.vcproj is for MSVC 2003
rubidium@5643: # langs.vcproj is for MSVC 2003
rubidium@5643: # strgen.vcproj is for MSVC 2003
rubidium@5643:
rubidium@5643: # openttd.tgt is for WatCom
rubidium@5643:
rubidium@5643:
rubidium@5643:
rubidium@5643: # First, collect the list of Windows files
rubidium@5643: sdl_config="1"
rubidium@5643: os="MSVC"
rubidium@5643: enable_dedicated="0"
rubidium@5643: with_cocoa="0"
rubidium@5643: enable_directmusic="1"
rubidium@5643: file_prefix="..\\\\src\\\\"
rubidium@5643:
rubidium@5643: load_main_data() {
rubidium@5643: # Read the source.list and process it
rubidium@5643: RES="`awk '
rubidium@5643: /^( *)#end/ { if (deep == skip) { skip -= 1; } deep -= 1; next; }
rubidium@5643: /^( *)#else/ { if (deep == skip) { skip -= 1; } else if (deep - 1 == skip) { skip += 1; } next; }
rubidium@5643: /^( *)#if/ {
rubidium@5643: gsub(" ", "", $0);
rubidium@5643: gsub("^#if", "", $0);
rubidium@5643: gsub("^ ", "", $0);
rubidium@5643:
rubidium@5643: if (deep != skip) { deep += 1; next; }
rubidium@5643:
rubidium@5643: deep += 1;
rubidium@5643:
rubidium@5643: if ($0 == "SDL" && "'$sdl_config'" == "") { next; }
rubidium@5643: if ($0 == "OSX" && "'$os'" != "OSX") { next; }
rubidium@5643: if ($0 == "DEDICATED" && "'$enable_dedicated'" != "1") { next; }
rubidium@5643: if ($0 == "COCOA" && "'$with_cocoa'" == "0") { next; }
rubidium@5643: if ($0 == "BEOS" && "'$os'" != "BEOS") { next; }
rubidium@5643: if ($0 == "WIN32" && "'$os'" != "MINGW" &&
rubidium@5643: "'$os'" != "CYGWIN" && "'$os'" != "MSVC" ) { next; }
rubidium@5643: if ($0 == "MSVC" && "'$os'" != "MSVC") { next; }
rubidium@5643: if ($0 == "DIRECTMUSIC" && "'$enable_directmusic'" != "1") { next; }
rubidium@5643:
rubidium@5643: skip += 1;
rubidium@5643:
rubidium@5643: next;
rubidium@5643: }
rubidium@5643: /^( *)#/ {
rubidium@5643: if (deep == skip) {
rubidium@5643: gsub(" ", "", $0);
rubidium@5643: gsub("^#", "", $0);
rubidium@5643: gsub("^ ", "", $0);
rubidium@5643:
rubidium@5643: if (first_time != 0) {
rubidium@5643: print " ";
rubidium@5643: } else {
rubidium@5643: first_time = 1;
rubidium@5643: }
rubidium@5643:
rubidium@5643: print " ";
rubidium@5643: }
rubidium@5643:
rubidium@5643: next;
rubidium@5643: }
rubidium@5643: /^$/ { next }
rubidium@5643: {
rubidium@5643: if (deep == skip) {
rubidium@5643: gsub(" ", "", $0);
rubidium@5643: gsub("/", "\\\\", $0);
rubidium@5643: print " ";
rubidium@5643: print " ";
rubidium@5643: }
rubidium@5643: }
rubidium@5643: END { print " "; }
rubidium@5643: ' < $1`"
rubidium@5643:
rubidium@5643: eval "$2=\"\$RES\""
rubidium@5643: }
rubidium@5643:
rubidium@5643: load_lang_data() {
rubidium@5643: RES=""
rubidium@5643: for i in `ls $1`
rubidium@5643: do
rubidium@5643: i=`basename $i | sed s/.txt$//g`
rubidium@5643: RES="$RES
rubidium@5643:
rubidium@5643:
rubidium@5643:
rubidium@5643:
rubidium@5643: "
rubidium@5643: done
rubidium@5643:
rubidium@5643: eval "$2=\"\$RES\""
rubidium@5643: }
rubidium@5643:
rubidium@5643: generate() {
rubidium@5643: echo "Generating $2..."
rubidium@5643: # Everything above the !!FILES!! marker
rubidium@5643: RES="`awk '
rubidium@5643: /!!FILES!!/ { stop = 1; }
rubidium@5643: {
rubidium@5643: if (stop == 0) { print $0 }
rubidium@5643: }
rubidium@5643: ' < \"$ROOT_DIR/projects/$2\".in > \"$ROOT_DIR/projects/$2\"`"
rubidium@5643:
rubidium@5643: # The files-list
rubidium@5643: echo "$1" >> "$ROOT_DIR/projects/$2"
rubidium@5643:
rubidium@5643: # Everything below the !!FILES!! marker
rubidium@5643: RES="`awk '
rubidium@5643: BEGIN { stop = 1; }
rubidium@5643: /!!FILES!!/ { stop = 2; }
rubidium@5643: {
rubidium@5643: if (stop == 0) { print $0 }
rubidium@5643: if (stop == 2) { stop = 0 }
rubidium@5643: }
rubidium@5643: ' < \"$ROOT_DIR/projects/$2.in\" >> \"$ROOT_DIR/projects/$2\"`"
rubidium@5643: }
rubidium@5643:
rubidium@5643: load_main_data "$ROOT_DIR/source.list" openttd
rubidium@5643: load_lang_data "$ROOT_DIR/src/lang/*.txt" lang
rubidium@5643:
rubidium@5643: generate "$openttd" "openttd.vcproj"
rubidium@5643: generate "$openttd" "openttd_vs80.vcproj"
rubidium@5643: generate "$lang" "langs_vs80.vcproj"
rubidium@5643: generate "$lang" "langs.vcproj"