_remf_value="$1"
_remf_list=''
shift
- for _remf_item; do
- [ "x$_remf_item" = "x$_remf_value" ] || \
- _remf_list="${_remf_list:+$_remf_list }$_remf_item"
- done
- echo "$_remf_list"
+ if [ -n "$_remf_value" ]; then
+ for _remf_item; do
+ [ "x$_remf_item" = "x$_remf_value" ] || \
+ _remf_list="${_remf_list:+$_remf_list }$_remf_item"
+ done
+ echo "$_remf_list"
+ else
+ echo $*
+ fi
}
# validate_arg _domain _set _name _value
-# The only action we can perform authoritatively prior to delegation
-# is to list all the possible delegates.
-# --------------------------------------------------------------
-
-# find_eligible_delegates _mask
-# Outputs all the config files installed which match the
-# (extended regex) _mask passed as an argument.
-find_eligible_delegates() { echo "$installed_configs" | grep -E "$1" 2> /dev/null; }
-
-# user_mask_fits _config
-# Returns true if the string _config satisfies the user specified mask.
-user_mask_fits() { echo "$1" | grep -E "$configmask" > /dev/null 2>&1; }
-
-
-# Next chance for another satisfied customer then
-#
-# If we want to get really polished here we can do plural checking,
-# but we should probably leave that until the day we gettextise it.
-# If we have cpu cycles to spare for glitz, we could run the
-# find_best_delegate function over the list and mark the one that
-# would be used by default if no further disambiguation was to occur.
-# FIXME: This is probably useful to do in any case, but lets not
-# tangle them up until things settle down again.
-if [ -n "$output_option_list" ]; then
-
- _delegates="$(find_eligible_delegates $configmask)"
-
- if user_mask_fits "$this_config" ; then
-
- echo
- echo " This config ($this_config) will be used for output."
-
- if match_field "$this_config" $_delegates ; then
- _delegates=$(remove_field $this_config $_delegates)
- else
- echo " though it is not installed in:"
- echo " $wxconfdir"
- fi
-
- if [ -n "$_delegates" ]; then
- echo
- echo " You can select from the following alternates by explicitly"
- echo " specifying additional features to wx-config:"
- fi
-
- elif [ -z "$_delegates" ]; then
-
- cat <<-EOF
-
- No config found to match:
- $configmask
- in $wxconfdir
-
- This config is: $this_config
-
- Please install the desired library build, or use --list
- without any feature specifiers to see the available configs
- for this host. wx-config --list --host=?.* will list all
- installed configs including cross builds for other hosts.
-
- EOF
- exit 1
-
- else
- echo
- echo " The following installed configurations match your specification:"
- fi
-
- echo
- for i in $_delegates; do echo " $i"; done
- [ -z "$_delegates" ] || echo
-
- exit
-fi
-
-
-
-
-
-# From here, we now need to figure out a delegation target.
-# --------------------------------------------------------------
+# From here on, we'll need to be able to figure out a delegation target.
+# -----------------------------------------------------------------------
# The rules for delegation are:
#
# But first, more sugar to keep what follows clear and legible.
# --------------------------------------------------------------
+# find_eligible_delegates _mask
+# Outputs all the config files installed which match the
+# (extended regex) _mask passed as an argument.
+find_eligible_delegates() { echo "$installed_configs" | grep -E "$1" 2> /dev/null; }
+
+# user_mask_fits _config
+# Returns true if the string _config satisfies the user specified mask.
+user_mask_fits() { echo "$1" | grep -E "$configmask" > /dev/null 2>&1; }
+
# count_fields _word
# Returns the number of IFS split fields in _word
count_fields() { return $#; }
}
+# The only action we can perform authoritatively prior to delegation
+# is to list all the possible delegates.
+# --------------------------------------------------------------
+
+config_spec="$0 $*"
+[ -z "$WXDEBUG" ] || config_spec=$configmask
+
+# Next chance for another satisfied customer then
+#
+# If we want to get really polished here we can do plural checking,
+# but we should probably leave that until the day we gettextise it.
+if [ -n "$output_option_list" ]; then
+
+ _remains_in_prefix=$installed_configs
+ _delegates=$(find_eligible_delegates $configmask)
+ _best_delegate=$(find_best_delegate)
+
+ if [ "x$WXDEBUG" = "xverbose" ]; then
+ echo " all = $_remains_in_prefix"
+ echo " matching = $_delegates"
+ echo " best = $_best_delegate"
+ echo " this = $this_config"
+ fi
+
+ for d in $_delegates; do
+ _remains_in_prefix=$(remove_field $d $_remains_in_prefix)
+ done
+
+ echo
+ echo " Default config is $this_config"
+ echo
+
+ if user_mask_fits "$this_config" ; then
+
+ echo " Default config ${this_exec_prefix+in $this_exec_prefix }will be used for output"
+
+ if match_field "$this_config" $_delegates ; then
+ _delegates=$(remove_field $this_config $_delegates)
+ else
+ echo " though it is not installed in: $prefix"
+ if [ -n "$_best_delegate" ] && [ "x$_best_delegate" != "x$this_config" ]; then
+ echo
+ echo " Best alternate in $prefix:"
+ echo " $_best_delegate"
+ fi
+ fi
+
+ elif [ -n "$_best_delegate" ]; then
+
+ echo " Specification best match: $_best_delegate"
+
+ elif [ -z "$_delegates" ]; then
+
+ cat <<-EOF
+ No config found to match: $config_spec
+ in $wxconfdir
+
+ Please install the desired library build, or specify a different
+ prefix where it may be found. If the library is not installed
+ you may call its wx-config directly by specifying its full path.
+
+ EOF
+
+ else
+ echo " Specification was ambiguous. Use additional feature options"
+ echo " to choose between alternate matches."
+ fi
+
+ _delegates=$(remove_field "$_best_delegate" $_delegates)
+
+ if [ -n "$_delegates" ]; then
+ echo
+ echo " Alternate matches:"
+ for d in $_delegates; do
+ echo " $d"
+ done
+ fi
+ if [ -n "$_remains_in_prefix" ]; then
+ echo
+ echo " Also available in $prefix:"
+ for d in $_remains_in_prefix; do
+ echo " $d"
+ done
+ fi
+
+ echo
+ exit
+fi
+
+
-# And finally some cereal to sprinkle it all on.
+# ... so if that wasn't what they wanted, then we need to know for
+# certain, can this config satisfy the user specification?
# --------------------------------------------------------------
-# No more messing around, can this config satisfy the user specification?
if ! user_mask_fits "$this_config" ; then
# No? Then lets see if it knows anybody who can.
decho
decho " to: $0"
decho " ($this_config) cannot satisfy:"
- decho " $configmask"
+ decho " $config_spec"
decho " Someone has been terribly careless."
decho
exit 1
if [ $_numdelegates -eq 0 ]; then
cat 1>&2 <<-EOF
- No config found to match: $configmask
- in $wxconfdir
- Please install the desired library build, or use --list
- without any feature specifiers to see all available configs.
+ Warning: No config found to match: $config_spec
+ in $wxconfdir
+ If you require this configuration, please install the desired
+ library build. If this is part of an automated configuration
+ test and no other errors occur, you may safely ignore it.
+ You may use wx-config --list to see all configs available in
+ the default prefix.
EOF
fi
decho
- decho " Specification was ambiguous."
+ decho " *** Error: Specification is ambiguous"
+ decho " as $config_spec"
decho " Use additional feature options to choose between:"
for i in $(find_eligible_delegates "$configmask"); do
decho " $i"
-
-
# If we are still here, then from now on we are responsible for
# all the user's needs. Time to rustle up some output for them.
# --------------------------------------------------------------
[ -z "$WXDEBUG" ] || decho " using this config"
-if [ -n "$flag_option_inplace" ]; then
- # If the user supplied a prefix, then the in tree config did not
- # delegate out to anything in the user supplied prefix so reset
- # the prefixes back to provide the correct compile options for
- # this uninstalled wx build.
- prefix=$this_prefix
- exec_prefix=$this_exec_prefix
-fi
+# If the user supplied a prefix, and the in tree config did not
+# delegate out to anything in that prefix, then reset the build
+# tree prefix to provide the correct output for using this
+# uninstalled wx build. Or put more simply:
+prefix=${this_prefix-$prefix}
+exec_prefix=${this_exec_prefix-$exec_prefix}
includedir="@includedir@"
libdir="@libdir@"
# Endgame. Nothing left to discover now.
# --------------------------------------------------------------
-# cppflags
-# This function exists for no other reason than to make conditional
-# something that we may not use on several occasions. It outputs
-# the basic cppflags determined from information gleaned above.
-# Nothing below here will change what it outputs, only whether it
-# does or not.
-cppflags()
-{
- _cppflags="-I${libdir}/wx/include/@TOOLCHAIN_FULLNAME@"
-
- if [ -n "$flag_option_inplace" ]; then
- # Bring in all the headers as if the whole tree had been installed.
- _cppflags="$_cppflags -I$includedir -I${prefix}/contrib/include"
- else
- _cppflags="$_cppflags -I${includedir}/wx-@WX_RELEASE@@WX_FLAVOUR@"
- fi
+[ -n "$this_linkage" ] || _static_cppflags="@TOOLCHAIN_DLL_DEFS@"
+[ "$using_gui" = "yes" ] || _gui_cppflags="-DwxUSE_GUI=0"
- _cppflags="$_cppflags @WXDEBUG_DEFINE@ @TOOLCHAIN_DEFS@"
-
- [ -n "$this_linkage" ] || _cppflags="$_cppflags @TOOLCHAIN_DLL_DEFS@"
- [ "$using_gui" = "yes" ] || _cppflags="$_cppflags -DwxUSE_GUI=0"
-
- echo $_cppflags "@WXCONFIG_INCLUDE@" "@WX_LARGEFILE_FLAGS@" "@GCC_PRAGMA_FLAGS@"
-}
+if [ -n "$this_prefix" ]; then
+ _include_cppflags="-I${includedir} -I${prefix}/contrib/include"
+else
+ _include_cppflags="-I${includedir}/wx-@WX_RELEASE@@WX_FLAVOUR@"
+fi
+_cppflags=$(echo "-I${libdir}/wx/include/@TOOLCHAIN_FULLNAME@" $_include_cppflags "@WXDEBUG_DEFINE@" "@TOOLCHAIN_DEFS@" $_static_cppflags $_gui_cppflags "@WXCONFIG_INCLUDE@" "@WX_LARGEFILE_FLAGS@" "@GCC_PRAGMA_FLAGS@")
# now without further ado, we can answer these too.
-[ -z "$output_option_cppflags" ] || echo $(cppflags)
-[ -z "$output_option_cflags" ] || echo $(cppflags) "@CODE_GEN_FLAGS@"
-[ -z "$output_option_cxxflags" ] || echo $(cppflags) "@CODE_GEN_FLAGS@" "@CODE_GEN_FLAGS_CXX@"
+[ -z "$output_option_cppflags" ] || echo $_cppflags
+[ -z "$output_option_cflags" ] || echo $_cppflags "@CODE_GEN_FLAGS@"
+[ -z "$output_option_cxxflags" ] || echo $_cppflags "@CODE_GEN_FLAGS@" "@CODE_GEN_FLAGS_CXX@"
[ -z "$output_option_gl_libs" ] || echo $(lib_flags_for gl)
if [ -n "$output_option_libs" ]; then