wxWidgets/wx-config.in

417 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:
if test "$is_monolithic" = "0" ; then
nogui_flag="yes"
for i in $libs_list; do
case $i in
base|net)
;;
*)
nogui_flag="no"
;;
esac
done
else
nogui_flag="no"
fi
# 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