configure
author KUDr
Sat, 21 Apr 2007 08:23:57 +0000
branchcpp_gui
changeset 6308 646711c5feaa
parent 6307 f40e88cff863
permissions -rwxr-xr-x
(svn r9708) [cpp_gui] -Sync with trunk (r9633:9707)
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
6298
c30fe89622df (svn r9119) [cpp_gui] -Sync with trunk (r9003:9100)
bjarni
parents: 6268
diff changeset
     3
CONFIGURE_EXECUTABLE="$_"
c30fe89622df (svn r9119) [cpp_gui] -Sync with trunk (r9003:9100)
bjarni
parents: 6268
diff changeset
     4
# On *nix systems those two are equal when ./configure is done
c30fe89622df (svn r9119) [cpp_gui] -Sync with trunk (r9003:9100)
bjarni
parents: 6268
diff changeset
     5
if [ "$0" != "$CONFIGURE_EXECUTABLE" ]; then
6307
f40e88cff863 (svn r9639) [cpp_gui] -Sync with trunk (r9476:9633)
KUDr
parents: 6303
diff changeset
     6
	# On some systems, when ./configure is triggered from 'make'
f40e88cff863 (svn r9639) [cpp_gui] -Sync with trunk (r9476:9633)
KUDr
parents: 6303
diff changeset
     7
	#  the $_ is filled with 'make'. So if that is true, skip 'make'
f40e88cff863 (svn r9639) [cpp_gui] -Sync with trunk (r9476:9633)
KUDr
parents: 6303
diff changeset
     8
	#  and use $0 (and hope that is correct ;))
f40e88cff863 (svn r9639) [cpp_gui] -Sync with trunk (r9476:9633)
KUDr
parents: 6303
diff changeset
     9
	if [ -n "`echo $CONFIGURE_EXECUTABLE | grep make`" ]; then
6303
84c215fc8eb8 (svn r9486) [cpp_gui] -Sync with trunk (r9100:9476)
KUDr
parents: 6298
diff changeset
    10
		CONFIGURE_EXECUTABLE="$0"
84c215fc8eb8 (svn r9486) [cpp_gui] -Sync with trunk (r9100:9476)
KUDr
parents: 6298
diff changeset
    11
	else
84c215fc8eb8 (svn r9486) [cpp_gui] -Sync with trunk (r9100:9476)
KUDr
parents: 6298
diff changeset
    12
		CONFIGURE_EXECUTABLE="$CONFIGURE_EXECUTABLE $0"
84c215fc8eb8 (svn r9486) [cpp_gui] -Sync with trunk (r9100:9476)
KUDr
parents: 6298
diff changeset
    13
	fi
6298
c30fe89622df (svn r9119) [cpp_gui] -Sync with trunk (r9003:9100)
bjarni
parents: 6268
diff changeset
    14
fi
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    15
# Find out where configure is (in what dir)
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    16
ROOT_DIR="`dirname $0`"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    17
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
    18
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    19
PWD="`pwd`"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    20
PREFIX="`pwd`/bin"
3198
57a611a83867 (svn r3865) -Add: a fully optional configure script, that is a wrapper around
truelight
parents:
diff changeset
    21
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    22
. $ROOT_DIR/config.lib
3198
57a611a83867 (svn r3865) -Add: a fully optional configure script, that is a wrapper around
truelight
parents:
diff changeset
    23
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    24
# Set default dirs
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    25
OBJS_DIR="$PWD/objs"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    26
BASE_SRC_OBJS_DIR="$OBJS_DIR"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    27
LANG_OBJS_DIR="$OBJS_DIR/lang"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    28
BIN_DIR="$PREFIX"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    29
SRC_DIR="$ROOT_DIR/src"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    30
LANG_DIR="$SRC_DIR/lang"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    31
MEDIA_DIR="$ROOT_DIR/media"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    32
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
    33
5809
cd61f8b74f7d (svn r7942) Trim another 192 lines from the configure monster
tron
parents: 5806
diff changeset
    34
if [ "$1" = "--reconfig" ]; then
cd61f8b74f7d (svn r7942) Trim another 192 lines from the configure monster
tron
parents: 5806
diff changeset
    35
	if ! [ -f "config.cache" ]; then
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    36
		echo "can't reconfigure, because never configured before"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    37
		exit 1
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    38
	fi
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    39
	# 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
    40
	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
    41
	sh cache.tmp
cb94a44f0e29 (svn r7961) [Configure] -Fix: "" in config params didn't survive --reconfig. They should now.
truelight
parents: 5809
diff changeset
    42
	rm -f cache.tmp
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    43
	exit $?
3198
57a611a83867 (svn r3865) -Add: a fully optional configure script, that is a wrapper around
truelight
parents:
diff changeset
    44
fi
57a611a83867 (svn r3865) -Add: a fully optional configure script, that is a wrapper around
truelight
parents:
diff changeset
    45
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    46
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
    47
detect_params "$@"
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    48
save_params
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    49
check_params
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    50
make_cflags_and_ldflags
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    51
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    52
EXE=""
6004
03795fd01cb8 (svn r8304) [WinCE] -Add: added configure detection for WinCE.
truelight
parents: 5840
diff changeset
    53
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
    54
	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
    55
fi
cfe0785b5171 (svn r3873) -Fix: don't remove Makefile.config if it isn't there in the first place
truelight
parents: 3202
diff changeset
    56
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    57
TTD="openttd$EXE"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    58
STRGEN="strgen$EXE"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    59
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
    60
5809
cd61f8b74f7d (svn r7942) Trim another 192 lines from the configure monster
tron
parents: 5806
diff changeset
    61
if [ -z "$sort" ]; then
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    62
	PIPE_SORT="sed s/a/a/"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    63
else
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    64
	PIPE_SORT="$sort"
3200
7440ead8c22a (svn r3867) -Add: added --debug, --profile and --revision to configure
truelight
parents: 3199
diff changeset
    65
fi
7440ead8c22a (svn r3867) -Add: added --debug, --profile and --revision to configure
truelight
parents: 3199
diff changeset
    66
5809
cd61f8b74f7d (svn r7942) Trim another 192 lines from the configure monster
tron
parents: 5806
diff changeset
    67
if ! [ -f "$LANG_DIR/english.txt" ]; then
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    68
	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
    69
	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
    70
fi
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    71
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    72
# Read the source.list and process it
6268
4b5241e5dd10 (svn r8938) [cpp_gui] -Sync with trunk (r8772..r8900)
bjarni
parents: 6254
diff changeset
    73
SRCS="`< $ROOT_DIR/source.list tr '\r' '\n' | $awk '
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    74
	{  }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    75
	/^(	*)#end/  { if (deep == skip) { skip -= 1; } deep -= 1; next; }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    76
	/^(	*)#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
    77
	/^(	*)#if/   {
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    78
		gsub("	", "", $0);
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    79
		gsub("^#if ", "", $0);
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    80
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    81
		if (deep != skip) { deep += 1; next; }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    82
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    83
		deep += 1;
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    84
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    85
		if ($0 == "SDL"         && "'$sdl_config'" == "")          { next; }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    86
		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
    87
		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
    88
		if ($0 == "PSP"         && "'$os'" != "PSP")               { next; }
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    89
		if ($0 == "DEDICATED"   && "'$enable_dedicated'" != "1")   { next; }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    90
		if ($0 == "COCOA"       && "'$with_cocoa'" == "0")         { next; }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    91
		if ($0 == "BEOS"        && "'$os'" != "BEOS")              { next; }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    92
		if ($0 == "WIN32"       && "'$os'" != "MINGW" &&
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    93
		                "'$os'" != "CYGWIN" && "'$os'" != "MSVC" ) { next; }
6004
03795fd01cb8 (svn r8304) [WinCE] -Add: added configure detection for WinCE.
truelight
parents: 5840
diff changeset
    94
		if ($0 == "WINCE"       && "'$os'" != "WINCE")             { next; }
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    95
		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
    96
		if ($0 == "DIRECTMUSIC" && "'$with_direct_music'" == "0")  { next; }
6254
abc6ad7c035c (svn r8769) [cpp_gui] -Sync with trunk (r8730..r8768)
KUDr
parents: 6208
diff changeset
    97
		if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" )        { next; }
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    98
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
    99
		skip += 1;
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
		next;
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   102
	}
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   103
	/^(	*)#/ { next }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   104
	/^$/ { next }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   105
	/\.h$/ { next }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   106
	/\.hpp$/ { next }
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   107
	{
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   108
		if (deep == skip) {
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   109
			gsub("	", "", $0);
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   110
			print $0;
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   111
		}
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   112
	}
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   113
' | $PIPE_SORT`"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   114
6268
4b5241e5dd10 (svn r8938) [cpp_gui] -Sync with trunk (r8772..r8900)
bjarni
parents: 6254
diff changeset
   115
OBJS_C="`  echo \"$SRCS\" | $awk ' { ORS = " " } /\.c$/   { gsub(".c$",   ".o", $0); print $0; }'`"
4b5241e5dd10 (svn r8938) [cpp_gui] -Sync with trunk (r8772..r8900)
bjarni
parents: 6254
diff changeset
   116
OBJS_CPP="`echo \"$SRCS\" | $awk ' { ORS = " " } /\.cpp$/ { gsub(".cpp$", ".o", $0); print $0; }'`"
4b5241e5dd10 (svn r8938) [cpp_gui] -Sync with trunk (r8772..r8900)
bjarni
parents: 6254
diff changeset
   117
OBJS_MM="` echo \"$SRCS\" | $awk ' { ORS = " " } /\.mm$/  { gsub(".mm$",  ".o", $0); print $0; }'`"
4b5241e5dd10 (svn r8938) [cpp_gui] -Sync with trunk (r8772..r8900)
bjarni
parents: 6254
diff changeset
   118
OBJS_RC="` echo \"$SRCS\" | $awk ' { ORS = " " } /\.rc$/  { gsub(".rc$",  ".o", $0); print $0; }'`"
4b5241e5dd10 (svn r8938) [cpp_gui] -Sync with trunk (r8772..r8900)
bjarni
parents: 6254
diff changeset
   119
SRCS="`    echo \"$SRCS\" | $awk ' { ORS = " " } { print $0; }'`"
5726
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
# 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
   122
if [ -z "$sort" ]; then
5726
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   123
	sort="sed s/a/a/"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   124
else
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   125
	sort="$sort -u"
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   126
fi
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   127
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   128
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
   129
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   130
generate_main
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   131
generate_lang
8f399788f6c9 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents: 5305
diff changeset
   132
generate_src