]> git.saurik.com Git - wxWidgets.git/blobdiff - wx-config.in
Fixed missing focus problem.
[wxWidgets.git] / wx-config.in
index abfe1c5c2ab848d088864690dee75d4d013c0523..97bbf2076069efeac480f0115c213dab1181d120 100755 (executable)
@@ -44,13 +44,12 @@ usage()
    on your system.  It may be used to retrieve the information you require
    to build applications using these libraries.
 
    on your system.  It may be used to retrieve the information you require
    to build applications using these libraries.
 
-    If alternative builds of wxWidgets exist on the system, you can  use the
-  options: --prefix, --host, --toolkit,  --unicode, --debug, --universal and
-  --version, to select from them.  Use the --list option  to show all builds
-  which  match any  specified criteria.   The unicode, universal,  and debug
-  options take an optional yes or no argument, while host and version accept
-  posix extended regex.  eg. wx-config --unicode=n --debug --host=?.* --list
-  will show all ansi-debug libraries installed, including cross libraries.
+    If alternative builds of wxWidgets exist on the system, you can use the
+  options:  --prefix,  --host,  --toolkit,  --unicode,  --debug,  --static,
+  --version and --universal, to select from them.  Use the --list option to
+  show alternatives available which match specified criteria.   The unicode,
+  debug, and universal options  take an  optional yes or no  argument, while
+  host and version accept posix extended regex.
 
     Optional LIB arguments (comma or space separated) may be used to specify
   the wxWidgets libraries that  you wish  to use.  The magic "std" label may
 
     Optional LIB arguments (comma or space separated) may be used to specify
   the wxWidgets libraries that  you wish  to use.  The magic "std" label may
@@ -154,11 +153,15 @@ remove_field()
     _remf_value="$1"
     _remf_list=''
     shift
     _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
 }
 
 # validate_arg _domain _set _name _value
@@ -531,6 +534,48 @@ find_best_delegate()
 }
 
 
 }
 
 
+# Legacy wx-config helpers.
+# -------------------------
+
+# get_legacy_mask
+# Returns a mask in the format used by wx2.4.
+get_legacy_mask()
+{
+    [ $# -gt 0 ] || set m
+    eval [ "x\${$1_chartype}" != "xunicode" ] || _unicode_flag=u
+    eval [ "x\${$1_debugtype}" != "xdebug" ] || _debug_flag=d
+    eval echo "wx\${$1_toolkit}${_unicode_flag}${_debug_flag}-\${$1_version}\${$1_host}-config"
+}
+
+# find_legacy_configs
+# Returns a list of configs installed by wx2.4 releases.
+find_legacy_configs()
+{
+    cd "$prefix/bin" 2> /dev/null &&            \
+        ls wx*-2.4-config | grep -v ^wxbase;    \
+        ls wx*-2.4-config | grep ^wxbase
+}
+
+# find_best_legacy_config
+# Returns the best legacy config for a given specification.
+# This assumes no matching new style config has been found.
+find_best_legacy_config()
+{
+    _legacy_configs=$(find_legacy_configs)
+    if [ -n "$_legacy_configs" ]; then
+        _legacy_mask=$(get_legacy_mask)
+        for d in $_legacy_configs; do
+            if echo $d | grep -E $_legacy_mask > /dev/null 2>&1 ; then
+                echo "$d"
+                return
+            fi
+        done
+    fi
+    false
+}
+
+
+
 # The only action we can perform authoritatively prior to delegation
 # is to list all the possible delegates.
 # --------------------------------------------------------------
 # The only action we can perform authoritatively prior to delegation
 # is to list all the possible delegates.
 # --------------------------------------------------------------
@@ -549,10 +594,11 @@ if [ -n "$output_option_list" ]; then
     _best_delegate=$(find_best_delegate)
 
     if [ "x$WXDEBUG" = "xverbose" ]; then
     _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"
+        decho
+        decho " all      = $_remains_in_prefix"
+        decho " matching = $_delegates"
+        decho " best     = $_best_delegate"
+        decho " this     = $this_config"
     fi
 
     for d in $_delegates; do
     fi
 
     for d in $_delegates; do
@@ -582,9 +628,16 @@ if [ -n "$output_option_list" ]; then
 
         echo "  Specification best match: $_best_delegate"
 
 
         echo "  Specification best match: $_best_delegate"
 
-    elif [ -n "_delegates" ]; then
+    elif [ -z "$_delegates" ]; then
+
+        _last_chance=$(find_best_legacy_config)
+        if [ -n "$_last_chance" ]; then
 
 
-        cat <<-EOF
+            echo "  Specification matches legacy config: $_last_chance"
+
+        else
+        
+            cat <<-EOF
          No config found to match: $config_spec
          in $wxconfdir
 
          No config found to match: $config_spec
          in $wxconfdir
 
@@ -593,11 +646,15 @@ if [ -n "$output_option_list" ]; then
          you may call its wx-config directly by specifying its full path.
 
        EOF
          you may call its wx-config directly by specifying its full path.
 
        EOF
-        exit 1
 
 
+        fi
+
+    else
+        echo " Specification was ambiguous.  Use additional feature options"
+        echo " to choose between alternate matches."
     fi
 
     fi
 
-    _delegates=$(remove_field $_best_delegate $_delegates)
+    _delegates=$(remove_field "$_best_delegate" $_delegates)
 
     if [ -n "$_delegates" ]; then
         echo
 
     if [ -n "$_delegates" ]; then
         echo
@@ -614,6 +671,15 @@ if [ -n "$output_option_list" ]; then
         done
     fi
 
         done
     fi
 
+    _legacy_configs=$(find_legacy_configs)
+    if [ -n "$_legacy_configs" ]; then
+        echo
+        echo "  Legacy configs available in $prefix:"
+        for d in $_legacy_configs; do
+            echo "    ${d%-config}"
+        done
+    fi
+
     echo
     exit
 fi
     echo
     exit
 fi
@@ -655,21 +721,57 @@ if ! user_mask_fits "$this_config" ; then
     fi
 
     if [ $_numdelegates -eq 0 ]; then
     fi
 
     if [ $_numdelegates -eq 0 ]; then
-        cat 1>&2 <<-EOF
 
 
-         No config found to match: $config_spec
-         in $wxconfdir
-         Please install the desired library build, or use --list
-         without any feature specifiers to see all available configs.
+        _last_chance=$(find_best_legacy_config)
+        if [ -n "$_last_chance" ]; then
+
+            for arg; do
+                case "$arg" in
+                    --prefix*|--exec-prefix*|               \
+                    --version|--release|--basename|         \
+                    --static|--libs|--gl_libs|              \
+                    --cppflags|--cflags|--cxxflags|         \
+                    --cc|--cxx|--ld|                        \
+                    --rezflags|--inplace)
+                        _legacy_args="$_legacy_args $arg"
+                        ;;
+                    
+                    --static|--static=y*|--static=Y*)
+                        _legacy_args="$_legacy_args --static"
+                        ;;
+                esac
+            done
+
+            if [ -n "$WXDEBUG" ]; then
+                decho "  found a suitable legacy delegate: $_last_chance"
+                decho "--> $prefix/bin/$_last_chance $_legacy_args"
+            fi
+
+            export WXCONFIG_DELEGATED=yes
+            $prefix/bin/$_last_chance $_legacy_args
+            exit
+
+        else
+
+            cat 1>&2 <<-EOF
+
+         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
 
 
        EOF
 
-        # PIPEDREAM:  This will probably give Vadim an aneurysm if I
-        # mention it out of context, but from here we are actually
-        # just a teensy step from simply building the missing config
-        # for the user on the fly if this is an in tree wx-config.
+            # PIPEDREAM:  This will probably give Vadim an aneurysm if I
+            # mention it out of context, but from here we are actually
+            # just a teensy step from simply building the missing config
+            # for the user on the fly if this is an in tree wx-config.
 
 
-        exit 1
+            exit 1
+        fi
     fi
 
     if [ $_numdelegates -gt 1 ]; then
     fi
 
     if [ $_numdelegates -gt 1 ]; then
@@ -691,7 +793,8 @@ if ! user_mask_fits "$this_config" ; then
         fi
 
         decho
         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"
         decho " Use additional feature options to choose between:"
         for i in $(find_eligible_delegates "$configmask"); do
             decho "  $i"
@@ -713,8 +816,6 @@ 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.
 # --------------------------------------------------------------
 # 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.
 # --------------------------------------------------------------
@@ -856,22 +957,18 @@ if is_monolithic; then
 
 else    # MONOLITHIC = 0
 
 
 else    # MONOLITHIC = 0
 
-    # Import everything by default, and base if it was omitted.
+    # Import everything by default, expand std if specified, or add base if omitted.
     if [ -z "$wx_libs" ]; then
         wx_libs="@CORE_GUI_LIBS@ @CORE_BASE_LIBS@"
     if [ -z "$wx_libs" ]; then
         wx_libs="@CORE_GUI_LIBS@ @CORE_BASE_LIBS@"
-    elif ! match_field base $wx_libs ; then
-        wx_libs="$wx_libs base"
-    fi
-
-    # Expand the magic library 'std' to the default set.
-    # Only add those not already specified to future-proof
-    # against changes to std which would otherwise break
-    # people's builds.
-    if match_field std $wx_libs; then
+    elif match_field std $wx_libs; then
+        # Bubble any libs that were already specified to the end
+        # of the list and ensure static linking order is retained.
         wx_libs=$(remove_field std $wx_libs)
         for i in @CORE_GUI_LIBS@ @CORE_BASE_LIBS@; do
         wx_libs=$(remove_field std $wx_libs)
         for i in @CORE_GUI_LIBS@ @CORE_BASE_LIBS@; do
-            match_field "$i" $wx_libs || wx_libs="$wx_libs $i"
+            wx_libs="$(remove_field $i $wx_libs) $i"
         done
         done
+    elif ! match_field base $wx_libs ; then
+        wx_libs="$wx_libs base"
     fi
 
     using_gui=no
     fi
 
     using_gui=no