2001ecbc76
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28616 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
413 lines
11 KiB
Bash
Executable File
413 lines
11 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# -------------------------------------------------------------------------
|
|
# Configured settings:
|
|
# -------------------------------------------------------------------------
|
|
|
|
# Version and build type information:
|
|
|
|
WX_MAJOR_VERSION_NUMBER="@WX_MAJOR_VERSION_NUMBER@"
|
|
WX_MINOR_VERSION_NUMBER="@WX_MINOR_VERSION_NUMBER@"
|
|
WX_RELEASE_NUMBER="@WX_RELEASE_NUMBER@"
|
|
WX_SUBRELEASE_NUMBER="@WX_SUBRELEASE_NUMBER@"
|
|
release="@WX_MAJOR_VERSION_NUMBER@.@WX_MINOR_VERSION_NUMBER@"
|
|
is_monolithic="@MONOLITHIC@"
|
|
cross_compiling="@cross_compiling@"
|
|
target="@host_alias@"
|
|
static_flag="@STATIC_FLAG@"
|
|
inplace_flag="no"
|
|
|
|
# Misc configuration variables:
|
|
|
|
update_prefixes()
|
|
{
|
|
includedir="@includedir@"
|
|
libdir="@libdir@"
|
|
}
|
|
prefix="@prefix@"
|
|
exec_prefix="@exec_prefix@"
|
|
update_prefixes
|
|
|
|
CC="@CC@"
|
|
GCC="@GCC@"
|
|
CXX="@CXX@"
|
|
LD="@SHARED_LD@"
|
|
srcdir="@top_srcdir@"
|
|
builddir="@top_builddir_wxconfig@"
|
|
basename_nogui="@WX_LIBRARY_BASENAME_NOGUI@"
|
|
basename_gui="@WX_LIBRARY_BASENAME_GUI@"
|
|
|
|
TOOLCHAIN_NAME="@TOOLCHAIN_NAME@"
|
|
LDFLAGS="@LDFLAGS@"
|
|
WXCONFIG_RPATH="@WXCONFIG_RPATH@"
|
|
DMALLOC_LIBS="@DMALLOC_LIBS@"
|
|
WXCONFIG_LIBS="@WXCONFIG_LIBS@"
|
|
WXCONFIG_LIBS_STATIC="@WXCONFIG_LIBS_STATIC@"
|
|
WXDEBUG_DEFINE="@WXDEBUG_DEFINE@"
|
|
TOOLCHAIN_DEFS="@TOOLCHAIN_DEFS@"
|
|
TOOLCHAIN_DLL_DEFS="@TOOLCHAIN_DLL_DEFS@"
|
|
WXCONFIG_INCLUDE="@WXCONFIG_INCLUDE@"
|
|
WX_LARGEFILE_FLAGS="@WX_LARGEFILE_FLAGS@"
|
|
GCC_PRAGMA_FLAGS="@GCC_PRAGMA_FLAGS@"
|
|
CODE_GEN_FLAGS="@CODE_GEN_FLAGS@"
|
|
CODE_GEN_FLAGS_CXX="@CODE_GEN_FLAGS_CXX@"
|
|
LDFLAGS_EXE="@LDFLAGS_EXE@"
|
|
MACRESWXCONFIG="@MACRESWXCONFIG@"
|
|
EXTRALIBS_GUI="@EXTRALIBS_GUI@"
|
|
LIBS="@LIBS@"
|
|
WXCONFIG_LDFLAGS_GUI="@WXCONFIG_LDFLAGS_GUI@"
|
|
|
|
|
|
# Linker flags for sublibraries:
|
|
|
|
CORE_BASE_LIBS="@CORE_BASE_LIBS@"
|
|
CORE_GUI_LIBS="@CORE_GUI_LIBS@"
|
|
|
|
ldlibs_base="@WXCONFIG_EXTRALIBS@"
|
|
ldlibs_core="@EXTRALIBS_GUI@"
|
|
ldlibs_xml="@EXTRALIBS_XML@"
|
|
ldlibs_html="@EXTRALIBS_HTML@"
|
|
ldlibs_odbc="@EXTRALIBS_ODBC@"
|
|
ldlibs_adv="@EXTRALIBS_SDL@"
|
|
|
|
ldflags_gl="@LDFLAGS_GL@"
|
|
ldlibs_gl="@OPENGL_LIBS@"
|
|
|
|
|
|
|
|
# -------------------------------------------------------------------------
|
|
# Script code:
|
|
# -------------------------------------------------------------------------
|
|
|
|
exec_prefix_set=no
|
|
|
|
# is $1 among the rest of arguments?
|
|
isinlist()
|
|
{
|
|
value=$1
|
|
shift
|
|
isin=no
|
|
for iii in $* ; do
|
|
if test $iii = $value ; then isin=yes ; fi
|
|
done
|
|
test $isin = yes
|
|
}
|
|
|
|
# output linker commands needed to link against libraries passed as arguments
|
|
# (does not handle monolithic/multilib):
|
|
output_libs()
|
|
{
|
|
if test "$cross_compiling" = "yes" ; then
|
|
target_tag="-${target}"
|
|
fi
|
|
|
|
all_libs=""
|
|
all_ldflags=""
|
|
wxlibs=""
|
|
|
|
for lib in $* ; do
|
|
eval xlibs=\$ldlibs_$lib
|
|
eval xflags=\$ldflags_$lib
|
|
if isinlist $lib $CORE_BASE_LIBS ; then
|
|
basename=$basename_nogui
|
|
else
|
|
basename=$basename_gui
|
|
fi
|
|
if test $lib = "base" ; then
|
|
libname="$basename"
|
|
else
|
|
libname="${basename}_${lib}"
|
|
fi
|
|
|
|
all_ldflags="$all_ldflags $xflags"
|
|
if test $static_flag = yes ; then
|
|
wxlibs="$wxlibs ${libdir}/lib${libname}-${release}${target_tag}.a"
|
|
all_libs="$all_libs $xlibs"
|
|
else
|
|
wxlibs="$wxlibs -l${libname}-${release}${target_tag}"
|
|
fi
|
|
done
|
|
|
|
echo $all_ldflags $wxlibs $all_libs
|
|
}
|
|
|
|
# output $(WXCONFIG_LDFLAGS_GUI) if any of libs passed as arguments is GUI
|
|
# library, nothing otherwise:
|
|
get_ldflags_gui()
|
|
{
|
|
flags_to_ret=""
|
|
for lib in $* ; do
|
|
if isinlist $lib $CORE_GUI_LIBS ; then
|
|
flags_to_ret="$WXCONFIG_LDFLAGS_GUI"
|
|
fi
|
|
done
|
|
echo $flags_to_ret
|
|
}
|
|
|
|
usage()
|
|
{
|
|
cat <<EOF
|
|
Usage: wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--inplace]
|
|
[--toolkit=TOOLKIT] [--unicode[=yes|no]] [--debug[=yes|no]]
|
|
[--universal[=yes|no]] [--host=HOST]
|
|
[--version[=VERSION]] [--version-full] [--release]
|
|
[--list] [--basename] [--static] [--libs] [--gl-libs]
|
|
[--cppflags] [--cflags] [--cxxflags] [--ldflags] [--rezflags]
|
|
[--cc] [--cxx] [--ld] [LIBRARIES]
|
|
|
|
wx-config returns configuration information about the installed
|
|
version of wxWidgets. It may be used to query its version and
|
|
installation directories and also retrieve the C and C++ compilers
|
|
and linker which were used for its building and the corresponding
|
|
flags.
|
|
|
|
Ordinarily it should be installed to the appropriate system location
|
|
along with the headers and library files, but it is also possible to
|
|
use it to enable builds with an uninstalled wxWidgets version for
|
|
package building and bleeding edge developers. To do so, use it like
|
|
this:
|
|
|
|
\${wx_builddir}/wx-config --inplace
|
|
|
|
Note that any other options supplied must come *after* --inplace
|
|
for it to take effect.
|
|
|
|
--static must come before --cppflags, --cflags, --cxxflags,
|
|
--libs and --gl-libs and --libs must come before the other ones.
|
|
|
|
wx-config can take optional argument that contains comma- or space-separated
|
|
list of wxWidgets libraries to compile and link against. This list can
|
|
include both core and contrib libraries. Special value "std" stands for all
|
|
libraries linked in by default. Examples: "wx-config --libs core,base"
|
|
or "wx-config --cxxflags core,base".
|
|
|
|
--gl-libs option is deprecated, use "--libs gl" instead.
|
|
|
|
If there are several different builds of wxWidgets installed in same prefix,
|
|
you can use --host, --toolkit, --unicode, --debug, --universal and --version
|
|
options to select one of them. Use --list option to show all available builds
|
|
that match given criteria.
|
|
|
|
EOF
|
|
|
|
exit $1
|
|
}
|
|
|
|
cppflags()
|
|
{
|
|
includes="-I${libdir}/wx/include/${TOOLCHAIN_NAME}"
|
|
|
|
# in inplace case we need to also add path to contrib headers -- do it
|
|
# unconditionally as they might be used and we have no way of knowing if
|
|
# they really are
|
|
if test $inplace_flag = yes ; then
|
|
includes="$includes -I${prefix}/include -I${prefix}/contrib/include"
|
|
else
|
|
includes="$includes -I${includedir}/wx-${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}"
|
|
fi
|
|
|
|
flags="$includes ${WXDEBUG_DEFINE} ${TOOLCHAIN_DEFS}"
|
|
if test $static_flag != yes ; then
|
|
flags="$flags ${TOOLCHAIN_DLL_DEFS}"
|
|
fi
|
|
|
|
if test $nogui_flag = "yes" ; then
|
|
flags="$flags -DwxUSE_GUI=0"
|
|
fi
|
|
|
|
echo "$flags ${WXCONFIG_INCLUDE} ${WX_LARGEFILE_FLAGS} ${GCC_PRAGMA_FLAGS}"
|
|
}
|
|
|
|
if test $# -eq 0; then
|
|
usage 1 1>&2
|
|
fi
|
|
|
|
|
|
# handle libraries list:
|
|
|
|
libs_list=""
|
|
|
|
for arg in $*; do
|
|
case "$arg" in
|
|
-*)
|
|
;;
|
|
*)
|
|
libs_list="$libs_list `echo "$arg" | tr ',' ' '`"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if test "x$libs_list" = "x" ; then
|
|
if test "$is_monolithic" = "0" ; then
|
|
# link against all libs if none given explicitly:
|
|
libs_list="$CORE_GUI_LIBS $CORE_BASE_LIBS"
|
|
fi
|
|
else
|
|
# always add wxBase, any wxApp needs it:
|
|
libs_list="$libs_list base"
|
|
fi
|
|
|
|
# determine if at least one gui lib was used:
|
|
nogui_flag="yes"
|
|
for i in $libs_list; do
|
|
case $i in
|
|
base|net)
|
|
;;
|
|
*)
|
|
nogui_flag="no"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
|
|
# handle options:
|
|
|
|
while test $# -gt 0; do
|
|
case "$1" in
|
|
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
|
|
*) optarg= ;;
|
|
esac
|
|
|
|
case $1 in
|
|
--inplace)
|
|
inplace_flag=yes
|
|
;;
|
|
--prefix=*)
|
|
prefix=$optarg
|
|
if test $exec_prefix_set = no ; then
|
|
exec_prefix=$optarg
|
|
fi
|
|
update_prefixes
|
|
;;
|
|
--prefix)
|
|
echo $prefix
|
|
;;
|
|
--exec-prefix=*)
|
|
exec_prefix=$optarg
|
|
exec_prefix_set=yes
|
|
update_prefixes
|
|
;;
|
|
--exec-prefix)
|
|
echo $exec_prefix
|
|
;;
|
|
--version)
|
|
echo ${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}.${WX_RELEASE_NUMBER}
|
|
;;
|
|
--version-full)
|
|
echo ${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}.${WX_RELEASE_NUMBER}.${WX_SUBRELEASE_NUMBER}
|
|
;;
|
|
--release)
|
|
echo $release
|
|
;;
|
|
--basename)
|
|
echo $basename_gui
|
|
;;
|
|
--static)
|
|
static_flag=yes
|
|
;;
|
|
--cppflags)
|
|
cppflags
|
|
;;
|
|
--cflags)
|
|
echo `cppflags` ${CODE_GEN_FLAGS}
|
|
;;
|
|
--cxxflags)
|
|
echo `cppflags` ${CODE_GEN_FLAGS} ${CODE_GEN_FLAGS_CXX}
|
|
;;
|
|
--ldflags)
|
|
echo ${LDFLAGS_EXE}
|
|
;;
|
|
--rezflags)
|
|
echo `eval echo ${MACRESWXCONFIG}`
|
|
;;
|
|
|
|
--libs)
|
|
# include install directory only if it is not default:
|
|
if test "${libdir}" != "/usr/lib" \
|
|
-a \( "${cross_compiling}" != "yes" \
|
|
-o "${libdir}" != "/usr/${target}/lib" \) ;
|
|
then
|
|
libs="-L${libdir}"
|
|
fi
|
|
|
|
# it's simpler to avoid handling "base" itself at all as we add it in the
|
|
# end to the list of libraries anyhow
|
|
# in monolithic build, link against the main library:
|
|
if test "$is_monolithic" = "1" ; then
|
|
# filter out core libs, leave only contrib in libs_list:
|
|
newlist=
|
|
for i in $libs_list ; do
|
|
if isinlist $i $CORE_GUI_LIBS $CORE_BASE_LIBS; then
|
|
libs_list="" # do nothing
|
|
else
|
|
newlist="$newlist $i"
|
|
fi
|
|
done
|
|
libs_list="$newlist"
|
|
|
|
# output link flags:
|
|
contrib_libs=`output_libs $libs_list`
|
|
if test $static_flag = yes ; then
|
|
echo "$libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${libdir}/${WXCONFIG_LIBS_STATIC} ${EXTRALIBS_GUI} ${LIBS} ${DMALLOC_LIBS}"
|
|
else
|
|
echo $libs ${LDFLAGS} ${WXCONFIG_LDFLAGS_GUI} ${WXCONFIG_RPATH} $contrib_libs ${WXCONFIG_LIBS} ${DMALLOC_LIBS}
|
|
fi
|
|
else
|
|
# we may need to replace "std" alias with its expansion
|
|
newlist=
|
|
hadstd=0
|
|
for i in $libs_list; do
|
|
case $i in
|
|
std)
|
|
hadstd=1
|
|
;;
|
|
|
|
base)
|
|
# if we have std, we're going to add base anyhow, avoid
|
|
# having it twice in the end
|
|
if [ $hadstd = 0 ]; then
|
|
newlist="$newlist $i"
|
|
fi
|
|
;;
|
|
|
|
*)
|
|
newlist="$newlist $i"
|
|
;;
|
|
esac
|
|
done
|
|
libs_list="$newlist"
|
|
if [ $hadstd = 1 ]; then
|
|
libs_list="$libs_list $CORE_GUI_LIBS $CORE_BASE_LIBS"
|
|
fi
|
|
|
|
# in multilib mode, link against all sublibraries:
|
|
wxlibs=`output_libs $libs_list`
|
|
guildflags=`get_ldflags_gui $libs_list`
|
|
echo $libs ${LDFLAGS} ${guildflags} ${WXCONFIG_RPATH} $wxlibs ${DMALLOC_LIBS}
|
|
fi
|
|
|
|
;;
|
|
--gl-libs)
|
|
output_libs gl
|
|
;;
|
|
--cc)
|
|
echo $CC
|
|
;;
|
|
--cxx)
|
|
echo $CXX
|
|
;;
|
|
--ld)
|
|
echo $LD
|
|
;;
|
|
--help|-h)
|
|
usage 1 1>&2
|
|
;;
|
|
-*)
|
|
# unrecognized flag is error
|
|
usage 1 1>&2
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|