X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5636172bce061bb9d370cfa08aefbbc3fd8f4192..dcbd177f06597f98aae27bf53a4c98b4739102c7:/wx-config.in diff --git a/wx-config.in b/wx-config.in index 889e418857..52d256d53b 100755 --- a/wx-config.in +++ b/wx-config.in @@ -154,11 +154,15 @@ remove_field() _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 @@ -371,87 +375,8 @@ fi -# 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: # @@ -492,6 +417,15 @@ fi # 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 $#; } @@ -601,11 +535,101 @@ find_best_delegate() } +# 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. @@ -619,7 +643,7 @@ if ! user_mask_fits "$this_config" ; then decho decho " to: $0" decho " ($this_config) cannot satisfy:" - decho " $configmask" + decho " $config_spec" decho " Someone has been terribly careless." decho exit 1 @@ -639,10 +663,13 @@ if ! user_mask_fits "$this_config" ; then 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 @@ -673,7 +700,8 @@ if ! user_mask_fits "$this_config" ; then 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" @@ -695,22 +723,18 @@ fi - - # 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@" @@ -883,36 +907,21 @@ fi # 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