# Licence: wxWindows licence
############################################################################
-# Extra^2 debug mode, for if things ever get really wierd.
+# Extra^2 debug mode, for if things ever get really weird.
[ -z "$WXDEBUG_X" ] || set -x
-# We expect a posix shell, so if this is a Bourne shell,
-# and apparently a few still exist, try for bash or ksh.
-
-if [ ~ = '~' ]
-then
- if (bash -c echo) >/dev/null 2>&1
- then
- exec bash "$0" "$@"
- fi
- if (ksh -c echo) >/dev/null 2>&1
- then
- exec ksh "$0" "$@"
- fi
- echo "$0: this script requires bash or ksh"
- exit 1
-fi
-
# On with some basic stuff, like the ability to die gracefully,
# and to tell people what we are about.
[--list] [--host=HOST] [--toolkit=TOOLKIT] [--universal[=yes|no]]
[--unicode[=yes|no]] [--debug[=yes|no]] [--static[=yes|no]]
[--version[=VERSION]] [--basename] [--cc] [--cppflags] [--cflags]
- [--cxxflags] [--rezflags] [--libs] [--cxx] [--ld] [--linkdeps]
+ [--cxxflags] [--rescomp] [--libs] [--cxx] [--ld] [--linkdeps]
[--utility=UTIL] [LIB ...]
wx-config returns information about the wxWidgets libraries available
release version version_full
basename
cppflags cflags cxxflags
+ rescomp
rezflags
libs
linkdeps
wxconfig_yesno_options="universal unicode debug static"
# Boolean options that do something or not.
-wxconfig_flag_options="$wxconfig_yesno_options no_rpath inplace"
+wxconfig_flag_options="$wxconfig_yesno_options selected_config no_rpath inplace"
# Returns NAME if _string is of the form: --NAME[=...]
option_name()
{
- _option_name_temp=${1%%=*}
- echo ${_option_name_temp#--} | tr '-' '_'
+ echo "$1" | sed 's/^--//;s/=.*//' | tr '-' '_'
}
# option_value _string
# Returns FOO if _string is of the form: --option=FOO
option_value()
{
- echo "${1#*=}"
+ echo "$1" | sed 's/^[^=]*=//'
}
# match_field _value _list
{
_match_field_match="$1"
shift
- for _match_field_i; do
+ for _match_field_i do
[ "x$_match_field_i" != "x$_match_field_match" ] || return 0
done
false
_remf_list=''
shift
if [ -n "$_remf_value" ]; then
- for _remf_item; do
+ for _remf_item do
[ "x$_remf_item" = "x$_remf_value" ] ||
_remf_list="${_remf_list:+$_remf_list }$_remf_item"
done
# with the one liners you see on the page below.
validate_arg()
{
- if match_field "$3" $(eval echo \"\$$1_$2_options\"); then
+ if match_field "$3" `eval echo \"\\\$$1_$2_options\"`; then
eval "$2_options=\"\${$2_options:+\$$2_options }$3\""
eval "$2_option_$3=\"$4\""
return
# at this point, otherwise, it's time to just shut up and listen for
# a moment.
-for arg; do
+for arg do
case "$arg" in
--help|-h)
usage
;;
--*=*)
- _name=$(option_name $arg)
- _value=$(option_value $arg)
+ _name=`option_name $arg`
+ _value=`option_value $arg`
if validate_arg wxconfig input "$_name" "$_value" ||
validate_arg wxconfig yesno "$_name" "$_value"
then
;;
--*)
- _name=$(option_name $arg)
+ _name=`option_name $arg`
if validate_arg wxconfig flag "$_name" yes ||
validate_arg wxconfig output "$_name" yes
then
decho " input parameters = $input_parameters"
decho " input options = $input_options"
for i in $input_options; do
- decho " $i = $(eval echo \"\$input_option_$i\")"
+ decho " $i = `eval echo \"\\\$input_option_$i\"`"
done
decho " yes/no options = $yesno_options"
for y in $yesno_options; do
- decho " $y = $(eval echo \"\$yesno_option_$y\")"
+ decho " $y = `eval echo \"\\\$yesno_option_$y\"`"
done
decho " flag options = $flag_options"
for f in $flag_options; do
- decho " $f = $(eval echo \"\$flag_option_$f\")"
+ decho " $f = `eval echo \"\\\$flag_option_$f\"`"
done
decho " output options = $output_options"
for o in $output_options; do
- decho " $o = $(eval echo \"\$output_option_$o\")"
+ decho " $o = `eval echo \"\\\$output_option_$o\"`"
done
fi
exec_prefix=${input_option_exec_prefix-${input_option_prefix-${this_exec_prefix:-@exec_prefix@}}}
wxconfdir="@libdir@/wx/config"
-installed_configs=$( cd "$wxconfdir" 2> /dev/null && ls | grep -v "^inplace-" )
+installed_configs=`cd "$wxconfdir" 2> /dev/null && ls | grep -v "^inplace-"`
is_cross && target="@host_alias@"
this_debugtype="@WX_DEBUGTYPE@"
this_flavour="@WX_FLAVOUR@"
this_version="@WX_RELEASE@"
-this_linkage=$( [ "x@SHARED@" = "x1" ] || echo '-static' )
+this_linkage=`[ "x@SHARED@" = "x1" ] || echo '-static'`
-this_config=$(get_mask this)
+this_config=`get_mask this`
# Extract the user specification from the options parsed.
-m_host=${input_option_host:+${input_option_host}-?}
+m_host=${input_option_host:+"${input_option_host}-?"}
m_host=${m_host:-${input_option_host-$this_host}}
-m_toolkit=${input_option_toolkit:-[^-]+}
-m_widgetset=${input_option_widgetset-(univ)?}
-m_chartype=${input_option_chartype:-(unicode|ansi)}
-m_debugtype=${input_option_debugtype:-(debug|release)}
+m_toolkit=${input_option_toolkit:-'[^-]+'}
+m_widgetset=${input_option_widgetset-'(univ)?'}
+m_chartype=${input_option_chartype:-'(unicode|ansi)'}
+m_debugtype=${input_option_debugtype:-'(debug|release)'}
m_flavour=${input_option_flavour:+-$input_option_flavour}
-m_flavour=${m_flavour:-${input_option_flavour-(-[^-]+)?}}
-m_version=${input_option_version:-[0-9]+\.[0-9]+}
-m_linkage=${input_option_linkage-(-static)?}
+m_flavour=${m_flavour:-${input_option_flavour-'(-[^-]+)?'}}
+m_version=${input_option_version:-'[0-9]+\.[0-9]+'}
+m_linkage=${input_option_linkage-'(-static)?'}
-configmask="^$(get_mask)$"
+configmask="^`get_mask`$"
# Dump the user specification in debug mode.
# count_delegates _mask
# Return the number of eligible config files that match _mask
-count_delegates() { count_fields $(find_eligible_delegates $1); }
+count_delegates() { count_fields `find_eligible_delegates $1`; }
# is_set _variablename
# Returns true if $_variablename is initialised.
-is_set() { [ "x$(eval echo \"\${$1-unset}\")" != "xunset" ]; }
+is_set() { [ "x`eval echo \"\\\${$1-unset}\"`" != "xunset" ]; }
+
+# not _cmd _args...
+# true iff _cmd is false
+not() { if "$@"; then false; else true; fi; }
# do_find_best_delegate _unbound-options
# The real worker part of find_best_delegate below. Recurses though all
decho " $_fbd_indent---> unbound options: $*"
fi
- for i; do
+ for i do
if [ "x$WXDEBUG" = "xverbose" ]; then
- decho " ${_fbd_indent}binding '$i' with '$(remove_field $i $*)' still free"
+ decho " ${_fbd_indent}binding '$i' with '`remove_field $i $*`' still free"
[ -z "$_pruned" ] || decho " ${_fbd_indent} --- pruned: $_pruned ---"
fi
if (
eval m_$i=\$this_$i
- _mask="^$(get_mask)$"
+ _mask="^`get_mask`$"
if [ "x$WXDEBUG" = "xverbose" ]; then
decho " ${_fbd_indent} checking: $_mask"
count_delegates "$_mask"
decho " $_fbd_indent $? eligible delegates"
- for d in $(find_eligible_delegates "$_mask"); do
+ for d in `find_eligible_delegates "$_mask"`; do
decho " ${_fbd_indent} $d"
done
fi
_still_eligible=$?
if [ $_still_eligible -eq 1 ]; then
- echo $(find_eligible_delegates "$_mask")
+ echo `find_eligible_delegates "$_mask"`
return
fi
[ "x$WXDEBUG" != "xfindprogress" ] || printf "." 1>&2
[ $_still_eligible -gt 1 ] && [ $# -gt 1 ] &&
- do_find_best_delegate $(remove_field $i $*)
+ do_find_best_delegate `remove_field $i $*`
)
then
decho " ${_fbd_indent}pruning: $i"
_pruned="${_pruned:+$_pruned }$i"
fi
- set $(remove_field $i $*)
+ set `remove_field $i $*`
fi
# This assumes no matching new style config has been found.
find_best_legacy_config()
{
- _legacy_configs=$(find_legacy_configs)
+ _legacy_configs=`find_legacy_configs`
if [ -n "$_legacy_configs" ]; then
- _legacy_mask=$(get_legacy_mask)
+ _legacy_mask=`get_legacy_mask`
for d in $_legacy_configs; do
if echo $d | $EGREP $_legacy_mask > /dev/null 2>&1 ; then
echo "$d"
if [ -n "$output_option_list" ]; then
_remains_in_prefix=$installed_configs
- _delegates=$(find_eligible_delegates $configmask)
- _best_delegate=$(find_best_delegate)
+ _delegates=`find_eligible_delegates $configmask`
+ _best_delegate=`find_best_delegate`
if [ "x$WXDEBUG" = "xverbose" ]; then
decho
fi
for d in $_delegates; do
- _remains_in_prefix=$(remove_field $d $_remains_in_prefix)
+ _remains_in_prefix=`remove_field $d $_remains_in_prefix`
done
echo
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)
+ _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
elif [ -z "$_delegates" ]; then
- _last_chance=$(find_best_legacy_config)
+ _last_chance=`find_best_legacy_config`
if [ -n "$_last_chance" ]; then
echo " Specification matches legacy config: $_last_chance"
echo " to choose between alternate matches."
fi
- _delegates=$(remove_field "$_best_delegate" $_delegates)
+ _delegates=`remove_field "$_best_delegate" $_delegates`
if [ -n "$_delegates" ]; then
echo
done
fi
- _legacy_configs=$(find_legacy_configs)
+ _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}"
+ echo " $d" | sed 's/-config$//'
done
fi
# certain, can this config satisfy the user specification?
# --------------------------------------------------------------
-if ! user_mask_fits "$this_config" ; then
+if not user_mask_fits "$this_config" ; then
# No? Then lets see if it knows anybody who can.
# But first, just be sure someone hasn't typo'd us into a loop.
if [ -n "$WXDEBUG" ]; then
decho " must delegate to an alternate config"
decho " potential delegates ($_numdelegates):"
- for i in $(find_eligible_delegates "$configmask"); do
+ for i in `find_eligible_delegates "$configmask"`; do
decho " $i"
done
fi
if [ $_numdelegates -eq 0 ]; then
- _last_chance=$(find_best_legacy_config)
+ _last_chance=`find_best_legacy_config`
if [ -n "$_last_chance" ]; then
- for arg; do
+ for arg do
case "$arg" in
--prefix*|--exec-prefix*| \
--version|--release|--basename| \
[ -z "$WXDEBUG" ] || decho " must prune the list of eligible delegates"
- best_delegate=$(find_best_delegate)
+ best_delegate=`find_best_delegate`
if [ -n "$best_delegate" ]; then
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
+ for i in `find_eligible_delegates "$configmask"`; do
decho " $i"
done
decho
if [ -n "$WXDEBUG" ]; then
decho " using the only suitable delegate"
- decho "--> $wxconfdir/$(find_eligible_delegates $configmask) $*"
+ decho "--> $wxconfdir/`find_eligible_delegates $configmask` $*"
fi
export WXCONFIG_DELEGATED=yes
- $wxconfdir/$(find_eligible_delegates $configmask) $*
+ $wxconfdir/`find_eligible_delegates $configmask` $*
exit
fi
bindir="@bindir@"
# Trivial queries we can answer now.
-[ -z "$output_option_prefix" ] || echo $prefix
-[ -z "$output_option_exec_prefix" ] || echo $exec_prefix
-[ -z "$output_option_release" ] || echo "@WX_RELEASE@"
-[ -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_cc" ] || echo "@CC@"
-[ -z "$output_option_cxx" ] || echo "@CXX@"
-[ -z "$output_option_ld" ] || echo "@EXE_LINKER@"
+[ -z "$output_option_prefix" ] || echo $prefix
+[ -z "$output_option_exec_prefix" ] || echo $exec_prefix
+[ -z "$output_option_release" ] || echo "@WX_RELEASE@"
+[ -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_cc" ] || echo "@CC@"
+[ -z "$output_option_cxx" ] || echo "@CXX@"
+[ -z "$output_option_ld" ] || echo "@EXE_LINKER@"
+[ -z "$flag_option_selected_config" ] || echo "$this_config"
+
+
+# --rezflags is deprecated and disabled (2005/11/29)
+if [ -n "$output_option_rezflags" ]; then
+ echo "@true"
+ decho "Warning: --rezflags, along with Mac OS classic resource building" \
+ "is deprecated. You should remove this from your Makefile and" \
+ "build .app bundles instead."
+fi
# The rest are going to need a little more work.
# like the libs, but work with what we've got for now.
is_cross || _util="$exec_prefix/utils/$input_option_utility/$input_option_utility"
- if ! is_installed && [ -x "$_util" ]; then
+ if not is_installed && [ -x "$_util" ]; then
is_static || _preload="eval LD_LIBRARY_PATH=$exec_prefix/lib"
echo $_preload $_util
exit
# Additional configuration for individual library components.
ldflags_gl="@LDFLAGS_GL@"
-ldlibs_base="@WXCONFIG_EXTRALIBS@"
+ldlibs_base="@WXCONFIG_LIBS@"
ldlibs_core="@EXTRALIBS_GUI@"
ldlibs_gl="@OPENGL_LIBS@"
ldlibs_html="@EXTRALIBS_HTML@"
is_cross && _target="-${target}"
- for lib; do
+ for lib do
# We evidently can't trust people not to duplicate things in
# configure, or to keep them in any sort of sane order overall,
# for sloppy work elsewhere though and @GUI_TK_LIBRARY should
# be fixed.
- for f in $(eval echo \"\$ldflags_$lib\"); do
+ for f in `eval echo \"\\\$ldflags_$lib\"`; do
match_field "$f" $_all_ldflags || _all_ldflags="$_all_ldflags $f"
done
if is_static; then
_wxlibs="$_wxlibs ${libdir}/lib${_libname}.a"
- for f in $(eval echo \"\$ldlibs_$lib\"); do
+ for f in `eval echo \"\\\$ldlibs_$lib\"`; do
# Only propagate duplicate -libraries to their latest
# possible position. Do not eliminate any other
# We should maybe filter *.a here too, but not unless
# we have to.
case "$f" in
- -l*) _all_libs="$(remove_field $f $_all_libs) $f" ;;
+ -l*) _all_libs="`remove_field $f $_all_libs` $f" ;;
*) _all_libs="$_all_libs $f" ;;
esac
is_cross && _target="-${target}"
- for lib; do
+ for lib do
if match_field "$lib" @CORE_BASE_LIBS@ ; then
_libname="@WX_LIBRARY_BASENAME_NOGUI@"
else
# Sanity check the list of libs the user provided us, if any.
# --------------------------------------------------------------
-wx_libs=$(echo "$input_parameters" | tr ',' ' ')
+wx_libs=`echo "$input_parameters" | tr ',' ' '`
[ -z "$WXDEBUG" ] || decho " user supplied libs: '$wx_libs'"
# Core libs are already built into the blob.
for i in std @CORE_GUI_LIBS@ @CORE_BASE_LIBS@; do
- wx_libs=$(remove_field $i $wx_libs)
+ wx_libs=`remove_field $i $wx_libs`
done
- wx_libs="@WXCONFIG_LDFLAGS_GUI@ $(lib_flags_for $wx_libs)"
+ wx_libs="@WXCONFIG_LDFLAGS_GUI@ `lib_flags_for $wx_libs`"
# We still need the core lib deps for a static build though
if is_static; then
link_deps="${libdir}/libwx_@TOOLCHAIN_NAME@.a"
- wx_libs="$wx_libs $link_deps $ldlibs_core @LIBS@"
+ wx_libs="$wx_libs $link_deps $ldlibs_core $ldlibs_base"
else
wx_libs="$wx_libs -lwx_@TOOLCHAIN_NAME@"
fi
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)
+ wx_libs=`remove_field std $wx_libs`
for i in @CORE_GUI_LIBS@ @CORE_BASE_LIBS@; do
- wx_libs="$(remove_field $i $wx_libs) $i"
+ wx_libs="`remove_field $i $wx_libs` $i"
done
- elif ! match_field base $wx_libs ; then
+ elif not match_field base $wx_libs ; then
wx_libs="$wx_libs base"
fi
done
if is_static; then
- link_deps=$(link_deps_for $wx_libs)
+ link_deps=`link_deps_for $wx_libs`
fi
- wx_libs="$_guildflags $(lib_flags_for $wx_libs)"
+ wx_libs="$_guildflags `lib_flags_for $wx_libs`"
fi
_include_cppflags="-I${includedir} -I${prefix}/contrib/include"
fi
-_cppflags=$(echo "-I${libdir}/wx/include/@TOOLCHAIN_FULLNAME@" $_include_cppflags "@WXDEBUG_DEFINE@" "@TOOLCHAIN_DEFS@" "@TOOLCHAIN_DLL_DEFS@" $_gui_cppflags "@WXCONFIG_INCLUDE@" "@WX_LARGEFILE_FLAGS@" "-DNO_GCC_PRAGMA")
-
-# FIXME: NO_GCC_PRAGMA is defined here to cover for a historical accident.
-# it may be removed once it is purged from the wx/headers also.
-
+_cppflags=`echo "-I${libdir}/wx/include/@TOOLCHAIN_FULLNAME@" $_include_cppflags "@WXCONFIG_CPPFLAGS@" $_gui_cppflags`
# 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_gl_libs" ] || echo $(lib_flags_for gl)
+[ -z "$output_option_cflags" ] || echo $_cppflags "@WXCONFIG_CFLAGS@"
+[ -z "$output_option_cxxflags" ] || echo $_cppflags "@WXCONFIG_CXXFLAGS@"
+[ -z "$output_option_gl_libs" ] || echo `lib_flags_for gl`
[ -z "$output_option_linkdeps" ] || echo $link_deps
if [ -n "$output_option_libs" ]; then
echo $_ldflags "@LDFLAGS@" $_rpath $wx_libs "@DMALLOC_LIBS@"
fi
+
+# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+#
+# Beyond here reside only machine or tool specific workarounds
+# that require knowlege not obtainable prior to this comment.
+#
+# Please. Avoid addding things here, wx-config should avoid
+# hard coding tool specific details. Do not use things here
+# as an example of other things that should be here, These
+# shouldn't be here either. This is a place of last resort
+# for interim workarounds. I can but stress as strongly as
+# the censor will allow, there are only bad examples of things
+# that belong at this level of abstraction to follow. It is
+# a limbo for glitches awaiting the Next Design Repair. Ok.
+#
+# With that firmly in mind, our debut dilemma is:
+
+# Resource compilers. An elusive term that covers some pretty
+# dissimilar concepts on various platforms. The good news is,
+# each platform has only one definition of 'resource', compiled
+# or not, and so we can abstract that neatly to return a platform
+# specific invocation of the appropriate tool. The bad news is,
+# windres (at least) requires knowledge of the wx header files
+# location(s) that cannot be predicted reliably before the call to
+# wx-config is made. Currently for all known resource compilers,
+# we can simply return a command and some salient configuration
+# options in response to a request for --rescomp. So here we
+# top up the options for any tools that may require information
+# that was only just determined in the last few machine cycles,
+# then output the necessary incantation for the platform.
+#
+# Most things should already be constant by the time configure
+# has run. Do not add anything here that is already known there.
+
+if [ -n "$output_option_rescomp" ]; then
+
+ case "@RESCOMP@" in
+ *windres|wrc)
+ # Note that with late model windres, we could just insert
+ # _include_cppflags here, but use the old notation for now
+ # as it is more universally accepted.
+ if is_installed; then
+ echo "@RESCOMP@ --include-dir" \
+ "${includedir}/wx-@WX_RELEASE@@WX_FLAVOUR@" \
+ "@WXCONFIG_RESFLAGS@"
+ else
+ echo "@RESCOMP@ --include-dir ${includedir}" \
+ "--include-dir ${prefix}/contrib/include" \
+ "@WXCONFIG_RESFLAGS@"
+ fi
+ ;;
+
+ # neither rez not emxbind have any specific needs from
+ # us, so just output what was determined by configure.
+ *)
+ echo @RESCOMP@ @WXCONFIG_RESFLAGS@
+ ;;
+ esac
+
+fi
+
+#
+# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
# And so that's it, we're done. Have a nice build.
exit 0