diff options
| -rwxr-xr-x | configure | 36 | ||||
| -rw-r--r-- | engines/configure.engines | 2 | 
2 files changed, 32 insertions, 6 deletions
@@ -72,6 +72,7 @@ add_engine() {  	set_var _engine_${1}_build "${3}"  	set_var _engine_${1}_build_default "${3}"  	set_var _engine_${1}_subengines "${4}" +	set_var _engine_${1}_deps "${5}"  	for sub in ${4}; do  		set_var _engine_${sub}_sub "yes"  	done @@ -464,6 +465,11 @@ get_engine_subengines() {  	get_var _engine_$1_subengines  } +# Get the dependencies +get_engine_dependencies() { +	get_var _engine_$1_deps +} +  # Ask if this is a subengine  get_engine_sub() {  	sub=`get_var _engine_$1_sub` @@ -532,6 +538,28 @@ engine_disable() {  	fi  } +# Check whether the engine's dependencies are met +# If that is not the case disable the engine +check_engine_deps() { +	unmet_deps="" + +	# Check whether the engine is enabled +	if test `get_engine_build $1` = yes ; then +		# Collect unmet dependencies +		for dep in `get_engine_dependencies $1`; do +			if test `get_var _${dep}` = no ; then +				unmet_deps="${unmet_deps}${dep} " +			fi +		done + +		# Check whether there is any unmet dependency +		if test -n "$unmet_deps"; then +			echo "WARNING: Disabling engine "`get_engine_name $1`" because the following dependencies are unmet: "$unmet_deps +			engine_disable $1 +		fi +	fi +} +  # Show the configure help line for a given engine  show_engine_help() {  	name=`get_engine_name $1` @@ -3204,11 +3232,6 @@ fi  define_in_config_if_yes "$_png" 'USE_PNG'  echo "$_png" -if test `get_engine_build sword25` = yes && test ! "$_png" = yes ; then -	echo "...disabling Broken Sword 2.5 engine. PNG is required" -	engine_disable sword25 -fi -  #  # Check for Theora Decoder  # @@ -3870,6 +3893,9 @@ sh -c "  	fi" 2>/dev/null &  for engine in $_engines; do +	# Check whether all dependencies are available +	check_engine_deps $engine +  	if test "`get_engine_sub $engine`" = "no" ; then  		# It's a main engine  		if test `get_engine_build $engine` = no ; then diff --git a/engines/configure.engines b/engines/configure.engines index 8eaee730cc..f88b3fe3e5 100644 --- a/engines/configure.engines +++ b/engines/configure.engines @@ -36,7 +36,7 @@ add_engine sci32 "SCI32 games" no  add_engine sky "Beneath a Steel Sky" yes  add_engine sword1 "Broken Sword" yes  add_engine sword2 "Broken Sword II" yes -add_engine sword25 "Broken Sword 2.5" no +add_engine sword25 "Broken Sword 2.5" no "" "png"  add_engine teenagent "Teen Agent" yes  add_engine testbed "TestBed: the Testing framework" no  add_engine tinsel "Tinsel" yes  | 
