added --optional-libs wx-config argument (patch 1747239)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47287 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-07-10 10:28:12 +00:00
parent 92bf6cc15a
commit bd63020652
5 changed files with 208 additions and 114 deletions

75
configure vendored

File diff suppressed because one or more lines are too long

View File

@@ -7568,38 +7568,59 @@ dnl ---------------------------------------------------------------------------
dnl define variables with all built libraries for wx-config dnl define variables with all built libraries for wx-config
dnl --------------------------------------------------------------------------- dnl ---------------------------------------------------------------------------
CORE_BASE_LIBS="net base" STD_BASE_LIBS="base"
CORE_GUI_LIBS="adv core" STD_GUI_LIBS=""
BUILT_WX_LIBS="base"
ALL_WX_LIBS="xrc stc gl media dbgrid qa html adv core odbc xml net base"
if test "$wxUSE_XML" = "yes" ; then if test "$wxUSE_SOCKETS" = "yes" ; then
CORE_BASE_LIBS="xml $CORE_BASE_LIBS" STD_BASE_LIBS="net $STD_BASE_LIBS"
BUILT_WX_LIBS="net $BUILT_WX_LIBS"
fi fi
if test "$wxUSE_ODBC" != "no" ; then if test "$wxUSE_ODBC" != "no" ; then
CORE_BASE_LIBS="odbc $CORE_BASE_LIBS" BUILT_WX_LIBS="odbc $BUILT_WX_LIBS"
CORE_GUI_LIBS="dbgrid $CORE_GUI_LIBS"
fi fi
if test "$wxUSE_HTML" = "yes" ; then if test "$wxUSE_XML" = "yes" ; then
CORE_GUI_LIBS="html $CORE_GUI_LIBS" STD_BASE_LIBS="xml $STD_BASE_LIBS"
fi BUILT_WX_LIBS="xml $BUILT_WX_LIBS"
if test "$wxUSE_DEBUGREPORT" = "yes" ; then
CORE_GUI_LIBS="qa $CORE_GUI_LIBS"
fi
if test "$wxUSE_XRC" = "yes" ; then
CORE_GUI_LIBS="xrc $CORE_GUI_LIBS"
fi
if test "$wxUSE_AUI" = "yes" ; then
CORE_GUI_LIBS="aui $CORE_GUI_LIBS"
fi
if test "$wxUSE_STC" = "yes" ; then
CORE_GUI_LIBS="stc $CORE_GUI_LIBS"
fi fi
if test "$wxUSE_GUI" != "yes"; then if test "$wxUSE_GUI" = "yes"; then
CORE_GUI_LIBS="" STD_GUI_LIBS="adv core"
if test "$wxUSE_DEBUGREPORT" = "yes" ; then
STD_GUI_LIBS="qa $STD_GUI_LIBS"
BUILT_WX_LIBS="qa $BUILT_WX_LIBS"
fi
if test "$wxUSE_ODBC" != "no" ; then
BUILT_WX_LIBS="dbgrid $BUILT_WX_LIBS"
fi
if test "$wxUSE_HTML" = "yes" ; then
STD_GUI_LIBS="html $STD_GUI_LIBS"
BUILT_WX_LIBS="html $BUILT_WX_LIBS"
fi
if test "$wxUSE_MEDIACTRL" = "yes" ; then
BUILT_WX_LIBS="media $BUILT_WX_LIBS"
fi
if test "$wxUSE_OPENGL" = "yes" ; then
BUILT_WX_LIBS="gl $BUILT_WX_LIBS"
fi
if test "$wxUSE_AUI" = "yes" ; then
BUILT_WX_LIBS="aui $BUILT_WX_LIBS"
fi
if test "$wxUSE_STC" = "yes" ; then
BUILT_WX_LIBS="stc $BUILT_WX_LIBS"
fi
if test "$wxUSE_XRC" = "yes" ; then
STD_GUI_LIBS="xrc $STD_GUI_LIBS"
BUILT_WX_LIBS="xrc $BUILT_WX_LIBS"
fi
fi fi
AC_SUBST(CORE_BASE_LIBS) AC_SUBST(ALL_WX_LIBS)
AC_SUBST(CORE_GUI_LIBS) AC_SUBST(BUILT_WX_LIBS)
AC_SUBST(STD_BASE_LIBS)
AC_SUBST(STD_GUI_LIBS)
dnl --------------------------------------------------------------------------- dnl ---------------------------------------------------------------------------
dnl Output the makefiles and such from the results found above dnl Output the makefiles and such from the results found above

View File

@@ -114,6 +114,10 @@ All:
wxLogInterposerTemp was added wxLogInterposerTemp was added
- Added support for broadcasting to UDP sockets (Andrew Vincent) - Added support for broadcasting to UDP sockets (Andrew Vincent)
All (Unix):
- Added wx-config --optional-libs command line option (John Labenski)
All (GUI): All (GUI):
- Added wxH[V]ScrolledWindow (Brad Anderson, Bryan Petty) - Added wxH[V]ScrolledWindow (Brad Anderson, Bryan Petty)

View File

@@ -181,8 +181,8 @@ e) Regenerate all makefiles (don't forget to run autoconf)
f) Update configure.in and wx-config.in to contain information about f) Update configure.in and wx-config.in to contain information about
the library and needed linker flags: the library and needed linker flags:
* Add "foo" to either CORE_BASE_LIBS or CORE_GUI_LIBS in configure.in so * Add "foo" to either STD_BASE_LIBS or STD_GUI_LIBS in configure.in if
that wxFoo is not treated as contrib library in monolithic build. wxFoo is not to be treated as contrib library in monolithic build.
* If wxFoo links against additional libraries, add necessary linker * If wxFoo links against additional libraries, add necessary linker
flags and libraries to ldflags_foo and ldlibs_foo variables in flags and libraries to ldflags_foo and ldlibs_foo variables in
wx-config.in (both are optional). wx-config.in (both are optional).

View File

@@ -45,10 +45,11 @@ usage()
wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--release] [--version-full] wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--release] [--version-full]
[--list] [--selected-config] [--host=HOST] [--toolkit=TOOLKIT] [--list] [--selected-config] [--host=HOST] [--toolkit=TOOLKIT]
[--universal[=yes|no]] [--unicode[=yes|no]] [--debug[=yes|no]] [--universal[=yes|no]] [--unicode[=yes|no]] [--debug[=yes|no]]
[--static[=yes|no]] [--version[=VERSION]] [--basename] [--cc] [--static[=yes|no]] [--version[=VERSION]] [--basename] [--cc]
[--cppflags] [--cflags] [--cxxflags] [--rescomp] [--libs] [--cxx] [--cppflags] [--cflags] [--cxxflags] [--rescomp] [--cxx]
[--ld] [--linkdeps] [--utility=UTIL] [LIB ...] [--linkdeps] [--ld] [--utility=UTIL]
[--libs [LIBS...]] [--optional-libs [LIBS...]]
wx-config returns information about the wxWidgets libraries available on wx-config returns information about the wxWidgets libraries available on
your system. It may be used to retrieve the information required to build your system. It may be used to retrieve the information required to build
@@ -63,10 +64,15 @@ usage()
of UTIL to use with the selected build. The --linkdeps option returns only of UTIL to use with the selected build. The --linkdeps option returns only
static libraries for your makefile link rule dependencies. static libraries for your makefile link rule dependencies.
Optional LIB arguments (comma or space separated) may be used to specify The LIBS arguments (comma or space separated) may be used to specify the
the wxWidgets libraries that you wish to use. The magic "std" label may wxWidgets libraries that you wish to use. The "std" label may be used to
be used to import all libraries that would be used by default if none were import all libraries that would be used by default if none were specified
specified explicitly, e.g. wx-config --libs core,base. explicitly, e.g. wx-config --libs core,base. The "all" label may be used
to import all libraries that have been compiled which are shown in the
list below. The --optional-libs parameter should be followed by a list
of libs that should be linked to, but only if they are available.
Available libraries in this build are : @BUILT_WX_LIBS@
EOF EOF
@@ -117,6 +123,7 @@ wxconfig_output_options="prefix exec_prefix
rescomp rescomp
rezflags rezflags
libs libs
optional_libs
linkdeps linkdeps
cc cxx ld cc cxx ld
gl_libs" gl_libs"
@@ -268,8 +275,17 @@ for arg do
;; ;;
*) *)
# FIXME Surely we can validate the parameters too ... # We validate the parameters later ...
input_parameters="${input_parameters:+$input_parameters }$arg" if [ "$_name" = "libs" ]
then
libs_parameters="${libs_parameters:+$libs_parameters }$arg"
elif [ "$_name" = "optional_libs" ]
then
optional_libs_parameters="${optional_libs_parameters:+$optional_libs_parameters }$arg"
else
# These are unattached args and signify an error
input_parameters="${input_parameters:+$input_parameters }$arg"
fi
continue continue
;; ;;
esac esac
@@ -286,12 +302,19 @@ check_yesno_option unicode chartype unicode ansi
check_yesno_option debug debugtype debug release check_yesno_option debug debugtype debug release
check_yesno_option static linkage '-static' check_yesno_option static linkage '-static'
# Display error for unknown input parameters
if [ $input_parameters ]; then
echo "Extra unknown input parameters : $input_parameters"
exit 1
fi
# Dump everything we just read in debug mode. # Dump everything we just read in debug mode.
if [ -n "$WXDEBUG" ]; then if [ -n "$WXDEBUG" ]; then
decho decho
decho " input parameters = $input_parameters" decho " input parameters = $input_parameters"
decho " libs parameters = $libs_parameters"
decho " optional-libs parameters = $optional_libs_parameters"
decho " input options = $input_options" decho " input options = $input_options"
for i in $input_options; do for i in $input_options; do
decho " $i = `eval echo \"\\\$input_option_$i\"`" decho " $i = `eval echo \"\\\$input_option_$i\"`"
@@ -666,14 +689,14 @@ if [ -n "$output_option_list" ]; then
else else
cat <<-EOF cat <<-EOF
No config found to match: $config_spec No config found to match: $config_spec
in $wxconfdir in $wxconfdir
Please install the desired library build, or specify a different Please install the desired library build, or specify a different
prefix where it may be found. If the library is not installed prefix where it may be found. If the library is not installed
you may call its wx-config directly by specifying its full path. you may call its wx-config directly by specifying its full path.
EOF EOF
fi fi
@@ -783,15 +806,15 @@ if not user_mask_fits "$this_config" ; then
cat 1>&2 <<-EOF cat 1>&2 <<-EOF
Warning: No config found to match: $config_spec Warning: No config found to match: $config_spec
in $wxconfdir in $wxconfdir
If you require this configuration, please install the desired If you require this configuration, please install the desired
library build. If this is part of an automated configuration library build. If this is part of an automated configuration
test and no other errors occur, you may safely ignore it. test and no other errors occur, you may safely ignore it.
You may use wx-config --list to see all configs available in You may use wx-config --list to see all configs available in
the default prefix. the default prefix.
EOF EOF
# PIPEDREAM: from here we are actually just a teensy step # PIPEDREAM: from here we are actually just a teensy step
# from simply building the missing config for the user # from simply building the missing config for the user
@@ -878,7 +901,7 @@ if [ -n "$output_option_rezflags" ]; then
echo "@true" echo "@true"
decho "Warning: --rezflags, along with Mac OS classic resource building" \ decho "Warning: --rezflags, along with Mac OS classic resource building" \
"is deprecated. You should remove this from your Makefile and" \ "is deprecated. You should remove this from your Makefile and" \
"build .app bundles instead." "build .app bundles instead."
fi fi
@@ -988,7 +1011,7 @@ lib_flags_for()
match_field "$f" $_all_ldflags || _all_ldflags="$_all_ldflags $f" match_field "$f" $_all_ldflags || _all_ldflags="$_all_ldflags $f"
done done
if match_field "$lib" @CORE_BASE_LIBS@ ; then if match_field "$lib" @STD_BASE_LIBS@ ; then
_libname="@WX_LIBRARY_BASENAME_NOGUI@" _libname="@WX_LIBRARY_BASENAME_NOGUI@"
else else
_libname="@WX_LIBRARY_BASENAME_GUI@" _libname="@WX_LIBRARY_BASENAME_GUI@"
@@ -1047,7 +1070,7 @@ link_deps_for()
is_cross && _target="-${target}" is_cross && _target="-${target}"
for lib do for lib do
if match_field "$lib" @CORE_BASE_LIBS@ ; then if match_field "$lib" @STD_BASE_LIBS@ ; then
_libname="@WX_LIBRARY_BASENAME_NOGUI@" _libname="@WX_LIBRARY_BASENAME_NOGUI@"
else else
_libname="@WX_LIBRARY_BASENAME_GUI@" _libname="@WX_LIBRARY_BASENAME_GUI@"
@@ -1064,53 +1087,70 @@ link_deps_for()
# Sanity check the list of libs the user provided us, if any. # Sanity check the list of libs the user provided us, if any.
# -------------------------------------------------------------- # --------------------------------------------------------------
wx_libs=`echo "$input_parameters" | tr ',' ' '` wx_libs=`echo "$libs_parameters" | tr ',' ' '`
wx_optional_libs=`echo "$optional_libs_parameters" | tr ',' ' '`
# Add the --optional-libs, if they've been compiled and aren't already added
for i in $wx_optional_libs; do
if match_field $i @BUILT_WX_LIBS@; then
if not match_field $i $wx_libs; then
wx_libs="${wx_libs:+$wx_libs }$i"
fi
fi
done
[ -z "$WXDEBUG" ] || decho " user supplied libs: '$wx_libs'" [ -z "$WXDEBUG" ] || decho " user supplied libs: '$wx_libs'"
if is_monolithic; then if is_monolithic; then
# Core libs are already built into the blob. # Only add additional info if --libs was specified and not just --optional-libs
for i in std @CORE_GUI_LIBS@ @CORE_BASE_LIBS@; do if [ -n "$output_option_libs" ]; then
wx_libs=`remove_field $i $wx_libs` # Core libs are already built into the blob.
done for i in std @STD_GUI_LIBS@ @STD_BASE_LIBS@; do
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 # We still need the core lib deps for a static build though
if is_static; then if is_static; then
link_deps="${libdir}/libwx_@TOOLCHAIN_NAME@.a" link_deps="${libdir}/libwx_@TOOLCHAIN_NAME@.a"
wx_libs="$wx_libs $link_deps $ldlibs_core $ldlibs_base" wx_libs="$wx_libs $link_deps $ldlibs_core $ldlibs_base"
else else
wx_libs="$wx_libs -lwx_@TOOLCHAIN_NAME@" wx_libs="$wx_libs -lwx_@TOOLCHAIN_NAME@"
fi
using_gui=yes
fi fi
using_gui=yes
else # MONOLITHIC = 0 else # MONOLITHIC = 0
# Import everything by default, expand std if specified, or add base if omitted. # Import core libs by default, expand std if specified, or add base if omitted.
if [ -z "$wx_libs" ]; then if [ -n "$output_option_libs" ] && [ -z "$libs_parameters" ]; then
wx_libs="@CORE_GUI_LIBS@ @CORE_BASE_LIBS@" wx_libs="@STD_GUI_LIBS@ @STD_BASE_LIBS@"
elif match_field all $wx_libs; then
wx_libs="@BUILT_WX_LIBS@"
elif match_field std $wx_libs; then elif match_field std $wx_libs; then
# Bubble any libs that were already specified to the end # Bubble any libs that were already specified to the end
# of the list and ensure static linking order is retained. # 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 for i in @STD_GUI_LIBS@ @STD_BASE_LIBS@; do
wx_libs="`remove_field $i $wx_libs` $i" wx_libs="`remove_field $i $wx_libs` $i"
done done
elif not match_field base $wx_libs ; then elif not match_field base $wx_libs ; then
wx_libs="$wx_libs base" # Only add base if --libs was specified and not just --optional-libs
if [ -n "$output_option_libs" ]; then
wx_libs="$wx_libs base"
fi
fi fi
using_gui=no using_gui=no
for i in $wx_libs ; do for i in $wx_libs ; do
if match_field "$i" @CORE_GUI_LIBS@ ; then if match_field "$i" @STD_GUI_LIBS@ ; then
_guildflags="@WXCONFIG_LDFLAGS_GUI@" _guildflags="@WXCONFIG_LDFLAGS_GUI@"
using_gui=yes using_gui=yes
break break
fi fi
match_field "$i" @CORE_BASE_LIBS@ || using_gui=yes match_field "$i" @STD_BASE_LIBS@ || using_gui=yes
done done
if is_static; then if is_static; then
@@ -1149,6 +1189,7 @@ _cppflags=`echo "-I${libdir}/wx/include/@TOOLCHAIN_FULLNAME@" $_include_cppflags
[ -z "$output_option_linkdeps" ] || echo $link_deps [ -z "$output_option_linkdeps" ] || echo $link_deps
if [ -n "$output_option_libs" ]; then if [ -n "$output_option_libs" ]; then
# if --libs [--optional-libs] then output the full linker information
is_cross && is_cross &&
[ "x$libdir" = "x/usr/${target}/lib" ] || [ "x$libdir" = "x/usr/${target}/lib" ] ||
@@ -1158,6 +1199,11 @@ if [ -n "$output_option_libs" ]; then
is_installed || [ -n "$flag_option_no_rpath" ] || _rpath="@WXCONFIG_RPATH@" is_installed || [ -n "$flag_option_no_rpath" ] || _rpath="@WXCONFIG_RPATH@"
echo $_ldflags "@LDFLAGS@" $_rpath $wx_libs "@DMALLOC_LIBS@" echo $_ldflags "@LDFLAGS@" $_rpath $wx_libs "@DMALLOC_LIBS@"
elif [ -n "$output_option_optional_libs" ]; then
# if only --optional-libs then output just the libs
echo $wx_libs
fi fi
@@ -1199,8 +1245,8 @@ if [ -n "$output_option_rescomp" ]; then
case "@RESCOMP@" in case "@RESCOMP@" in
*windres|wrc) *windres|wrc)
# Note that with late model windres, we could just insert # Note that with late model windres, we could just insert
# _include_cppflags here, but use the old notation for now # _include_cppflags here, but use the old notation for now
# as it is more universally accepted. # as it is more universally accepted.
if is_installed; then if is_installed; then
echo "@RESCOMP@ --include-dir" \ echo "@RESCOMP@ --include-dir" \
"${includedir}/wx-@WX_RELEASE@@WX_FLAVOUR@" \ "${includedir}/wx-@WX_RELEASE@@WX_FLAVOUR@" \
@@ -1208,7 +1254,7 @@ if [ -n "$output_option_rescomp" ]; then
else else
echo "@RESCOMP@ --include-dir ${includedir}" \ echo "@RESCOMP@ --include-dir ${includedir}" \
"--include-dir ${prefix}/contrib/include" \ "--include-dir ${prefix}/contrib/include" \
"@WXCONFIG_RESFLAGS@" "@WXCONFIG_RESFLAGS@"
fi fi
;; ;;