X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3950ea80e8861bc581ff9454488073199e5026c0..659ade8c5b948b775ba278837659f10bf66b4844:/wx-config.in diff --git a/wx-config.in b/wx-config.in index 52d256d53b..7b314ec627 100755 --- a/wx-config.in +++ b/wx-config.in @@ -28,8 +28,14 @@ decho() { echo "$*" 1>&2; } # usage _exitcode # Outputs a usage message to stderr and exits with _exitcode. -# Try to keep this to a single page. We can add alternate help -# targets if people want more detail from interactive help. +# Try to keep this to a single page (ie. < 25 lines). We can add +# alternate or interactive help targets if people want more detail. +# +# Exit codes are now subject to a more strict interpretation. +# wx-config should return 0 upon successful operation, 1 if the +# reqested operation could not be completed successfully, and 2 +# if the requested operation is not supported by this version of +# wx-config. usage() { cat 1>&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. # -------------------------------------------------------------- @@ -553,10 +602,11 @@ if [ -n "$output_option_list" ]; 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 @@ -588,7 +638,14 @@ if [ -n "$output_option_list" ]; then 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 @@ -598,6 +655,8 @@ if [ -n "$output_option_list" ]; then EOF + fi + else echo " Specification was ambiguous. Use additional feature options" echo " to choose between alternate matches." @@ -620,6 +679,15 @@ if [ -n "$output_option_list" ]; then 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 @@ -661,7 +729,39 @@ if ! user_mask_fits "$this_config" ; then 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 @@ -673,12 +773,13 @@ if ! user_mask_fits "$this_config" ; then 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 @@ -746,10 +847,11 @@ libdir="@libdir@" [ -z "$output_option_version" ] || echo "@WX_VERSION@" [ -z "$output_option_version_full" ] || echo "@WX_SUBVERSION@" [ -z "$output_option_basename" ] || echo "@WX_LIBRARY_BASENAME_GUI@" -[ -z "$output_option_rezflags" ] || echo $(eval echo @MACRESWXCONFIG@) +[ -z "$output_option_rezflags" ] || echo $(eval echo "@MACRESWXCONFIG@") [ -z "$output_option_cc" ] || echo "@CC@" [ -z "$output_option_cxx" ] || echo "@CXX@" [ -z "$output_option_ld" ] || echo "@EXE_LINKER@" +[ -z "$input_option_utility" ] || echo "${input_option_utility}-@WX_RELEASE@@WX_FLAVOUR@" # The rest are going to need a little more work. @@ -864,22 +966,18 @@ if is_monolithic; 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