]> git.saurik.com Git - wxWidgets.git/blobdiff - wx-config.in
use stock buttons in generic dialogs
[wxWidgets.git] / wx-config.in
index 2a4f02956f5e54808d63fb98ba5fbf75470881b6..65b263f8422f094a23ecc804ce5f699401500bee 100755 (executable)
 #!/bin/sh
 
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-exec_prefix_set=no
+# -------------------------------------------------------------------------
+#                              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@"
-cross_compiling=@cross_compiling@
-target=@host_alias@
-static_flag=@STATIC_FLAG@
-inplace_flag=no
+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]] [--version] [--static]
-                 [--libs] [--gl-libs]
+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]
-                 [--inplace]
+                 [--cc] [--cxx] [--ld] [LIBRARIES]
 
 wx-config returns configuration information about the installed
-version of wxWindows. It may be used to query its version and
+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.
 
-The --inplace flag allows wx-config to be used from the wxWindows
-build directory and output flags to use the uninstalled version of
-the headers and libs in the build directory.  (Currently configure
-must be invoked via a full path name for this to work correctly.)
+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
@@ -38,48 +195,77 @@ EOF
 
 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}"
 
+    # 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="-I$inplace_builddir/lib/wx/include/@TOOLCHAIN_NAME@ -I$inplace_include"
+        includes="$includes -I${prefix}/include -I${prefix}/contrib/include"
     else
-       includes="-I@libdir@/wx/include/@TOOLCHAIN_NAME@$includes"
+        includes="$includes -I${includedir}/wx-${WX_MAJOR_VERSION_NUMBER}.${WX_MINOR_VERSION_NUMBER}"
     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@
+    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]*=//'` ;;
@@ -87,11 +273,15 @@ while test $# -gt 0; do
   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
@@ -99,12 +289,22 @@ while test $# -gt 0; do
     --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@
+      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
@@ -113,46 +313,86 @@ while test $# -gt 0; do
       cppflags
       ;;
     --cflags)
-      echo `cppflags` @CODE_GEN_FLAGS@
+      echo `cppflags` ${CODE_GEN_FLAGS}
       ;;
     --cxxflags)
-      echo `cppflags` @CODE_GEN_FLAGS@ @CODE_GEN_FLAGS_CXX@
+      echo `cppflags` ${CODE_GEN_FLAGS} ${CODE_GEN_FLAGS_CXX}
       ;;
     --ldflags)
-      echo @LDFLAGS_EXE@
+      echo ${LDFLAGS_EXE}
       ;;
     --rezflags)
-      echo @LIBWXMACRESWXCONFIG@
+      echo `eval echo ${MACRESWXCONFIG}`
       ;;
+
     --libs)
-      if test "@libdir@" != "/usr/lib" \
+      # include install directory only if it is not default:
+      if test "${libdir}" != "/usr/lib" \
               -a \( "${cross_compiling}" != "yes" \
-                    -o "@libdir@" != "/usr/${target}/lib" \) ;
+                    -o "${libdir}" != "/usr/${target}/lib" \) ;
       then
-          libs="-L@libdir@"
+          libs="-L${libdir}"
       fi
 
-      if test $inplace_flag = yes ; then
-         libs="-L$inplace_builddir/lib"
-      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"
 
-      if test $static_flag = yes ; then
-          echo "$libs @LDFLAGS@ @WXCONFIG_RPATH@ @libdir@/@WXCONFIG_LIBS_STATIC@ @LIBS@ @DMALLOC_LIBS@"
+          # 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
-          echo $libs @LDFLAGS@ @WXCONFIG_RPATH@ @WXCONFIG_LIBS@ @DMALLOC_LIBS@
+          # 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)
-      if test $static_flag = yes -a "x" != "x@WXCONFIG_LIBS_STATIC_GL@" ; then
-          gllibs="@libdir@/@WXCONFIG_LIBS_STATIC_GL@"
-      else
-          gllibs="@WXCONFIG_LIBS_GL@"
-      fi
-      if test $inplace_flag = yes ; then
-         libdir="-L$inplace_builddir/lib"
-      fi
-      echo @LDFLAGS_GL@ $libdir $gllibs
+      output_libs gl
       ;;
     --cc)
       echo $CC
@@ -163,12 +403,11 @@ while test $# -gt 0; do
     --ld)
       echo $LD
       ;;
-    --inplace)
-      inplace_flag=yes
-      inplace_builddir=`dirname $0`
-      inplace_include=@top_srcdir@/include
+    --help|-h)
+      usage 1 1>&2
       ;;
-    *)
+    -*)
+      # unrecognized flag is error
       usage 1 1>&2
       ;;
   esac