configure
author truelight
Tue, 06 Mar 2007 23:42:30 +0000
changeset 6572 e35266003390
parent 6407 483c1328a349
child 6665 4abb76844cac
permissions -rwxr-xr-x
(svn r9049) -Fix [Config]: when running 'bash configure', make sure automated reconfigures run 'bash configure' too.
3198
57a611a83867 (svn r3865) -Add: a fully optional configure script, that is a wrapper around
truelight
parents:
diff changeset
     1
#!/bin/sh
57a611a83867 (svn r3865) -Add: a fully optional configure script, that is a wrapper around
truelight
parents:
diff changeset
     2
6572
e35266003390 (svn r9049) -Fix [Config]: when running 'bash configure', make sure automated reconfigures run 'bash configure' too.
truelight
parents: 6407
diff changeset
     3
CONFIGURE_EXECUTABLE="$_"
e35266003390 (svn r9049) -Fix [Config]: when running 'bash configure', make sure automated reconfigures run 'bash configure' too.
truelight
parents: 6407
diff changeset
     4
# On *nix systems those two are equal when ./configure is done
e35266003390 (svn r9049) -Fix [Config]: when running 'bash configure', make sure automated reconfigures run 'bash configure' too.
truelight
parents: 6407
diff changeset
     5
if [ "$0" != "$CONFIGURE_EXECUTABLE" ]; then
e35266003390 (svn r9049) -Fix [Config]: when running 'bash configure', make sure automated reconfigures run 'bash configure' too.
truelight
parents: 6407
diff changeset
     6
	CONFIGURE_EXECUTABLE="$CONFIGURE_EXECUTABLE $0"
e35266003390 (svn r9049) -Fix [Config]: when running 'bash configure', make sure automated reconfigures run 'bash configure' too.
truelight
parents: 6407
diff changeset
     7
fi
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
     8
# Find out where configure is (in what dir)
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
     9
ROOT_DIR="`dirname $0`"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    10
ROOT_DIR="`cd $ROOT_DIR && pwd`"
3198
57a611a83867 (svn r3865) -Add: a fully optional configure script, that is a wrapper around
truelight
parents:
diff changeset
    11
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    12
PWD="`pwd`"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    13
PREFIX="`pwd`/bin"
3198
57a611a83867 (svn r3865) -Add: a fully optional configure script, that is a wrapper around
truelight
parents:
diff changeset
    14
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    15
. $ROOT_DIR/config.lib
3198
57a611a83867 (svn r3865) -Add: a fully optional configure script, that is a wrapper around
truelight
parents:
diff changeset
    16
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    17
# Set default dirs
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    18
OBJS_DIR="$PWD/objs"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    19
BASE_SRC_OBJS_DIR="$OBJS_DIR"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    20
LANG_OBJS_DIR="$OBJS_DIR/lang"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    21
BIN_DIR="$PREFIX"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    22
SRC_DIR="$ROOT_DIR/src"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    23
LANG_DIR="$SRC_DIR/lang"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    24
MEDIA_DIR="$ROOT_DIR/media"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    25
SOURCE_LIST="$ROOT_DIR/source.list"
3198
57a611a83867 (svn r3865) -Add: a fully optional configure script, that is a wrapper around
truelight
parents:
diff changeset
    26
5809
cd61f8b74f7d (svn r7942) Trim another 192 lines from the configure monster
tron
parents: 5806
diff changeset
    27
if [ "$1" = "--reconfig" ]; then
cd61f8b74f7d (svn r7942) Trim another 192 lines from the configure monster
tron
parents: 5806
diff changeset
    28
	if ! [ -f "config.cache" ]; then
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    29
		echo "can't reconfigure, because never configured before"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    30
		exit 1
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    31
	fi
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    32
	# Make sure we don't lock config.cache
5811
cb94a44f0e29 (svn r7961) [Configure] -Fix: "" in config params didn't survive --reconfig. They should now.
truelight
parents: 5809
diff changeset
    33
	cat config.cache > cache.tmp
cb94a44f0e29 (svn r7961) [Configure] -Fix: "" in config params didn't survive --reconfig. They should now.
truelight
parents: 5809
diff changeset
    34
	sh cache.tmp
cb94a44f0e29 (svn r7961) [Configure] -Fix: "" in config params didn't survive --reconfig. They should now.
truelight
parents: 5809
diff changeset
    35
	rm -f cache.tmp
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    36
	exit $?
3198
57a611a83867 (svn r3865) -Add: a fully optional configure script, that is a wrapper around
truelight
parents:
diff changeset
    37
fi
57a611a83867 (svn r3865) -Add: a fully optional configure script, that is a wrapper around
truelight
parents:
diff changeset
    38
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    39
set_default
5737
2518c9df3780 (svn r7770) [Configure] -Fix: the "" and \ via ./configure wasn't passed on correctly (and therefor it was lost)
truelight
parents: 5731
diff changeset
    40
detect_params "$@"
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    41
save_params
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    42
check_params
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    43
make_cflags_and_ldflags
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    44
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    45
EXE=""
6004
03795fd01cb8 (svn r8304) [WinCE] -Add: added configure detection for WinCE.
truelight
parents: 5840
diff changeset
    46
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "OS2" ] || [ "$os" = "WINCE" ]; then
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    47
	EXE=".exe"
3205
cfe0785b5171 (svn r3873) -Fix: don't remove Makefile.config if it isn't there in the first place
truelight
parents: 3202
diff changeset
    48
fi
cfe0785b5171 (svn r3873) -Fix: don't remove Makefile.config if it isn't there in the first place
truelight
parents: 3202
diff changeset
    49
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    50
TTD="openttd$EXE"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    51
STRGEN="strgen$EXE"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    52
ENDIAN_CHECK="endian_check$EXE"
3205
cfe0785b5171 (svn r3873) -Fix: don't remove Makefile.config if it isn't there in the first place
truelight
parents: 3202
diff changeset
    53
5809
cd61f8b74f7d (svn r7942) Trim another 192 lines from the configure monster
tron
parents: 5806
diff changeset
    54
if [ -z "$sort" ]; then
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    55
	PIPE_SORT="sed s/a/a/"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    56
else
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    57
	PIPE_SORT="$sort"
3200
7440ead8c22a (svn r3867) -Add: added --debug, --profile and --revision to configure
truelight
parents: 3199
diff changeset
    58
fi
7440ead8c22a (svn r3867) -Add: added --debug, --profile and --revision to configure
truelight
parents: 3199
diff changeset
    59
5809
cd61f8b74f7d (svn r7942) Trim another 192 lines from the configure monster
tron
parents: 5806
diff changeset
    60
if ! [ -f "$LANG_DIR/english.txt" ]; then
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    61
	echo "Languages not found in $LANG_DIR. Can't continue without it."
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    62
	echo "Please make sure the dir exists and contains at least english.txt"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    63
fi
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    64
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    65
# Read the source.list and process it
6407
483c1328a349 (svn r8814) [Config] -Add: added --awk and detect_awk. We now try to find an awk on the user system which allows gsub(). If not found, you can define one yourself, or it tells you versions you might want to install
truelight
parents: 6361
diff changeset
    66
SRCS="`< $ROOT_DIR/source.list tr '\r' '\n' | $awk '
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    67
	{  }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    68
	/^(	*)#end/  { if (deep == skip) { skip -= 1; } deep -= 1; next; }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    69
	/^(	*)#else/ { if (deep == skip) { skip -= 1; } else if (deep - 1 == skip) { skip += 1; } next; }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    70
	/^(	*)#if/   {
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    71
		gsub("	", "", $0);
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    72
		gsub("^#if ", "", $0);
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    73
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    74
		if (deep != skip) { deep += 1; next; }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    75
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    76
		deep += 1;
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    77
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    78
		if ($0 == "SDL"         && "'$sdl_config'" == "")          { next; }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    79
		if ($0 == "OSX"         && "'$os'" != "OSX")               { next; }
5840
a1dba7cd499c (svn r8040) [Configure] -Fix: for some reason, OS2 compiled unix.cpp, not os2.cpp
truelight
parents: 5811
diff changeset
    80
		if ($0 == "OS2"         && "'$os'" != "OS2")               { next; }
6208
ff9b5772fb65 (svn r8628) [PSP] -Add: added configure support for the PlayStation Portable target
truelight
parents: 6192
diff changeset
    81
		if ($0 == "PSP"         && "'$os'" != "PSP")               { next; }
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    82
		if ($0 == "DEDICATED"   && "'$enable_dedicated'" != "1")   { next; }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    83
		if ($0 == "COCOA"       && "'$with_cocoa'" == "0")         { next; }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    84
		if ($0 == "BEOS"        && "'$os'" != "BEOS")              { next; }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    85
		if ($0 == "WIN32"       && "'$os'" != "MINGW" &&
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    86
		                "'$os'" != "CYGWIN" && "'$os'" != "MSVC" ) { next; }
6004
03795fd01cb8 (svn r8304) [WinCE] -Add: added configure detection for WinCE.
truelight
parents: 5840
diff changeset
    87
		if ($0 == "WINCE"       && "'$os'" != "WINCE")             { next; }
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    88
		if ($0 == "MSVC"        && "'$os'" != "MSVC")              { next; }
5731
adeae09edbea (svn r7764) [Configure] -Fix: a forced direct-music is as valid as an autodetected
truelight
parents: 5726
diff changeset
    89
		if ($0 == "DIRECTMUSIC" && "'$with_direct_music'" == "0")  { next; }
6361
8fc35d15114f (svn r8758) -Fix r8757: wrong variable to check libtimidity on if it is found or not
truelight
parents: 6360
diff changeset
    90
		if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" )        { next; }
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    91
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    92
		skip += 1;
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    93
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    94
		next;
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    95
	}
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    96
	/^(	*)#/ { next }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    97
	/^$/ { next }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    98
	/\.h$/ { next }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    99
	/\.hpp$/ { next }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   100
	{
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   101
		if (deep == skip) {
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   102
			gsub("	", "", $0);
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   103
			print $0;
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   104
		}
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   105
	}
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   106
' | $PIPE_SORT`"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   107
6407
483c1328a349 (svn r8814) [Config] -Add: added --awk and detect_awk. We now try to find an awk on the user system which allows gsub(). If not found, you can define one yourself, or it tells you versions you might want to install
truelight
parents: 6361
diff changeset
   108
OBJS_C="`  echo \"$SRCS\" | $awk ' { ORS = " " } /\.c$/   { gsub(".c$",   ".o", $0); print $0; }'`"
483c1328a349 (svn r8814) [Config] -Add: added --awk and detect_awk. We now try to find an awk on the user system which allows gsub(). If not found, you can define one yourself, or it tells you versions you might want to install
truelight
parents: 6361
diff changeset
   109
OBJS_CPP="`echo \"$SRCS\" | $awk ' { ORS = " " } /\.cpp$/ { gsub(".cpp$", ".o", $0); print $0; }'`"
483c1328a349 (svn r8814) [Config] -Add: added --awk and detect_awk. We now try to find an awk on the user system which allows gsub(). If not found, you can define one yourself, or it tells you versions you might want to install
truelight
parents: 6361
diff changeset
   110
OBJS_MM="` echo \"$SRCS\" | $awk ' { ORS = " " } /\.mm$/  { gsub(".mm$",  ".o", $0); print $0; }'`"
483c1328a349 (svn r8814) [Config] -Add: added --awk and detect_awk. We now try to find an awk on the user system which allows gsub(). If not found, you can define one yourself, or it tells you versions you might want to install
truelight
parents: 6361
diff changeset
   111
OBJS_RC="` echo \"$SRCS\" | $awk ' { ORS = " " } /\.rc$/  { gsub(".rc$",  ".o", $0); print $0; }'`"
483c1328a349 (svn r8814) [Config] -Add: added --awk and detect_awk. We now try to find an awk on the user system which allows gsub(). If not found, you can define one yourself, or it tells you versions you might want to install
truelight
parents: 6361
diff changeset
   112
SRCS="`    echo \"$SRCS\" | $awk ' { ORS = " " } { print $0; }'`"
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   113
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   114
# In makefiles, we always use -u for sort
5809
cd61f8b74f7d (svn r7942) Trim another 192 lines from the configure monster
tron
parents: 5806
diff changeset
   115
if [ -z "$sort" ]; then
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   116
	sort="sed s/a/a/"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   117
else
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   118
	sort="$sort -u"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   119
fi
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   120
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   121
CONFIGURE_FILES="$ROOT_DIR/configure $ROOT_DIR/config.lib $ROOT_DIR/Makefile.in $ROOT_DIR/Makefile.lang.in $ROOT_DIR/Makefile.src.in"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   122
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   123
generate_main
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   124
generate_lang
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   125
generate_src