X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8710cf5cabdb94c688f2d8d01ee83ac9b715125d..63fa42b3bedaf167004c95cc46339849ee9d7424:/wx-config.in diff --git a/wx-config.in b/wx-config.in index a3ad5a6e1f..c5f47c0ad8 100755 --- a/wx-config.in +++ b/wx-config.in @@ -1,15 +1,238 @@ #!/bin/sh -prefix=@prefix@ -exec_prefix=@exec_prefix@ +# ------------------------------------------------------------------------- +# 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@" + + +# 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@" +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_odbc="@EXTRALIBS_ODBC@" + +ldflags_gl="@LDFLAGS_GL@" +ldlibs_gl="@OPENGL_LIBS@" + + + +# ------------------------------------------------------------------------- +# Script code: +# ------------------------------------------------------------------------- + exec_prefix_set=no -usage="\ -Usage: wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--libs] [--cflags]" +# 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 wxWindows. 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 wxWindows 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 --libs and --gl-libs. + +--libs can take optional argument that contains comma-separated list of +wxWindows libraries to link against. This list can include both core +and contrib libraries. + +--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: again, + # it shouldn't be specified with gcc which looks there by default anyhow + # and gives warnings (at least 3.1 does) if it is specified explicitly -- + # but this -I switch *is* needed for the other compilers + # + # 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}" != "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" + + 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 - echo "${usage}" 1>&2 - exit 1 + usage 1 1>&2 fi while test $# -gt 0; do @@ -19,11 +242,18 @@ while test $# -gt 0; do esac case $1 in + --inplace) + prefix=`makeabs $srcdir` + exec_prefix=`makeabs $builddir` + exec_prefix_set=yes + update_prefixes + ;; --prefix=*) prefix=$optarg if test $exec_prefix_set = no ; then exec_prefix=$optarg fi + update_prefixes ;; --prefix) echo $prefix @@ -31,27 +261,102 @@ while test $# -gt 0; do --exec-prefix=*) exec_prefix=$optarg exec_prefix_set=yes + update_prefixes ;; --exec-prefix) echo $exec_prefix ;; --version) - echo 2.01 + 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) - if test @includedir@ != /usr/include ; then - includes=-I@includedir@ + echo `cppflags` ${CODE_GEN_FLAGS} + ;; + --cxxflags) + echo `cppflags` ${CODE_GEN_FLAGS} ${CODE_GEN_FLAGS_CXX} + ;; + --ldflags) + echo ${LDFLAGS_EXE} + ;; + --rezflags) + 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 + + # 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_BASE_LIBS $CORE_GUI_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 + # 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 - includes="$includes -I@libdir@/wx/include" - echo $includes -D@TOOLKIT_DEF@ @GUI_TK_INCLUDE@ @WXDEBUG_DEFINE@ ;; - --libs) - echo -L@libdir@ -lwx_gtk2 @DL_LIBRARY@ @GUI_TK_LIBRARY@ @THREADS_LINK@ @EXTRA_LINK@ + --gl-libs) + output_libs gl + ;; + --cc) + echo $CC + ;; + --cxx) + echo $CXX + ;; + --ld) + echo $LD ;; *) - echo "${usage}" 1>&2 - exit 1 + usage 1 1>&2 ;; esac shift