]> git.saurik.com Git - wxWidgets.git/blobdiff - wx-config.in
Missed labels to replace number of 'topicNNN' in anchors. Consistent use of -dtor...
[wxWidgets.git] / wx-config.in
index 889e4188570c3576c8c7c289ccdc4eb267ba6ae7..52d256d53be0d38feb64f07b9ab7b946a9beafd8 100755 (executable)
@@ -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