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 ar command
dnl defines AR with the appropriate command dnl defines AR with the appropriate command
dnl dnl
dnl For Sun CC AC_BAKEFILE below sets AR to the compiler itself. dnl For Sun CC AC_BAKEFILE below sets AR to the compiler itself.
if test "x$SUNCXX" != xyes; then if test "x$SUNCXX" != xyes; then
AC_CHECK_TOOL(AR, ar) AC_CHECK_TOOL(AR, ar)
@@ -5051,7 +5051,7 @@ fi
dnl check for uname (POSIX) and gethostname (BSD) dnl check for uname (POSIX) and gethostname (BSD)
WX_CHECK_FUNCS(uname,,,[#include <sys/utsname.h>]) WX_CHECK_FUNCS(uname,,,[#include <sys/utsname.h>])
if test "$wx_cv_func_uname" != yes; then if test "$wx_cv_func_uname" != yes; then
WX_CHECK_FUNCS(gethostname) WX_CHECK_FUNCS(gethostname)
fi fi
WX_CHECK_FUNCS(strtok_r, [], [], [#define _REENTRANT]) WX_CHECK_FUNCS(strtok_r, [], [], [#define _REENTRANT])
@@ -6433,7 +6433,7 @@ if test "$wxUSE_SOCKETS" = "yes" ; then
wx_cv_type_getsockopt5, wx_cv_type_getsockopt5,
[ [
dnl Note that the rules for compatibility of pointers 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 that fails in C++ may not even give a warning about
dnl converting between incompatible pointer types in C. dnl converting between incompatible pointer types in C.
dnl So this test needs to be done in C++ mode. 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 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

@@ -119,7 +119,7 @@ that are required by the sample.
The Windows resource specification should use the central .rc file: The Windows resource specification should use the central .rc file:
<win32-res>../sample.rc</win32-res> <win32-res>../sample.rc</win32-res>
Run bakefile_gen in $(wx)/build/bakefiles to regenerate the bakefiles. 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. 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 Finally, define FOO_SRC and FOO_HDR to contain both
FOO_PLATFORM_{SRC,HDR} and FOO_{SRC,HDR} (see NET_SRC definition for an FOO_PLATFORM_{SRC,HDR} and FOO_{SRC,HDR} (see NET_SRC definition for an
example). 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 * If wxFoo is wxBase library (doesn't use GUI), add FOO_SRC to
ALL_BASE_SOURCES. 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 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\"`"
@@ -510,7 +533,7 @@ do_find_best_delegate()
for d in `find_eligible_delegates "$_mask"`; do for d in `find_eligible_delegates "$_mask"`; do
decho " ${_fbd_indent} $d" decho " ${_fbd_indent} $d"
done done
fi fi
count_delegates "$_mask" count_delegates "$_mask"
_still_eligible=$? _still_eligible=$?
@@ -664,16 +687,16 @@ if [ -n "$output_option_list" ]; then
echo " Specification matches legacy config: $_last_chance" echo " Specification matches legacy config: $_last_chance"
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
@@ -763,7 +786,7 @@ if not user_mask_fits "$this_config" ; then
--rezflags|--inplace) --rezflags|--inplace)
_legacy_args="$_legacy_args $arg" _legacy_args="$_legacy_args $arg"
;; ;;
--static|--static=y*|--static=Y*) --static|--static=y*|--static=Y*)
_legacy_args="$_legacy_args --static" _legacy_args="$_legacy_args --static"
;; ;;
@@ -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
@@ -808,7 +831,7 @@ if not user_mask_fits "$this_config" ; then
best_delegate=`find_best_delegate` best_delegate=`find_best_delegate`
if [ -n "$best_delegate" ]; then if [ -n "$best_delegate" ]; then
if [ -n "$WXDEBUG" ]; then if [ -n "$WXDEBUG" ]; then
decho " found a suitable delegate: $best_delegate" decho " found a suitable delegate: $best_delegate"
decho "--> $wxconfdir/$best_delegate $*" decho "--> $wxconfdir/$best_delegate $*"
@@ -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
;; ;;