bc79eb4f76
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27165 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
410 lines
12 KiB
Bash
Executable File
410 lines
12 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@"
|
|
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@"
|
|
GCC_SEARCHES_USR_LOCAL_INCLUDE="@GCC_SEARCHES_USR_LOCAL_INCLUDE@"
|
|
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@"
|
|
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
|
|
}
|
|
|
|
# return the absolute path prepending builddir to it if needed
|
|
makeabs()
|
|
{
|
|
path=$1
|
|
# TODO: this only works under Unix and even there it could be
|
|
# enhanced to remove ".." and "."
|
|
if [ `echo $path | sed 's/^\(.\).*/\1/'` != "/" ]; then
|
|
if [ $path = "." ]; then
|
|
path=$builddir
|
|
else
|
|
path="$builddir/$path"
|
|
fi
|
|
fi
|
|
|
|
echo $path
|
|
}
|
|
|
|
usage()
|
|
{
|
|
cat <<EOF
|
|
Usage: wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--release]
|
|
[--basename] [--static] [--libs[=LIBS]] [--gl-libs]
|
|
[--cppflags] [--cflags] [--cxxflags] [--ldflags] [--rezflags]
|
|
[--cc] [--cxx] [--ld]
|
|
|
|
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 --prefix=\${wx_srcdir} --exec-prefix=\${wx_builddir}
|
|
|
|
Note that any other options supplied must come *after* the prefix
|
|
specification for it to take effect.
|
|
|
|
--static must come before --cppflags, --cflags, --cxxflags,
|
|
--libs and --gl-libs.
|
|
|
|
--libs can take optional argument that contains comma-separated list of
|
|
wxWidgets libraries to link against. This list can include both core
|
|
and contrib libraries. Special value "std" stands for all libraries linked
|
|
in by default.
|
|
|
|
--gl-libs option is deprecated, used --libs=gl instead.
|
|
|
|
EOF
|
|
|
|
exit $1
|
|
}
|
|
|
|
cppflags()
|
|
{
|
|
# we should never specify -I/usr/include on the compiler command line: this
|
|
# is at best useless and at worst breaks compilation on the systems where
|
|
# the system headers are non-ANSI because gcc works around this by storing
|
|
# the ANSI-fied versions of them in its private directory which is searched
|
|
# after all the directories on the cmd line.
|
|
#
|
|
# the situation is a bit more complicated with -I/usr/local/include:
|
|
# it shouldn't be specified with some gcc installations which look there
|
|
# by default anyhow and give warnings (at least 3.1 does) if it is
|
|
# specified explicitly --
|
|
# but this -I switch *is* needed for other gcc installation and for
|
|
# the other compilers.
|
|
# So I put a suitable test into configure.in and reuse the result here.
|
|
#
|
|
# note that we assume that if we use GNU cc we also use GNU c++ and vice
|
|
# versa, i.e. this won't work (either for --cflags or --cxxflags) if GNU C
|
|
# compiler and non-GNU C++ compiler are used or vice versa -- we'll fix
|
|
# this when/if anybody complains about it
|
|
if test "${includedir}" != "/usr/include" \
|
|
-a "${includedir}" != "/usr/include/c++" \
|
|
-a \( "${GCC_SEARCHES_USR_LOCAL_INCLUDE}" != "yes" \
|
|
-o "${includedir}" != "/usr/local/include" \) \
|
|
-a \( "${cross_compiling}" != "yes" \
|
|
-o "${includedir}" != "/usr/${target}/include" \) ;
|
|
then
|
|
includes=" -I${includedir}"
|
|
fi
|
|
|
|
includes="-I${libdir}/wx/include/${TOOLCHAIN_NAME}$includes"
|
|
|
|
# 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}/contrib/include"
|
|
fi
|
|
|
|
if test $static_flag = yes ; then
|
|
echo $includes ${WXDEBUG_DEFINE} ${TOOLCHAIN_DEFS} ${WXCONFIG_INCLUDE} ${WX_LARGEFILE_FLAGS}
|
|
else
|
|
echo $includes ${WXDEBUG_DEFINE} ${TOOLCHAIN_DEFS} ${TOOLCHAIN_DLL_DEFS} ${WXCONFIG_INCLUDE} ${WX_LARGEFILE_FLAGS}
|
|
fi
|
|
}
|
|
|
|
if test $# -eq 0; then
|
|
usage 1 1>&2
|
|
fi
|
|
|
|
while test $# -gt 0; do
|
|
case "$1" in
|
|
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
|
|
*) optarg= ;;
|
|
esac
|
|
|
|
case $1 in
|
|
--inplace)
|
|
prefix=`makeabs $srcdir`
|
|
exec_prefix=`makeabs $builddir`
|
|
exec_prefix_set=yes
|
|
inplace_flag=yes
|
|
update_prefixes
|
|
;;
|
|
--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}
|
|
;;
|
|
--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*)
|
|
# find if the argument was --libs=list,of,libs or --libs:
|
|
if test "x$optarg" = "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
|
|
libs_list=`echo "$optarg" | tr ',' ' '`
|
|
# always add wxBase, any wxApp needs it:
|
|
libs_list="$libs_list base"
|
|
fi
|
|
|
|
# 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 "bae" 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
|
|
;;
|
|
*)
|
|
usage 1 1>&2
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|