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

@ -1490,7 +1490,7 @@ AC_PROG_RANLIB
dnl ar command
dnl defines AR with the appropriate command
dnl
dnl
dnl For Sun CC AC_BAKEFILE below sets AR to the compiler itself.
if test "x$SUNCXX" != xyes; then
AC_CHECK_TOOL(AR, ar)
@ -5051,7 +5051,7 @@ fi
dnl check for uname (POSIX) and gethostname (BSD)
WX_CHECK_FUNCS(uname,,,[#include <sys/utsname.h>])
if test "$wx_cv_func_uname" != yes; then
WX_CHECK_FUNCS(gethostname)
WX_CHECK_FUNCS(gethostname)
fi
WX_CHECK_FUNCS(strtok_r, [], [], [#define _REENTRANT])
@ -6433,7 +6433,7 @@ if test "$wxUSE_SOCKETS" = "yes" ; then
wx_cv_type_getsockopt5,
[
dnl Note that the rules for compatibility of pointers
dnl are somewhat different between C and C++, so code
dnl are somewhat different between C and C++, so code
dnl that fails in C++ may not even give a warning about
dnl converting between incompatible pointer types in C.
dnl So this test needs to be done in C++ mode.
@ -7568,38 +7568,59 @@ dnl ---------------------------------------------------------------------------
dnl define variables with all built libraries for wx-config
dnl ---------------------------------------------------------------------------
CORE_BASE_LIBS="net base"
CORE_GUI_LIBS="adv core"
STD_BASE_LIBS="base"
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
CORE_BASE_LIBS="xml $CORE_BASE_LIBS"
if test "$wxUSE_SOCKETS" = "yes" ; then
STD_BASE_LIBS="net $STD_BASE_LIBS"
BUILT_WX_LIBS="net $BUILT_WX_LIBS"
fi
if test "$wxUSE_ODBC" != "no" ; then
CORE_BASE_LIBS="odbc $CORE_BASE_LIBS"
CORE_GUI_LIBS="dbgrid $CORE_GUI_LIBS"
BUILT_WX_LIBS="odbc $BUILT_WX_LIBS"
fi
if test "$wxUSE_HTML" = "yes" ; then
CORE_GUI_LIBS="html $CORE_GUI_LIBS"
fi
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"
if test "$wxUSE_XML" = "yes" ; then
STD_BASE_LIBS="xml $STD_BASE_LIBS"
BUILT_WX_LIBS="xml $BUILT_WX_LIBS"
fi
if test "$wxUSE_GUI" != "yes"; then
CORE_GUI_LIBS=""
if test "$wxUSE_GUI" = "yes"; then
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
AC_SUBST(CORE_BASE_LIBS)
AC_SUBST(CORE_GUI_LIBS)
AC_SUBST(ALL_WX_LIBS)
AC_SUBST(BUILT_WX_LIBS)
AC_SUBST(STD_BASE_LIBS)
AC_SUBST(STD_GUI_LIBS)
dnl ---------------------------------------------------------------------------
dnl Output the makefiles and such from the results found above

View File

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

View File

@ -119,7 +119,7 @@ that are required by the sample.
The Windows resource specification should use the central .rc file:
<win32-res>../sample.rc</win32-res>
Run bakefile_gen in $(wx)/build/bakefiles to regenerate the bakefiles.
Finally commit $(wx)/build/bakefiles/make_dist.mk and all the other modified files.
@ -149,7 +149,7 @@ a) Add files to files.bkl:
Finally, define FOO_SRC and FOO_HDR to contain both
FOO_PLATFORM_{SRC,HDR} and FOO_{SRC,HDR} (see NET_SRC definition for an
example).
* Add FOO_HDR to ALL_GUI_HEADERS or ALL_BASE_HEADERS.
* Add FOO_HDR to ALL_GUI_HEADERS or ALL_BASE_HEADERS.
* If wxFoo is wxBase library (doesn't use GUI), add FOO_SRC to
ALL_BASE_SOURCES.
@ -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
the library and needed linker flags:
* Add "foo" to either CORE_BASE_LIBS or CORE_GUI_LIBS in configure.in so
that wxFoo is not treated as contrib library in monolithic build.
* Add "foo" to either STD_BASE_LIBS or STD_GUI_LIBS in configure.in if
wxFoo is not to be treated as contrib library in monolithic build.
* If wxFoo links against additional libraries, add necessary linker
flags and libraries to ldflags_foo and ldlibs_foo variables in
wx-config.in (both are optional).

View File

@ -45,10 +45,11 @@ usage()
wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--release] [--version-full]
[--list] [--selected-config] [--host=HOST] [--toolkit=TOOLKIT]
[--universal[=yes|no]] [--unicode[=yes|no]] [--debug[=yes|no]]
[--static[=yes|no]] [--version[=VERSION]] [--basename] [--cc]
[--cppflags] [--cflags] [--cxxflags] [--rescomp] [--libs] [--cxx]
[--ld] [--linkdeps] [--utility=UTIL] [LIB ...]
[--universal[=yes|no]] [--unicode[=yes|no]] [--debug[=yes|no]]
[--static[=yes|no]] [--version[=VERSION]] [--basename] [--cc]
[--cppflags] [--cflags] [--cxxflags] [--rescomp] [--cxx]
[--linkdeps] [--ld] [--utility=UTIL]
[--libs [LIBS...]] [--optional-libs [LIBS...]]
wx-config returns information about the wxWidgets libraries available on
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
static libraries for your makefile link rule dependencies.
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
be used to import all libraries that would be used by default if none were
specified explicitly, e.g. wx-config --libs core,base.
The LIBS arguments (comma or space separated) may be used to specify the
wxWidgets libraries that you wish to use. The "std" label may be used to
import all libraries that would be used by default if none were specified
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
@ -117,6 +123,7 @@ wxconfig_output_options="prefix exec_prefix
rescomp
rezflags
libs
optional_libs
linkdeps
cc cxx ld
gl_libs"
@ -268,8 +275,17 @@ for arg do
;;
*)
# FIXME Surely we can validate the parameters too ...
input_parameters="${input_parameters:+$input_parameters }$arg"
# We validate the parameters later ...
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
;;
esac
@ -286,12 +302,19 @@ check_yesno_option unicode chartype unicode ansi
check_yesno_option debug debugtype debug release
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.
if [ -n "$WXDEBUG" ]; then
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"
for i in $input_options; do
decho " $i = `eval echo \"\\\$input_option_$i\"`"
@ -510,7 +533,7 @@ do_find_best_delegate()
for d in `find_eligible_delegates "$_mask"`; do
decho " ${_fbd_indent} $d"
done
fi
fi
count_delegates "$_mask"
_still_eligible=$?
@ -664,16 +687,16 @@ if [ -n "$output_option_list" ]; then
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
Please install the desired library build, or specify a different
prefix where it may be found. If the library is not installed
you may call its wx-config directly by specifying its full path.
Please install the desired library build, or specify a different
prefix where it may be found. If the library is not installed
you may call its wx-config directly by specifying its full path.
EOF
EOF
fi
@ -763,7 +786,7 @@ if not user_mask_fits "$this_config" ; then
--rezflags|--inplace)
_legacy_args="$_legacy_args $arg"
;;
--static|--static=y*|--static=Y*)
_legacy_args="$_legacy_args --static"
;;
@ -783,15 +806,15 @@ if not user_mask_fits "$this_config" ; then
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.
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: from here we are actually just a teensy step
# from simply building the missing config for the user
@ -808,7 +831,7 @@ if not user_mask_fits "$this_config" ; then
best_delegate=`find_best_delegate`
if [ -n "$best_delegate" ]; then
if [ -n "$WXDEBUG" ]; then
decho " found a suitable delegate: $best_delegate"
decho "--> $wxconfdir/$best_delegate $*"
@ -878,7 +901,7 @@ 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."
"build .app bundles instead."
fi
@ -988,7 +1011,7 @@ lib_flags_for()
match_field "$f" $_all_ldflags || _all_ldflags="$_all_ldflags $f"
done
if match_field "$lib" @CORE_BASE_LIBS@ ; then
if match_field "$lib" @STD_BASE_LIBS@ ; then
_libname="@WX_LIBRARY_BASENAME_NOGUI@"
else
_libname="@WX_LIBRARY_BASENAME_GUI@"
@ -1047,7 +1070,7 @@ link_deps_for()
is_cross && _target="-${target}"
for lib do
if match_field "$lib" @CORE_BASE_LIBS@ ; then
if match_field "$lib" @STD_BASE_LIBS@ ; then
_libname="@WX_LIBRARY_BASENAME_NOGUI@"
else
_libname="@WX_LIBRARY_BASENAME_GUI@"
@ -1064,53 +1087,70 @@ link_deps_for()
# 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'"
if is_monolithic; then
# 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`
done
# Only add additional info if --libs was specified and not just --optional-libs
if [ -n "$output_option_libs" ]; then
# Core libs are already built into the blob.
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
if is_static; then
link_deps="${libdir}/libwx_@TOOLCHAIN_NAME@.a"
wx_libs="$wx_libs $link_deps $ldlibs_core $ldlibs_base"
else
wx_libs="$wx_libs -lwx_@TOOLCHAIN_NAME@"
# 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 $ldlibs_base"
else
wx_libs="$wx_libs -lwx_@TOOLCHAIN_NAME@"
fi
using_gui=yes
fi
using_gui=yes
else # MONOLITHIC = 0
# 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@"
# Import core libs by default, expand std if specified, or add base if omitted.
if [ -n "$output_option_libs" ] && [ -z "$libs_parameters" ]; then
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
# 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
for i in @STD_GUI_LIBS@ @STD_BASE_LIBS@; do
wx_libs="`remove_field $i $wx_libs` $i"
done
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
using_gui=no
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@"
using_gui=yes
break
fi
match_field "$i" @CORE_BASE_LIBS@ || using_gui=yes
match_field "$i" @STD_BASE_LIBS@ || using_gui=yes
done
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
if [ -n "$output_option_libs" ]; then
# if --libs [--optional-libs] then output the full linker information
is_cross &&
[ "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@"
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
@ -1199,8 +1245,8 @@ 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.
# _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@" \
@ -1208,7 +1254,7 @@ if [ -n "$output_option_rescomp" ]; then
else
echo "@RESCOMP@ --include-dir ${includedir}" \
"--include-dir ${prefix}/contrib/include" \
"@WXCONFIG_RESFLAGS@"
"@WXCONFIG_RESFLAGS@"
fi
;;