}
+# 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.
# --------------------------------------------------------------
_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
elif [ -z "$_delegates" ]; then
- cat <<-EOF
+ _last_chance=$(find_best_legacy_config)
+ if [ -n "$_last_chance" ]; then
+
+ echo " Specification matches legacy config: $_last_chance"
+
+ else
+
+ cat <<-EOF
No config found to match: $config_spec
in $wxconfdir
EOF
+ fi
+
else
echo " Specification was ambiguous. Use additional feature options"
echo " to choose between alternate matches."
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
fi
if [ $_numdelegates -eq 0 ]; then
- cat 1>&2 <<-EOF
+
+ _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
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
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@"
- 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
- match_field "$i" $wx_libs || wx_libs="$wx_libs $i"
+ wx_libs="$(remove_field $i $wx_libs) $i"
done
+ elif ! match_field base $wx_libs ; then
+ wx_libs="$wx_libs base"
fi
using_gui=no