1dnl
2dnl Check for minimum version of libtool
3dnl AC_PREREQ_LIBTOOL([MINIMUM VERSION],[ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]])
4AC_DEFUN([AC_PREREQ_LIBTOOL],
5  [
6    lt_min_full=ifelse([$1], ,1.3.5,$1)
7    lt_min=`echo $lt_min_full | sed -e 's/\.//g'`
8    AC_MSG_CHECKING(for libtool >= $lt_min_full)
9    lpwd="`pwd`"
10    lt_pathname="`echo $lpwd/ltmain.sh | sed -e 's/\=build\///g'`"
11    lt_version="`grep '^VERSION' $lt_pathname | sed -e 's/\.//g;s/VERSION\=//g;s/[a-zA-Z]//g;s/-//g'`"
12
13    if test $lt_version -lt 100; then
14      lt_version=`expr $lt_version \* 10`
15    fi
16
17    if test $lt_version -lt $lt_min; then
18      AC_MSG_RESULT(no)
19      ifelse([$3], , :, [$3])
20    fi
21    AC_MSG_RESULT(yes)
22    ifelse([$2], , :, [$2])
23  ])
24
25dnl
26AC_DEFUN([AC_CHECK_LIRC],
27  [AC_ARG_ENABLE(lirc,
28     [AS_HELP_STRING([--disable-lirc], [turn off LIRC support])],
29     [given=Y], [given=N; enable_lirc=yes])
30
31  found_lirc=no
32  if test x"$enable_lirc" = xyes; then
33    have_lirc=yes
34    PKG_CHECK_MODULES(LIRC, liblircclient0, [found_lirc=yes], [:])
35    if test "$found_lirc" = yes; then
36      LIRC_INCLUDE="$LIRC_CFLAGS"
37    else
38     AC_REQUIRE_CPP
39     AC_CHECK_LIB(lirc_client,lirc_init,
40           [AC_CHECK_HEADER(lirc/lirc_client.h, true, have_lirc=no)], have_lirc=no)
41     if test "$have_lirc" = "yes"; then
42        saved_CFLAGS=$CFLAGS
43        saved_LIBS=$LIBS
44        if test x"$LIRC_PREFIX" != "x"; then
45	   LIRC_INCLUDE="-I$LIRC_PREFIX/include"
46        fi
47        AC_MSG_CHECKING([for liblircclient])
48        for type in "$shrext" .a; do
49          for lib in lib32 lib lib64; do
50            for llirc in "$LIRC_PREFIX/$lib" /$lib /usr/$lib /usr/local/$lib; do
51              CFLAGS="$saved_CFLAGS $LIRC_INCLUDE"
52              LIBS="$saved_LIBS $llirc/liblirc_client$type"
53              AC_LINK_IFELSE(
54                [AC_LANG_PROGRAM([#include <lirc/lirc_client.h>], [lirc_init("",0)])],
55                [LIRC_LIBS="$llirc/liblirc_client$type"
56                 found_lirc=yes]
57                AC_DEFINE([HAVE_LIRC],,[Define this if you have LIRC (liblirc_client) installed]),
58              )
59              if test x"$found_lirc" = xyes; then break 3; fi
60            done
61          done
62        done
63        CFLAGS=$saved_CFLAGS
64        LIBS=$saved_LIBS
65        if test x"$found_lirc" = xyes; then
66          AC_MSG_RESULT([$LIRC_LIBS])
67        else
68          AC_MSG_RESULT([no])
69        fi
70     else
71	test $given = Y && AC_MSG_ERROR([LIRC client support requested but not available])
72	AC_MSG_RESULT([*** LIRC client support not available, LIRC support will be disabled ***])
73     fi
74    fi
75  fi
76     if test "$found_lirc" = yes; then
77	AC_DEFINE([HAVE_LIRC],,[Define this if you have LIRC (liblirc_client) installed])
78     fi
79     AM_CONDITIONAL([HAVE_LIRC], [test "$found_lirc" = yes])
80     AC_SUBST(LIRC_LIBS)
81     AC_SUBST(LIRC_INCLUDE)
82])
83
84dnl AC_C_ATTRIBUTE_ALIGNED
85dnl define ATTRIBUTE_ALIGNED_MAX to the maximum alignment if this is supported
86AC_DEFUN([AC_C_ATTRIBUTE_ALIGNED],
87    [AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
88        [ac_cv_c_attribute_aligned],
89        [ac_cv_c_attribute_aligned=0
90        for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
91            AC_TRY_COMPILE([],
92                [static char c __attribute__ ((aligned($ac_cv_c_attr_align_try))) = 0
93; return c;],
94                [ac_cv_c_attribute_aligned=$ac_cv_c_attr_align_try])
95        done])
96    if test x"$ac_cv_c_attribute_aligned" != x"0"; then
97        AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
98            [$ac_cv_c_attribute_aligned],[maximum supported data alignment])
99    fi])
100
101dnl AC_TRY_CFLAGS (CFLAGS, [ACTION-IF-WORKS], [ACTION-IF-FAILS])
102dnl check if $CC supports a given set of cflags
103AC_DEFUN([AC_TRY_CFLAGS],
104    [AC_MSG_CHECKING([if $CC supports $1 flags])
105    SAVE_CFLAGS="$CFLAGS"
106    CFLAGS="$1"
107    AC_TRY_COMPILE([],[],[ac_cv_try_cflags_ok=yes],[ac_cv_try_cflags_ok=no])
108    CFLAGS="$SAVE_CFLAGS"
109    AC_MSG_RESULT([$ac_cv_try_cflags_ok])
110    if test x"$ac_cv_try_cflags_ok" = x"yes"; then
111        ifelse([$2],[],[:],[$2])
112    else
113        ifelse([$3],[],[:],[$3])
114    fi])
115
116
117dnl AC_CHECK_GENERATE_INTTYPES_H (INCLUDE-DIRECTORY)
118dnl generate a default inttypes.h if the header file does not exist already
119AC_DEFUN([AC_CHECK_GENERATE_INTTYPES],
120    [AC_CHECK_HEADER([inttypes.h],[],
121        [AC_COMPILE_CHECK_SIZEOF([char],[1])
122        AC_COMPILE_CHECK_SIZEOF([short],[2])
123        AC_COMPILE_CHECK_SIZEOF([int],[4])
124        AC_COMPILE_CHECK_SIZEOF([long long],[8])
125        cat >$1/inttypes.h << EOF
126#ifndef _INTTYPES_H
127#define _INTTYPES_H
128/* default inttypes.h for people who do not have it on their system */
129#if (!defined __int8_t_defined) && (!defined __BIT_TYPES_DEFINED__)
130#define __int8_t_defined
131typedef signed char int8_t;
132typedef signed short int16_t;
133typedef signed int int32_t;
134#ifdef ARCH_X86
135typedef signed long long int64_t;
136#endif
137#endif
138#if (!defined _LINUX_TYPES_H)
139typedef unsigned char uint8_t;
140typedef unsigned short uint16_t;
141typedef unsigned int uint32_t;
142#ifdef ARCH_X86
143typedef unsigned long long uint64_t;
144#endif
145#endif
146#endif
147EOF
148        ])])
149
150
151dnl AC_COMPILE_CHECK_SIZEOF (TYPE SUPPOSED-SIZE)
152dnl abort if the given type does not have the supposed size
153AC_DEFUN([AC_COMPILE_CHECK_SIZEOF],
154    [AC_MSG_CHECKING(that size of $1 is $2)
155    AC_TRY_COMPILE([],[switch (0) case 0: case (sizeof ($1) == $2):;],[],
156        [AC_MSG_ERROR([can not build a default inttypes.h])])
157    AC_MSG_RESULT([yes])])
158
159
160dnl AC_PROG_GMSGFMT_PLURAL
161dnl ----------------------
162dnl Validate the GMSGFMT program found by gettext.m4; reject old versions
163dnl of GNU msgfmt that do not support the "msgid_plural" extension.
164AC_DEFUN([AC_PROG_GMSGFMT_PLURAL],
165 [dnl AC_REQUIRE(AM_GNU_GETTEXT)
166
167  if test "$GMSGFMT" != ":"; then
168    AC_MSG_CHECKING([for plural forms in GNU msgfmt])
169
170    changequote(,)dnl We use [ and ] in in .po test input
171
172    dnl If the GNU msgfmt does not accept msgid_plural we define it
173    dnl as : so that the Makefiles still can work.
174    cat >conftest.po <<_ACEOF
175msgid "channel"
176msgid_plural "channels"
177msgstr[0] "canal"
178msgstr[1] "canal"
179
180_ACEOF
181    changequote([,])dnl
182
183    if $GMSGFMT -o /dev/null conftest.po >/dev/null 2>&1; then
184      AC_MSG_RESULT(yes)
185    else
186      AC_MSG_RESULT(no)
187      AC_MSG_RESULT(
188	[found GNU msgfmt program is too old, it does not support plural forms; ignore it])
189      GMSGFMT=":"
190    fi
191    rm -f conftest.po
192  fi
193])dnl AC_PROG_GMSGFMT_PLURAL
194
195dnl Shims for various functions which are present in newer xine-lib
196AC_DEFUN([XINE_LIB_SHIMS],
197   [AC_MSG_CHECKING([for re-entrant XML parser in xine-lib])
198    tmp_CFLAGS="$CFLAGS"
199    tmp_LIBS="$LIBS"
200    CFLAGS="$CFLAGS $XINE_CFLAGS"
201    LIBS="$LIBS $XINE_LIBS"
202    AC_LINK_IFELSE(
203	[AC_LANG_PROGRAM([#include <xine/xmlparser.h>],
204			 [xml_parser_init_r ((void *)0, 0, XML_PARSER_CASE_INSENSITIVE);])],
205	[AC_DEFINE([HAVE_XML_PARSER_REENTRANT], [1], [Define if xml_parser_init_r etc. are available])
206	 AC_MSG_RESULT([yes])],
207	[AC_MSG_RESULT([no])])
208    CFLAGS="$tmp_CFLAGS"
209    LIBS="$tmp_LIBS"
210    ])
211
212dnl Test for xine_open_cloexec function
213AC_DEFUN([XINE_LIB_OPEN_CLOEXEC],
214   [AC_MSG_CHECKING([for xine_open_cloexec within xine-lib])
215    tmp_CFLAGS="$CFLAGS"
216    tmp_LIBS="$LIBS"
217     CFLAGS="$CFLAGS $XINE_CFLAGS"
218     LIBS="$LIBS $XINE_LIBS"
219     AC_LINK_IFELSE(
220         [AC_LANG_PROGRAM([],[xine_open_cloexec();])],
221         [AC_DEFINE([HAVE_XINE_OPEN_CLOEXEC], [1], [Define if xine-lib supports xine_open_cloexec])
222          AC_MSG_RESULT([yes])],
223         [AC_MSG_RESULT([no])])
224    CFLAGS="$tmp_CFLAGS"
225    LIBS="$tmp_LIBS"
226    ])
227
228dnl Test for xine_socket_cloexec function
229AC_DEFUN([XINE_LIB_SOCKET_CLOEXEC],
230    [AC_MSG_CHECKING([for xine_socket_cloexec within xine-lib])
231    tmp_CFLAGS="$CFLAGS"
232    tmp_LIBS="$LIBS"
233     CFLAGS="$CFLAGS $XINE_CFLAGS"
234     LIBS="$LIBS $XINE_LIBS"
235     AC_LINK_IFELSE(
236         [AC_LANG_PROGRAM([],[xine_socket_cloexec();])],
237         [AC_DEFINE([HAVE_XINE_SOCKET_CLOEXEC], [1], [Define if xine-lib supports xine_socket_cloexec])
238          AC_MSG_RESULT([yes])],
239         [AC_MSG_RESULT([no])])
240    CFLAGS="$tmp_CFLAGS"
241    LIBS="$tmp_LIBS"
242    ])
243
244dnl Test for xine_list_next_value function
245AC_DEFUN([XINE_LIB_LIST_NEXT_VALUE],
246    [AC_MSG_CHECKING([for xine_list_next_value within xine-lib])
247    tmp_CFLAGS="$CFLAGS"
248    tmp_LIBS="$LIBS"
249     CFLAGS="$CFLAGS $XINE_CFLAGS"
250     LIBS="$LIBS $XINE_LIBS"
251     AC_LINK_IFELSE(
252         [AC_LANG_PROGRAM([
253         ],[
254xine_list_next_value ();
255         ])],
256         [AC_DEFINE([HAVE_XINE_LIST_NEXT_VALUE], [1], [Define if xine-lib supports xine_list_next_value])
257          AC_MSG_RESULT([yes])],
258         [AC_MSG_RESULT([no])])
259    CFLAGS="$tmp_CFLAGS"
260    LIBS="$tmp_LIBS"
261   ])
262