summaryrefslogtreecommitdiff
path: root/acinclude.m4
diff options
context:
space:
mode:
authorBenjamin Drung <bdrung@ubuntu.com>2010-04-09 12:53:33 +0200
committerBenjamin Drung <bdrung@ubuntu.com>2010-04-09 12:53:33 +0200
commit56ad9eb46da6e9b941795b17fb4fa18b6f75c4ae (patch)
tree506dd25abf80e476198b0dd973455050e6f6ddf8 /acinclude.m4
Imported Upstream version 2.3
Diffstat (limited to 'acinclude.m4')
-rw-r--r--acinclude.m4338
1 files changed, 338 insertions, 0 deletions
diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644
index 0000000..9210de1
--- /dev/null
+++ b/acinclude.m4
@@ -0,0 +1,338 @@
+
+dnl ** ADD_PKG_REQUIRES([requirement])
+dnl ** Adds a dependency to package's pkg-config file.
+AC_DEFUN([ADD_PC_REQUIRES], [
+ if test "x$PC_REQUIRES" = "x"; then
+ PC_REQUIRES="$1"
+ else
+ PC_REQUIRES="$PC_REQUIRES, $1"
+ fi
+ AC_SUBST([PC_REQUIRES])
+])
+
+
+dnl ** AUD_CHECK_MODULE([define name], [module], [version required],
+dnl ** [informational name], [additional error message])
+dnl **
+dnl ** Works like PKG_CHECK_MODULES, but provides an informative
+dnl ** error message if the package is not found. NOTICE! Unlike
+dnl ** PKG_C_M, this macro ONLY supports one module name!
+dnl **
+dnl ** AUD_CHECK_MODULE([GLIB], [gtk+-2.0], [>= 2.8.0], [Gtk+2], [See http://www.gtk.org/])
+AC_DEFUN([AUD_CHECK_MODULE], [
+ PKG_CHECK_MODULES([$1], [$2 $3], [
+ ADD_PC_REQUIRES([$2 $3])
+ ],[
+ PKG_CHECK_EXISTS([$2], [
+ cv_pkg_version=`$PKG_CONFIG --modversion "$2" 2>/dev/null`
+ AC_MSG_ERROR([[
+$4 version $cv_pkg_version was found, but $2 $3 is required.
+$5]])
+ ],[
+ AC_MSG_ERROR([[
+Cannot find $4! If you are using binary packages based system, check that you
+have the corresponding -dev/devel packages installed.
+$5]])
+ ])
+ ])
+])
+
+
+dnl ** AUD_CONDITIONAL([symbol], [variable to test][, value])
+dnl ** Simplifying wrapper for AM_CONDITIONAL.
+dnl **
+dnl ** AUD_CONDITIONAL([FOO], [foo])
+AC_DEFUN([AUD_CONDITIONAL],
+[if test "x${$2}" = m4_ifval([$3], ["x$3"],["xyes"]) ; then
+ $1="yes"
+else
+ $1="no"
+fi
+AC_SUBST([$1])dnl
+])
+
+
+dnl ** Simple wrapper for AC_ARG_ENABLE
+dnl ** AUD_ARG_ENABLE([name], [default value], [help string], [if enabled], [if disabled])
+AC_DEFUN([AUD_ARG_ENABLE], [dnl
+define([Name], [translit([$1], [./-], [___])])dnl
+define([cBasce], [ifelse([$2],[yes],[Disable],[Enable]) $3 (def: ifelse([$2],[yes],[enabled],[disabled]))])dnl
+ AC_ARG_ENABLE([$1], [AS_HELP_STRING([ifelse([$2],[yes],[--disable-$1],[--enable-$1])], cBasce)],, [enable_[]Name=$2])
+ if test "x${enable_[]Name}" = "xyes"; then
+ m4_ifvaln([$4], [$4], [:])dnl
+ m4_ifvaln([$5], [else $5])dnl
+ fi
+])
+
+
+AC_DEFUN([AUD_ARG_SIMPLE], [dnl
+define([Name], [translit([$1], [./-], [___])])dnl
+define([cBasce], [ifelse([$2],[yes],[Disable],[Enable]) $3 (def: ifelse([$2],[yes],[enabled],[disabled]))])dnl
+ AC_ARG_ENABLE([$1], [AS_HELP_STRING([ifelse([$2],[yes],[--disable-$1],[--enable-$1])], cBasce)],, [enable_[]Name=$2])
+ if test "x${enable_[]Name}" = "xyes"; then
+ AC_DEFINE([$4], [$5], [$6])
+ fi
+ AUD_CONDITIONAL([$4], [enable_$1])
+ AC_SUBST([$4])
+])
+
+
+dnl ** Wrapper for cached compilation check
+dnl ** AUD_TRY_COMPILE([message], [result variable], [includes], [body], [if ok], [if not ok])
+AC_DEFUN([AUD_TRY_COMPILE], [dnl
+ AC_CACHE_CHECK([$1], [$2],
+ [AC_TRY_COMPILE([$3], [$4], [$2="yes"], [$2="no"])])
+ if test "x${$2}" = "xyes"; then
+ m4_ifvaln([$5], [$5], [:])dnl
+ m4_ifvaln([$6], [else $6])dnl
+ fi
+])
+
+
+dnl ** Check for GNU make
+AC_DEFUN([AUD_CHECK_GNU_MAKE],[
+ AC_CACHE_CHECK([for GNU make],_cv_gnu_make_command,[
+ _cv_gnu_make_command=""
+ for a in "$MAKE" make gmake gnumake; do
+ test "x$a" = "x" && continue
+ if ( sh -c "$a --version" 2>/dev/null | grep "GNU Make" >/dev/null ) ; then
+ _cv_gnu_make_command="$a"
+ break
+ fi
+ done
+ ])
+ if test "x$_cv_gnu_make_command" != "x" ; then
+ MAKE="$_cv_gnu_make_command"
+ else
+ AC_MSG_ERROR([** GNU make not found. If it is installed, try setting MAKE environment variable. **])
+ fi
+ AC_SUBST([MAKE])dnl
+])dnl
+
+
+dnl *** Define plugin directories
+AC_DEFUN([AUD_DEFINE_PLUGIN_DIR],[dnl
+define([Name], [translit([$1], [a-z], [A-Z])])dnl
+if test "x$enable_one_plugin_dir" = "xyes"; then
+ifdef([aud_plugin_dirs_defined],[],
+[ pluginsubs="\\\"Plugins\\\""
+])dnl
+ Name[]_PLUGIN_DIR="Plugins"
+else
+ ifdef([aud_def_plugin_dirs_defined],
+ [pluginsubs="$pluginsubs,\\\"$1\\\""],
+ [pluginsubs="\\\"$1\\\""])
+ Name[]_PLUGIN_DIR="$1"
+fi
+AC_SUBST(Name[]_PLUGIN_DIR)dnl
+define([aud_def_plugin_dirs_defined],[1])dnl
+])dnl
+
+
+dnl *** Get plugin directories
+AC_DEFUN([AUD_GET_PLUGIN_DIR],[dnl
+define([Name], [translit([$1_plugin_dir], [A-Z], [a-z])])dnl
+define([BigName], [translit([$1], [a-z], [A-Z])])dnl
+ifdef([aud_get_plugin_dirs_defined],
+[pluginsubs="$pluginsubs,\\\"$1\\\""],
+[pluginsubs="\\\"$1\\\""])
+BigName[]_PLUGIN_DIR=`pkg-config audacious --variable=[]Name[]`
+AC_SUBST(BigName[]_PLUGIN_DIR)dnl
+define([aud_get_plugin_dirs_defined],[1])dnl
+])dnl
+
+
+
+dnl **
+dnl ** Common checks
+dnl **
+AC_DEFUN([AUD_COMMON_PROGS], [
+
+dnl Check for C and C++ compilers
+dnl =============================
+AUD_CHECK_GNU_MAKE
+AC_PROG_CC
+AC_PROG_CXX
+AM_PROG_AS
+AC_ISC_POSIX
+AC_C_BIGENDIAN
+
+if test "x$GCC" = "xyes"; then
+ CFLAGS="$CFLAGS -Wall -pipe"
+ CXXFLAGS="$CXXFLAGS -pipe -Wall"
+fi
+
+dnl Checks for various programs
+dnl ===========================
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+AC_PATH_PROG([RM], [rm])
+AC_PATH_PROG([MV], [mv])
+AC_PATH_PROG([CP], [cp])
+AC_PATH_PROG([AR], [ar])
+AC_PATH_PROG([TR], [tr])
+AC_PATH_PROG([RANLIB], [ranlib])
+
+
+dnl Check for Gtk+/GLib and pals
+dnl ============================
+AUD_CHECK_MODULE([GLIB], [glib-2.0], [>= 2.12.0], [Glib2])
+AUD_CHECK_MODULE([GTHREAD], [gthread-2.0], [>= 2.12.0], [gthread-2.0])
+AUD_CHECK_MODULE([GTK], [gtk+-2.0], [>= 2.8.0], [Gtk+2])
+AUD_CHECK_MODULE([PANGO], [pango], [>= 1.8.0], [Pango])
+AUD_CHECK_MODULE([CAIRO], [cairo], [>= 1.2.4], [Cairo])
+
+
+dnl Check for libmowgli
+dnl ===================
+AUD_CHECK_MODULE([MOWGLI], [libmowgli], [>= 0.4.0], [libmowgli],
+ [http://www.atheme.org/projects/mowgli.shtml])
+
+
+dnl Check for libmcs
+dnl ================
+AUD_CHECK_MODULE([LIBMCS], [libmcs], [>= 0.7], [libmcs],
+ [http://www.atheme.org/projects/mcs.shtml])
+
+
+dnl SSE2 support
+dnl ============
+AUD_ARG_ENABLE([sse2], [yes], [SSE2 support],
+[
+ AC_MSG_CHECKING([SSE2 support])
+ aud_my_save_CFLAGS="$CFLAGS"
+ CFLAGS="-msse2"
+ AC_TRY_RUN([
+#include <emmintrin.h>
+int main()
+{
+ _mm_setzero_pd();
+ asm volatile("xorpd %xmm0,%xmm0\n\t");
+ return 0;
+}
+ ],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([HAVE_SSE2], 1, [Define to 1 if your system has SSE2 support])
+ SIMD_CFLAGS="-msse2"
+ ],[
+ AC_MSG_RESULT([no])
+ enable_sse2="no"
+ ])
+ AC_SUBST([SIMD_CFLAGS])
+ CFLAGS="$aud_my_save_CFLAGS"
+])
+
+dnl AltiVec support
+dnl ===============
+AUD_ARG_ENABLE([altivec], [yes], [AltiVec support],
+[
+ AC_CHECK_HEADERS([altivec.h],
+ [
+ AC_DEFINE([HAVE_ALTIVEC], 1, [Define to 1 if your system has AltiVec.])
+ AC_DEFINE([HAVE_ALTIVEC_H], 1, [Define to 1 if your system has an altivec.h file.])
+ AC_DEFINE([ARCH_POWERPC], 1, [Define to 1 if your system is a PowerPC.])
+ case $target in
+ *-apple-*)
+ SIMD_CFLAGS="-mpim-altivec"
+ ;;
+ *)
+ SIMD_CFLAGS="-maltivec"
+ ;;
+ esac
+ AC_SUBST([SIMD_CFLAGS])
+ ],[
+ enable_altivec="no"
+ ])
+])
+
+])
+
+
+dnl **
+dnl ** Plugin helper macros
+dnl **
+
+dnl ** Unconditionally add a plugin to "build these" list
+AC_DEFUN([AUD_PLUGIN_ADD], [dnl
+define([Name], [translit([$1], [A-Z./-], [a-z___])])dnl
+have_[]Name="yes"; res_short_[]Name="$1"
+res_desc_[]Name="$3"; ifdef([aud_def_plugin_$2], [$2[]_PLUGINS="${$2[]_PLUGINS} $1"], [$2[]_PLUGINS="$1"])dnl
+define([aud_def_plugin_$2],[1])dnl
+])
+
+
+dnl ** Generic template for macros below
+AC_DEFUN([AUD_PLUGIN_CHK], [dnl
+define([cBasce], [ifelse([$3],[yes],[Disable],[Enable]) $5 (def: ifelse([$3],[yes],[enabled],[disabled]))])dnl
+AC_ARG_ENABLE([$1], [AS_HELP_STRING([ifelse([$3],[yes],[--disable-$1],[--enable-$1])], cBasce)],, [enable_$2="$3"])dnl
+ have_$2="no"
+ if test "x${enable_$2}" = "xyes"; then
+ m4_ifvaln([$6], [$6], [:])
+ if test "x${have_$2}" = "xyes"; then
+ m4_ifvaln([$7], [$7], [:])dnl
+ else
+ res_msg_$2="(not found)"
+ m4_ifvaln([$8], [$8], [:])dnl
+ fi
+ else
+ res_msg_$2="(disabled)"
+ m4_ifvaln([$9], [$9], [:])dnl
+ fi
+])
+
+
+dnl ** Add a plugin based on --enable/--disable options
+AC_DEFUN([AUD_PLUGIN_CHECK_SIMPLE], [dnl
+define([cBasce], [ifelse([$2],[yes],[Disable],[Enable]) $6 (def: ifelse([$2],[yes],[enabled],[disabled]))])dnl
+AC_ARG_ENABLE([$1], [AS_HELP_STRING([ifelse([$2],[yes],[--disable-$1],[--enable-$1])], cBasce)],, [enable_$2="$3"])dnl
+ have_$2="no"
+ if test "x${enable_$2}" = "xyes"; then
+ m4_ifvaln([$6], [$6], [:])
+ else
+ res_msg_$2="(disabled)"
+ m4_ifvaln([$7], [$7], [:])dnl
+ fi
+])
+
+
+dnl ** Check and enable a plugin with a pkg-config check
+AC_DEFUN([AUD_PLUGIN_CHECK_PKG], [dnl
+define([Name], [translit([$1], [A-Z./-], [a-z___])])dnl
+define([BigN], [translit([$1], [a-z./-], [A-Z___])])dnl
+ AUD_PLUGIN_CHK([$1], Name, [$2], [$4], [$6], [dnl
+ PKG_CHECK_MODULES([]BigN, [$7], [have_[]Name[]="yes"], [have_[]Name[]="no"])
+ ], [
+ AUD_PLUGIN_ADD([$5], [$3])
+ m4_ifvaln([$8], [$8])
+ ], [$9], [$10])
+])
+
+
+dnl ** Check and enable a plugin with a header files check
+AC_DEFUN([AUD_PLUGIN_CHECK_HEADERS], [
+define([Name], [translit([$1], [A-Z./-], [a-z___])])dnl
+ AUD_PLUGIN_CHK([$1], Name, [$2], [$4], [$6], [
+ AC_CHECK_HEADERS([$7], [have_[]Name[]="yes"], [have_[]Name[]="no"])
+ ], [
+ AUD_PLUGIN_ADD([$5], [$3])
+ m4_ifvaln([$8], [$8])
+ ], [$9], [$10])
+])
+
+
+dnl ** Check and enable a plugin with a complex check
+AC_DEFUN([AUD_PLUGIN_CHECK_COMPLEX], [
+# CHECK_COMPLEX #1 : $1
+define([Name], [translit([$1], [A-Z./-], [a-z___])])dnl
+ AUD_PLUGIN_CHK([$1], Name, [$2], [$4], [$6], [
+# CHECK_COMPLEX #2 BEGIN
+ $7
+# CHECK_COMPLEX #2 END
+ ], [
+# CHECK_COMPLEX #3 BEGIN
+ AUD_PLUGIN_ADD([$5], [$3])
+ m4_ifvaln([$8], [$8])
+# CHECK_COMPLEX #3 END
+ ], [$9], [$10])
+# CHECK_COMPLEX #4 END
+])