mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-04 06:00:15 +00:00
36c1c1bdb5
The (prebuilt) grf will still remain, so if you don't have NFORenum and GRFCodec it will still work.
172 lines
5.9 KiB
Bash
Executable File
172 lines
5.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# $Id$
|
|
|
|
# This file is part of OpenTTD.
|
|
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
|
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
# See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
check_path_characters() {
|
|
if [ -n "`echo $ROOT_DIR | grep '[^-_A-Za-z0-9\/\\\.:]'`" ]; then
|
|
echo "WARNING: The path contains a non-alphanumeric character that might cause"
|
|
echo " failures in subsequent build stages. Any failures with the build"
|
|
echo " will most likely be caused by this."
|
|
fi
|
|
}
|
|
|
|
CONFIGURE_EXECUTABLE="$_"
|
|
# On *nix systems those two are equal when ./configure is done
|
|
if [ "$0" != "$CONFIGURE_EXECUTABLE" ]; then
|
|
# On some systems, when ./configure is triggered from 'make'
|
|
# the $_ is filled with 'make'. So if that is true, skip 'make'
|
|
# and use $0 (and hope that is correct ;))
|
|
if [ -n "`echo $CONFIGURE_EXECUTABLE | grep make`" ]; then
|
|
CONFIGURE_EXECUTABLE="$0"
|
|
else
|
|
CONFIGURE_EXECUTABLE="$CONFIGURE_EXECUTABLE $0"
|
|
fi
|
|
fi
|
|
# Find out where configure is (in what dir)
|
|
ROOT_DIR="`dirname $0`"
|
|
# For MSYS/MinGW we want to know the FULL path. This as that path is generated
|
|
# once you call an outside binary. Having the same path for the rest is needed
|
|
# for dependency checking.
|
|
# pwd -W returns said FULL path, but doesn't exist on others so fall back.
|
|
ROOT_DIR="`cd $ROOT_DIR && (pwd -W 2>/dev/null || pwd 2>/dev/null)`"
|
|
|
|
check_path_characters
|
|
|
|
# Same here as for the ROOT_DIR above
|
|
PWD="`pwd -W 2>/dev/null || pwd 2>/dev/null`"
|
|
PREFIX="$PWD/bin"
|
|
|
|
. $ROOT_DIR/config.lib
|
|
|
|
# Set default dirs
|
|
OBJS_DIR="$PWD/objs"
|
|
BASE_SRC_OBJS_DIR="$OBJS_DIR"
|
|
LANG_OBJS_DIR="$OBJS_DIR/lang"
|
|
GRF_OBJS_DIR="$OBJS_DIR/extra_grf"
|
|
BIN_DIR="$PREFIX"
|
|
SRC_DIR="$ROOT_DIR/src"
|
|
LANG_DIR="$SRC_DIR/lang"
|
|
MEDIA_DIR="$ROOT_DIR/media"
|
|
SOURCE_LIST="$ROOT_DIR/source.list"
|
|
|
|
if [ "$1" = "--reconfig" ] || [ "$1" = "--reconfigure" ]; then
|
|
if [ ! -f "config.cache" ]; then
|
|
echo "can't reconfigure, because never configured before"
|
|
exit 1
|
|
fi
|
|
# Make sure we don't lock config.cache
|
|
cat config.cache | sed 's@\\ @\\\\ @g' > cache.tmp
|
|
sh cache.tmp
|
|
RET=$?
|
|
rm -f cache.tmp
|
|
exit $RET
|
|
fi
|
|
|
|
set_default
|
|
detect_params "$@"
|
|
check_params
|
|
save_params
|
|
make_cflags_and_ldflags
|
|
|
|
EXE=""
|
|
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "OS2" ] || [ "$os" = "DOS" ] || [ "$os" = "WINCE" ]; then
|
|
EXE=".exe"
|
|
fi
|
|
|
|
TTD="openttd$EXE"
|
|
STRGEN="strgen$EXE"
|
|
ENDIAN_CHECK="endian_check$EXE"
|
|
DEPEND="depend$EXE"
|
|
|
|
if [ -z "$sort" ]; then
|
|
PIPE_SORT="sed s@a@a@"
|
|
else
|
|
PIPE_SORT="$sort"
|
|
fi
|
|
|
|
if [ ! -f "$LANG_DIR/english.txt" ]; then
|
|
echo "Languages not found in $LANG_DIR. Can't continue without it."
|
|
echo "Please make sure the dir exists and contains at least english.txt"
|
|
fi
|
|
|
|
# Read the source.list and process it
|
|
AWKCOMMAND='
|
|
{ }
|
|
/^( *)#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);
|
|
|
|
if (deep != skip) { deep += 1; next; }
|
|
|
|
deep += 1;
|
|
|
|
if ($0 == "ALLEGRO" && "'$allegro_config'" == "") { next; }
|
|
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 == "AI" && "'$enable_ai'" == "0") { next; }
|
|
if ($0 == "COCOA" && "'$with_cocoa'" == "0") { next; }
|
|
if ($0 == "DOS" && "'$os'" != "DOS") { next; }
|
|
if ($0 == "BEOS" && "'$os'" != "BEOS" &&
|
|
"'$os'" != "HAIKU") { next; }
|
|
if ($0 == "WIN32" && "'$os'" != "MINGW" &&
|
|
"'$os'" != "CYGWIN" && "'$os'" != "MSVC") { next; }
|
|
if ($0 == "MORPHOS" && "'$os'" != "MORPHOS") { next; }
|
|
if ($0 == "WINCE" && "'$os'" != "WINCE") { next; }
|
|
if ($0 == "MSVC" && "'$os'" != "MSVC") { next; }
|
|
if ($0 == "DIRECTMUSIC" && "'$with_direct_music'" == "0") { next; }
|
|
if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" ) { next; }
|
|
if ($0 == "HAVE_THREAD" && "'$with_threads'" == "0") { next; }
|
|
|
|
skip += 1;
|
|
|
|
next;
|
|
}
|
|
/^( *)#/ { next }
|
|
/^$/ { next }
|
|
/\.h$/ { next }
|
|
/\.hpp$/ { next }
|
|
{
|
|
if (deep == skip) {
|
|
gsub(" ", "", $0);
|
|
print $0;
|
|
}
|
|
}
|
|
'
|
|
|
|
# Read the source.list and process it
|
|
# Please escape ALL " within ` because e.g. "" terminates the string in some sh implementations
|
|
SRCS="`< $ROOT_DIR/source.list tr '\r' '\n' | $awk \"$AWKCOMMAND\" | $PIPE_SORT`"
|
|
|
|
OBJS_C="` echo \"$SRCS\" | $awk ' { ORS = \" \" } /\.c$/ { gsub(\".c$\", \".o\", $0); print $0; }'`"
|
|
OBJS_CPP="`echo \"$SRCS\" | $awk ' { ORS = \" \" } /\.cpp$/ { gsub(\".cpp$\", \".o\", $0); print $0; }'`"
|
|
OBJS_MM="` echo \"$SRCS\" | $awk ' { ORS = \" \" } /\.mm$/ { gsub(\".mm$\", \".o\", $0); print $0; }'`"
|
|
OBJS_RC="` echo \"$SRCS\" | $awk ' { ORS = \" \" } /\.rc$/ { gsub(\".rc$\", \".o\", $0); print $0; }'`"
|
|
SRCS="` echo \"$SRCS\" | $awk ' { ORS = \" \" } { print $0; }'`"
|
|
|
|
# In makefiles, we always use -u for sort
|
|
if [ -z "$sort" ]; then
|
|
sort="sed s@a@a@"
|
|
else
|
|
sort="$sort -u"
|
|
fi
|
|
|
|
CONFIGURE_FILES="$ROOT_DIR/configure $ROOT_DIR/config.lib $ROOT_DIR/Makefile.in $ROOT_DIR/Makefile.grf.in $ROOT_DIR/Makefile.lang.in $ROOT_DIR/Makefile.src.in $ROOT_DIR/Makefile.bundle.in"
|
|
|
|
generate_main
|
|
generate_lang
|
|
generate_grf
|
|
generate_src
|
|
|
|
check_path_characters
|