truelight@3198: #!/bin/sh truelight@3198: truelight@6572: CONFIGURE_EXECUTABLE="$_" truelight@6572: # On *nix systems those two are equal when ./configure is done truelight@6572: if [ "$0" != "$CONFIGURE_EXECUTABLE" ]; then truelight@6713: # On some systems, when ./configure is triggered from 'make' truelight@6713: # the $_ is filled with 'make'. So if that is true, skip 'make' truelight@6713: # and use $0 (and hope that is correct ;)) truelight@6713: if [ -n "`echo $CONFIGURE_EXECUTABLE | grep make`" ]; then truelight@6665: CONFIGURE_EXECUTABLE="$0" truelight@6665: else truelight@6665: CONFIGURE_EXECUTABLE="$CONFIGURE_EXECUTABLE $0" truelight@6665: fi truelight@6572: fi rubidium@5726: # Find out where configure is (in what dir) rubidium@5726: ROOT_DIR="`dirname $0`" rubidium@5726: ROOT_DIR="`cd $ROOT_DIR && pwd`" truelight@3198: rubidium@5726: PWD="`pwd`" rubidium@5726: PREFIX="`pwd`/bin" truelight@3198: rubidium@5726: . $ROOT_DIR/config.lib truelight@3198: rubidium@5726: # Set default dirs rubidium@5726: OBJS_DIR="$PWD/objs" rubidium@5726: BASE_SRC_OBJS_DIR="$OBJS_DIR" rubidium@5726: LANG_OBJS_DIR="$OBJS_DIR/lang" rubidium@5726: BIN_DIR="$PREFIX" rubidium@5726: SRC_DIR="$ROOT_DIR/src" rubidium@5726: LANG_DIR="$SRC_DIR/lang" rubidium@5726: MEDIA_DIR="$ROOT_DIR/media" rubidium@5726: SOURCE_LIST="$ROOT_DIR/source.list" truelight@3198: rubidium@8576: if [ "$1" = "--reconfig" ] || [ "$1" = "--reconfigure" ]; then tron@5809: if ! [ -f "config.cache" ]; then rubidium@5726: echo "can't reconfigure, because never configured before" rubidium@5726: exit 1 rubidium@5726: fi rubidium@5726: # Make sure we don't lock config.cache bjarni@8785: cat config.cache | sed 's/\\ /\\\\ /g' > cache.tmp truelight@5811: sh cache.tmp truelight@5811: rm -f cache.tmp rubidium@5726: exit $? truelight@3198: fi truelight@3198: rubidium@5726: set_default truelight@5737: detect_params "$@" rubidium@7307: check_params rubidium@5726: save_params rubidium@5726: make_cflags_and_ldflags rubidium@5726: rubidium@5726: EXE="" truelight@6004: if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "OS2" ] || [ "$os" = "WINCE" ]; then rubidium@5726: EXE=".exe" truelight@3205: fi truelight@3205: rubidium@5726: TTD="openttd$EXE" rubidium@5726: STRGEN="strgen$EXE" rubidium@5726: ENDIAN_CHECK="endian_check$EXE" truelight@3205: tron@5809: if [ -z "$sort" ]; then rubidium@5726: PIPE_SORT="sed s/a/a/" rubidium@5726: else rubidium@5726: PIPE_SORT="$sort" truelight@3200: fi truelight@3200: tron@5809: if ! [ -f "$LANG_DIR/english.txt" ]; then rubidium@5726: echo "Languages not found in $LANG_DIR. Can't continue without it." rubidium@5726: echo "Please make sure the dir exists and contains at least english.txt" rubidium@5726: fi rubidium@5726: rubidium@5726: # Read the source.list and process it truelight@6407: SRCS="`< $ROOT_DIR/source.list tr '\r' '\n' | $awk ' rubidium@5726: { } rubidium@5726: /^( *)#end/ { if (deep == skip) { skip -= 1; } deep -= 1; next; } rubidium@5726: /^( *)#else/ { if (deep == skip) { skip -= 1; } else if (deep - 1 == skip) { skip += 1; } next; } rubidium@5726: /^( *)#if/ { rubidium@5726: gsub(" ", "", $0); rubidium@5726: gsub("^#if ", "", $0); rubidium@5726: rubidium@5726: if (deep != skip) { deep += 1; next; } rubidium@5726: rubidium@5726: deep += 1; rubidium@5726: rubidium@5726: if ($0 == "SDL" && "'$sdl_config'" == "") { next; } truelight@7397: if ($0 == "PNG" && "'$png_config'" == "") { next; } rubidium@5726: if ($0 == "OSX" && "'$os'" != "OSX") { next; } truelight@5840: if ($0 == "OS2" && "'$os'" != "OS2") { next; } truelight@6208: if ($0 == "PSP" && "'$os'" != "PSP") { next; } rubidium@5726: if ($0 == "DEDICATED" && "'$enable_dedicated'" != "1") { next; } rubidium@5726: if ($0 == "COCOA" && "'$with_cocoa'" == "0") { next; } rubidium@5726: if ($0 == "BEOS" && "'$os'" != "BEOS") { next; } rubidium@5726: if ($0 == "WIN32" && "'$os'" != "MINGW" && rubidium@5726: "'$os'" != "CYGWIN" && "'$os'" != "MSVC" ) { next; } truelight@6004: if ($0 == "WINCE" && "'$os'" != "WINCE") { next; } rubidium@5726: if ($0 == "MSVC" && "'$os'" != "MSVC") { next; } truelight@5731: if ($0 == "DIRECTMUSIC" && "'$with_direct_music'" == "0") { next; } truelight@6361: if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" ) { next; } rubidium@7790: if ($0 == "NO_THREADS" && "'$with_threads'" == "0") { next; } rubidium@5726: rubidium@5726: skip += 1; rubidium@5726: rubidium@5726: next; rubidium@5726: } rubidium@5726: /^( *)#/ { next } rubidium@5726: /^$/ { next } rubidium@5726: /\.h$/ { next } rubidium@5726: /\.hpp$/ { next } rubidium@5726: { rubidium@5726: if (deep == skip) { rubidium@5726: gsub(" ", "", $0); rubidium@5726: print $0; rubidium@5726: } rubidium@5726: } rubidium@5726: ' | $PIPE_SORT`" rubidium@5726: truelight@6407: OBJS_C="` echo \"$SRCS\" | $awk ' { ORS = " " } /\.c$/ { gsub(".c$", ".o", $0); print $0; }'`" truelight@6407: OBJS_CPP="`echo \"$SRCS\" | $awk ' { ORS = " " } /\.cpp$/ { gsub(".cpp$", ".o", $0); print $0; }'`" truelight@6407: OBJS_MM="` echo \"$SRCS\" | $awk ' { ORS = " " } /\.mm$/ { gsub(".mm$", ".o", $0); print $0; }'`" truelight@6407: OBJS_RC="` echo \"$SRCS\" | $awk ' { ORS = " " } /\.rc$/ { gsub(".rc$", ".o", $0); print $0; }'`" truelight@6407: SRCS="` echo \"$SRCS\" | $awk ' { ORS = " " } { print $0; }'`" rubidium@5726: rubidium@5726: # In makefiles, we always use -u for sort tron@5809: if [ -z "$sort" ]; then rubidium@5726: sort="sed s/a/a/" rubidium@5726: else rubidium@5726: sort="$sort -u" rubidium@5726: fi rubidium@5726: rubidium@5726: CONFIGURE_FILES="$ROOT_DIR/configure $ROOT_DIR/config.lib $ROOT_DIR/Makefile.in $ROOT_DIR/Makefile.lang.in $ROOT_DIR/Makefile.src.in" rubidium@5726: rubidium@5726: generate_main rubidium@5726: generate_lang rubidium@5726: generate_src