diff options
Diffstat (limited to 'm4/xdt-depends.m4')
-rw-r--r-- | m4/xdt-depends.m4 | 336 |
1 files changed, 336 insertions, 0 deletions
diff --git a/m4/xdt-depends.m4 b/m4/xdt-depends.m4 new file mode 100644 index 0000000..c6423a1 --- /dev/null +++ b/m4/xdt-depends.m4 @@ -0,0 +1,336 @@ +dnl Copyright (c) 2002-2015 +dnl The Xfce development team. All rights reserved. +dnl +dnl Written for Xfce by Benedikt Meurer <benny@xfce.org>. +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License along +dnl with this program; if not, write to the Free Software Foundation, Inc., +dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +dnl +dnl xdt-depends +dnl ----------- +dnl Contains M4 macros to check for software dependencies. +dnl Partly based on prior work of the XDG contributors. +dnl + + + +dnl We need recent a autoconf version +AC_PREREQ([2.60]) + + + +dnl XDT_PROG_PKG_CONFIG() +dnl +dnl Checks for the freedesktop.org pkg-config +dnl utility and sets the PKG_CONFIG environment +dnl variable to the full path if found. +dnl +AC_DEFUN([XDT_PROG_PKG_CONFIG], +[ + # minimum supported version of pkg-config + xdt_cv_PKG_CONFIG_MIN_VERSION=0.9.0 + + m4_ifdef([PKG_PROG_PKG_CONFIG], + [ + PKG_PROG_PKG_CONFIG([$xdt_cv_PKG_CONFIG_MIN_VERSION]) + + if test x"$PKG_CONFIG" = x""; then + echo + echo "*** Your version of pkg-config is too old. You need atleast" + echo "*** pkg-config $xdt_cv_PKG_CONFIG_MIN_VERSION or newer. You can download pkg-config" + echo "*** from the freedesktop.org software repository at" + echo "***" + echo "*** http://www.freedesktop.org/software/pkgconfig" + echo "***" + exit 1; + fi + ], + [ + echo + echo "*** The pkg-config utility could not be found on your system." + echo "*** Make sure it is in your path, or set the PKG_CONFIG" + echo "*** environment variable to the full path to pkg-config." + echo "*** You can download pkg-config from the freedesktop.org" + echo "*** software repository at" + echo "***" + echo "*** http://www.freedesktop.org/software/pkgconfig" + echo "***" + exit 1 + ]) +]) + + + +dnl XDT_CHECK_PACKAGE(varname, package, version, [action-if], [action-if-not]) +dnl +dnl Checks if "package" >= "version" is installed on the +dnl target system, using the pkg-config utility. If the +dnl dependency is met, "varname"_CFLAGS, "varname"_LIBS, +dnl "varname"_VERSION and "varname"_REQUIRED_VERSION +dnl will be set and marked for substition. +dnl +dnl "varname"_REQUIRED_VERSION will be set to the value of +dnl "version". This is mostly useful to automatically +dnl place the correct version information into the RPM +dnl .spec file. +dnl +dnl In addition, if the dependency is met, "action-if" will +dnl be executed if given. +dnl +dnl If the package check fails, "action-if-not" will be +dnl executed. If this parameter isn't specified, a diagnostic +dnl message will be printed and the configure script will +dnl be terminated with exit code 1. +dnl +AC_DEFUN([XDT_CHECK_PACKAGE], +[ + XDT_PROG_PKG_CONFIG() + + AC_MSG_CHECKING([for $2 >= $3]) + if $PKG_CONFIG "--atleast-version=$3" "$2" >/dev/null 2>&1; then + $1_VERSION=`$PKG_CONFIG --modversion "$2"` + AC_MSG_RESULT([$$1_VERSION]) + + AC_MSG_CHECKING([$1_CFLAGS]) + $1_CFLAGS=`$PKG_CONFIG --cflags "$2"` + AC_MSG_RESULT([$$1_CFLAGS]) + + AC_MSG_CHECKING([$1_LIBS]) + $1_LIBS=`$PKG_CONFIG --libs "$2"` + AC_MSG_RESULT([$$1_LIBS]) + + $1_REQUIRED_VERSION=$3 + + AC_SUBST([$1_VERSION]) + AC_SUBST([$1_CFLAGS]) + AC_SUBST([$1_LIBS]) + AC_SUBST([$1_REQUIRED_VERSION]) + + ifelse([$4], , , [$4]) + elif $PKG_CONFIG --exists "$2" >/dev/null 2>&1; then + xdt_cv_version=`$PKG_CONFIG --modversion "$2"` + AC_MSG_RESULT([found, but $xdt_cv_version]) + + ifelse([$5], , + [ + echo "*** The required package $2 was found on your system," + echo "*** but the installed version ($xdt_cv_version) is too old." + echo "*** Please upgrade $2 to atleast version $3, or adjust" + echo "*** the PKG_CONFIG_PATH environment variable if you installed" + echo "*** the new version of the package in a nonstandard prefix so" + echo "*** pkg-config is able to find it." + exit 1 + ], [$5]) + else + AC_MSG_RESULT([not found]) + + ifelse([$5], , + [ + echo "*** The required package $2 was not found on your system." + echo "*** Please install $2 (atleast version $3) or adjust" + echo "*** the PKG_CONFIG_PATH environment variable if you" + echo "*** installed the package in a nonstandard prefix so that" + echo "*** pkg-config is able to find it." + exit 1 + ], [$5]) + fi +]) + + + +dnl XDT_CHECK_OPTIONAL_PACKAGE(varname, package, version, optionname, helpstring, [default]) +dnl +dnl Checks for an optional dependency on "package" >= "version". "default" +dnl can be "yes" or "no" (defaults to "yes" if not specified) and controls +dnl whether configure should check this dependency by default, or only if +dnl the user explicitly enables it using a command line switch. +dnl +dnl This macro automatically adds a commandline switch based on the "optionname" +dnl parameter (--enable-optionname/--disable-optionname), which allows the +dnl user to explicitly control whether this optional dependency should be +dnl enabled or not. The "helpstring" parameter gives a brief(!) description +dnl about this dependency. +dnl +dnl If the user chose to enable this dependency and the required package +dnl was found, this macro defines the variable "varname"_FOUND and sets it +dnl to the string "yes", in addition to the 4 variables set by XDT_CHECK_PACKAGE. +dnl But "varname"_FOUND will not be marked for substition. Furthermore, +dnl a CPP define HAVE_"varname" will be placed in config.h (or added to +dnl the cc command line, depending on your configure.ac) and set to +dnl 1. +dnl +AC_DEFUN([XDT_CHECK_OPTIONAL_PACKAGE], +[ + AC_REQUIRE([XDT_PROG_PKG_CONFIG]) + + AC_ARG_ENABLE([$4], +AC_HELP_STRING([--enable-$4], [Enable checking for $5 (default=m4_default([$6], [yes]))]) +AC_HELP_STRING([--disable-$4], [Disable checking for $5]), + [xdt_cv_$1_check=$enableval], [xdt_cv_$1_check=m4_default([$6], [yes])]) + + if test x"$xdt_cv_$1_check" = x"yes"; then + if $PKG_CONFIG --exists "$2 >= $3" >/dev/null 2>&1; then + XDT_CHECK_PACKAGE([$1], [$2], [$3], + [ + AC_DEFINE([HAVE_$1], [1], [Define if $2 >= $3 present]) + $1_FOUND="yes" + ]) + else + AC_MSG_CHECKING([for optional package $2 >= $3]) + AC_MSG_RESULT([not found]) + fi + else + AC_MSG_CHECKING([for optional package $2]) + AC_MSG_RESULT([disabled]) + fi + + AM_CONDITIONAL([HAVE_$1], [test x"$$1_FOUND" = x"yes"]) +]) + + + +dnl XDT_CHECK_LIBX11() +dnl +dnl Executes various checks for X11. Sets LIBX11_CFLAGS, LIBX11_LDFLAGS +dnl and LIBX11_LIBS (and marks them for substitution). In addition +dnl HAVE_LIBX11 is set to 1 in config.h, if the X window system and +dnl the development files are detected on the target system. +dnl +AC_DEFUN([XDT_CHECK_LIBX11], +[ + AC_REQUIRE([AC_PATH_XTRA]) + + LIBX11_CFLAGS= LIBX11_LDFLAGS= LIBX11_LIBS= + if test x"$no_x" != x"yes"; then + AC_CHECK_LIB([X11], [main], + [ + AC_DEFINE([HAVE_LIBX11], [1], [Define if libX11 is available]) + LIBX11_CFLAGS="$X_CFLAGS" + for option in $X_PRE_LIBS $X_EXTRA_LIBS $X_LIBS; do + case "$option" in + -L*) + path=`echo $option | sed 's/^-L//'` + if test x"$path" != x""; then + LIBX11_LDFLAGS="$LIBX11_LDFLAGS -L$path" + fi + ;; + *) + LIBX11_LIBS="$LIBX11_LIBS $option" + ;; + esac + done + if ! echo $LIBX11_LIBS | grep -- '-lX11' >/dev/null; then + LIBX11_LIBS="$LIBX11_LIBS -lX11" + fi + ], [], [$X_CFLAGS $X_PRE_LIBS $X_EXTRA_LIBS $X_LIBS]) + fi + AC_SUBST([LIBX11_CFLAGS]) + AC_SUBST([LIBX11_LDFLAGS]) + AC_SUBST([LIBX11_LIBS]) +]) + + + +dnl XDT_CHECK_LIBX11_REQUIRE() +dnl +dnl Similar to XDT_CHECK_LIBX11(), but terminates with an error if +dnl the X window system and development files aren't detected on the +dnl target system. +dnl +AC_DEFUN([XDT_CHECK_LIBX11_REQUIRE], +[ + AC_REQUIRE([XDT_CHECK_LIBX11]) + + if test x"$no_x" = x"yes"; then + AC_MSG_ERROR([X Window system libraries and header files are required]) + fi +]) + + + +dnl XDT_CHECK_LIBSM() +dnl +dnl Checks whether the session management library is present on the +dnl target system, and sets LIBSM_CFLAGS, LIBSM_LDFLAGS and LIBSM_LIBS +dnl properly. In addition, HAVE_LIBSM will be set to 1 in config.h +dnl if libSM is detected. +dnl +AC_DEFUN([XDT_CHECK_LIBSM], +[ + AC_REQUIRE([XDT_CHECK_LIBX11]) + + LIBSM_CFLAGS= LIBSM_LDFLAGS= LIBSM_LIBS= + if test x"$no_x" != x"yes"; then + AC_CHECK_LIB([SM], [SmcSaveYourselfDone], + [ + AC_DEFINE([HAVE_LIBSM], [1], [Define if libSM is available]) + LIBSM_CFLAGS="$LIBX11_CFLAGS" + LIBSM_LDFLAGS="$LIBX11_LDFLAGS" + LIBSM_LIBS="$LIBX11_LIBS" + if ! echo $LIBSM_LIBS | grep -- '-lSM' >/dev/null; then + LIBSM_LIBS="$LIBSM_LIBS -lSM -lICE" + fi + ], [], [$LIBX11_CFLAGS $LIBX11_LDFLAGS $LIBX11_LIBS -lICE]) + fi + AC_SUBST([LIBSM_CFLAGS]) + AC_SUBST([LIBSM_LDFLAGS]) + AC_SUBST([LIBSM_LIBS]) +]) + + + +dnl XDT_CHECK_LIBXPM() +dnl +dnl Checks if the Xpm library is present on the target system, and +dnl sets LIBXPM_CFLAGS, LIBXPM_LDFLAGS and LIBXPM_LIBS. In addition, +dnl HAVE_LIBXPM will be set to 1 in config.h if libXpm is detected. +dnl +AC_DEFUN([XDT_CHECK_LIBXPM], +[ + AC_REQUIRE([XDT_CHECK_LIBX11]) + + LIBXPM_CFLAGS= LIBXPM_LDFLAGS= LIBXPM_LIBS= + if test "$no_x" != "yes"; then + AC_CHECK_LIB([Xpm], [main], + [ + AC_DEFINE([HAVE_LIBXPM], [1], [Define if libXpm is available]) + LIBXPM_CFLAGS="$LIBX11_CFLAGS" + LIBXPM_LDFLAGS="$LIBX11_LDFLAGS" + LIBXPM_LIBS="$LIBX11_LIBS" + if ! echo $LIBXPM_LIBS | grep -- '-lXpm' >/dev/null; then + LIBXPM_LIBS="$LIBXPM_LIBS -lXpm" + fi + ], [], [$LIBX11_CFLAGS $LIBX11_LDFLAGS $LIBX11_LIBS -lXpm]) + fi + AC_SUBST([LIBXPM_CFLAGS]) + AC_SUBST([LIBXPM_LDFLAGS]) + AC_SUBST([LIBXPM_LIBS]) +]) + + + +dnl XDT_CHECK_LIBXPM_REQUIRE() +dnl +dnl Similar to XDT_CHECK_LIBXPM(), but fails if the Xpm library isn't +dnl present on the target system. +dnl +AC_DEFUN([XDT_CHECK_LIBXPM_REQUIRE], +[ + AC_REQUIRE([XDT_CHECK_LIBX11_REQUIRE]) + AC_REQUIRE([XDT_CHECK_LIBXPM]) + + if test x"$LIBXPM_LIBS" = x""; then + AC_MSG_ERROR([The Xpm library was not found on your system]) + fi +]) |