Annotation of /trunk/xmms/gentoo-m4/xmms_local.m4
Parent Directory | Revision Log
Revision 153 -
(hide annotations)
(download)
Tue May 8 20:52:56 2007 UTC (17 years, 4 months ago) by niro
File size: 6697 byte(s)
Tue May 8 20:52:56 2007 UTC (17 years, 4 months ago) by niro
File size: 6697 byte(s)
-import
1 | niro | 153 | # Test for libxml by Haavard Kvaalen <havardk@xmms.org> |
2 | # Based on GLIB test by Owen Taylor | ||
3 | |||
4 | dnl AM_PATH_LIBXML([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) | ||
5 | dnl Test for libxml, and define XML_CFLAGS and XML_LIBS | ||
6 | dnl | ||
7 | AC_DEFUN(AM_PATH_LIBXML, | ||
8 | [dnl | ||
9 | dnl Get the cflags and libraries from the xml-config script | ||
10 | dnl | ||
11 | AC_ARG_WITH(libxml-prefix, [ --with-libxml-prefix=PFX Prefix where libxml is installed (optional)], | ||
12 | libxml_prefix="$withval", libxml_prefix="") | ||
13 | AC_ARG_ENABLE(libxmltest, [ --disable-libxmltest Do not try to compile and run a test libxml program], | ||
14 | , enable_libxmltest=yes) | ||
15 | |||
16 | if test x$libxml_config_prefix != x ; then | ||
17 | libxml_config_args="$libxml_config_args --prefix=$libxml_config_prefix" | ||
18 | if test x${XML_CONFIG+set} != xset ; then | ||
19 | XML_CONFIG=$libxml_config_prefix/bin/xml-config | ||
20 | fi | ||
21 | fi | ||
22 | |||
23 | AC_PATH_PROG(XML_CONFIG, xml-config, no) | ||
24 | min_libxml_version=ifelse([$1], ,1.0.0, $1) | ||
25 | AC_MSG_CHECKING(for libxml - version >= $min_libxml_version) | ||
26 | no_libxml="" | ||
27 | if test "$XML_CONFIG" = "no" ; then | ||
28 | no_libxml=yes | ||
29 | else | ||
30 | XML_CFLAGS=`$XML_CONFIG $libxml_config_args --cflags` | ||
31 | XML_LIBS=`$XML_CONFIG $libxml_config_args --libs` | ||
32 | libxml_major_version=`$XML_CONFIG $libxml_config_args --version | \ | ||
33 | sed 's/[[^0-9]]*\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)[[^0-9]]*/\1/'` | ||
34 | libxml_minor_version=`$XML_CONFIG $libxml_config_args --version | \ | ||
35 | sed 's/[[^0-9]]*\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)[[^0-9]]*/\2/'` | ||
36 | libxml_micro_version=`$XML_CONFIG $libxml_config_args --version | \ | ||
37 | sed 's/[[^0-9]]*\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)[[^0-9]]*/\3/'` | ||
38 | if test "x$enable_libxmltest" = "xyes" ; then | ||
39 | ac_save_CFLAGS="$CFLAGS" | ||
40 | ac_save_LIBS="$LIBS" | ||
41 | CFLAGS="$CFLAGS $XML_CFLAGS" | ||
42 | LIBS="$XML_LIBS $LIBS" | ||
43 | dnl | ||
44 | dnl Now check if the installed libxml is sufficiently new. (Also sanity | ||
45 | dnl checks the results of xml-config to some extent | ||
46 | dnl | ||
47 | rm -f conf.libxmltest | ||
48 | AC_TRY_RUN([ | ||
49 | #include <stdio.h> | ||
50 | #include <stdlib.h> | ||
51 | #include <parser.h> | ||
52 | |||
53 | char* | ||
54 | my_strdup (char *str) | ||
55 | { | ||
56 | char *new_str; | ||
57 | |||
58 | if (str) | ||
59 | { | ||
60 | new_str = malloc((strlen (str) + 1) * sizeof(char)); | ||
61 | strcpy(new_str, str); | ||
62 | } | ||
63 | else | ||
64 | new_str = NULL; | ||
65 | |||
66 | return new_str; | ||
67 | } | ||
68 | |||
69 | int | ||
70 | main () | ||
71 | { | ||
72 | int major, minor, micro; | ||
73 | char *tmp_version; | ||
74 | |||
75 | system ("touch conf.libxmltest"); | ||
76 | |||
77 | /* HP/UX 9 (%@#!) writes to sscanf strings */ | ||
78 | tmp_version = my_strdup("$min_libxml_version"); | ||
79 | if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { | ||
80 | printf("%s, bad version string\n", "$min_libxml_version"); | ||
81 | exit(1); | ||
82 | } | ||
83 | |||
84 | if (($libxml_major_version > major) || | ||
85 | (($libxml_major_version == major) && ($libxml_minor_version > minor)) || | ||
86 | (($libxml_major_version == major) && ($libxml_minor_version == minor) && ($libxml_micro_version >= micro))) | ||
87 | { | ||
88 | return 0; | ||
89 | } | ||
90 | else | ||
91 | { | ||
92 | printf("\n*** An old version of libxml (%d.%d.%d) was found.\n", | ||
93 | $libxml_major_version, $libxml_minor_version, $libxml_micro_version); | ||
94 | printf("*** You need a version of libxml newer than %d.%d.%d.\n", | ||
95 | major, minor, micro); | ||
96 | printf("***\n"); | ||
97 | printf("*** If you have already installed a sufficiently new version, this error\n"); | ||
98 | printf("*** probably means that the wrong copy of the xml-config shell script is\n"); | ||
99 | printf("*** being found. The easiest way to fix this is to remove the old version\n"); | ||
100 | printf("*** of libxml, but you can also set the XML_CONFIG environment to point to the\n"); | ||
101 | printf("*** correct copy of xml-config. (In this case, you will have to\n"); | ||
102 | printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); | ||
103 | printf("*** so that the correct libraries are found at run-time))\n"); | ||
104 | } | ||
105 | return 1; | ||
106 | } | ||
107 | ],, no_libxml=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) | ||
108 | CFLAGS="$ac_save_CFLAGS" | ||
109 | LIBS="$ac_save_LIBS" | ||
110 | fi | ||
111 | fi | ||
112 | if test "x$no_libxml" = x ; then | ||
113 | AC_MSG_RESULT(yes) | ||
114 | ifelse([$2], , :, [$2]) | ||
115 | else | ||
116 | AC_MSG_RESULT(no) | ||
117 | if test "$XML_CONFIG" = "no" ; then | ||
118 | : | ||
119 | else | ||
120 | if test -f conf.libxmltest ; then | ||
121 | : | ||
122 | else | ||
123 | echo "*** Could not run LIBXML test program, checking why..." | ||
124 | CFLAGS="$CFLAGS $XML_CFLAGS" | ||
125 | LIBS="$LIBS $XML_LIBS" | ||
126 | AC_TRY_LINK([ | ||
127 | #include <parser.h> | ||
128 | #include <stdio.h> | ||
129 | ], [ return 0; ], | ||
130 | [ echo "*** The test program compiled, but did not run. This usually means" | ||
131 | echo "*** that the run-time linker is not finding libxml or finding the" | ||
132 | echo "*** wrong version of libxml. If it is not finding libxml, you will" | ||
133 | echo "*** need to set your LD_LIBRARY_PATH environment variable, or" | ||
134 | echo "*** edit /etc/ld.so.conf to point to the installed location Also," | ||
135 | echo "*** make sure you have run ldconfig if that is required on your system"], | ||
136 | [ echo "*** The test program failed to compile or link. See the file config.log" | ||
137 | echo "*** for the exact error that occured. This usually means libxml was" | ||
138 | echo "*** incorrectly installed or that you have moved libxml since it was" | ||
139 | echo "*** installed."]) | ||
140 | CFLAGS="$ac_save_CFLAGS" | ||
141 | LIBS="$ac_save_LIBS" | ||
142 | fi | ||
143 | fi | ||
144 | XML_CFLAGS="" | ||
145 | XML_LIBS="" | ||
146 | ifelse([$3], , :, [$3]) | ||
147 | fi | ||
148 | AC_SUBST(XML_CFLAGS) | ||
149 | AC_SUBST(XML_LIBS) | ||
150 | rm -f conf.libxmltest | ||
151 | ]) | ||
152 | |||
153 | ##--## local | ||
154 | |||
155 | dnl XMMS_FUNC_POSIX(FUNCTION... [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) | ||
156 | dnl Test for functions in posix libraries, and define POSIX_LIBS | ||
157 | AC_DEFUN(XMMS_FUNC_POSIX, | ||
158 | [dnl | ||
159 | xmms_posix4=no | ||
160 | xmms_rt=no | ||
161 | for xmms_func in $1 | ||
162 | do | ||
163 | xmms_have_func=no | ||
164 | AC_CHECK_FUNC($xmms_func,xmms_have_func=yes,[ | ||
165 | dnl try in libposix4 if not found in current LIBS | ||
166 | AC_CHECK_LIB(posix4,$xmms_func,[xmms_have_func=yes xmms_posix4=yes],[ | ||
167 | dnl try in librt, if not found so far | ||
168 | AC_CHECK_LIB(rt,$xmms_func,[xmms_have_func=yes xmms_rt=yes]) | ||
169 | ]) | ||
170 | ]) | ||
171 | if test $xmms_have_func = yes; then | ||
172 | changequote(, )dnl | ||
173 | xmms_tr_func=HAVE_`echo $xmms_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` | ||
174 | changequote([, ])dnl | ||
175 | AC_DEFINE_UNQUOTED($xmms_tr_func) | ||
176 | ifelse([$2], , :, [$2]) | ||
177 | else | ||
178 | ifelse([$3], , :, [$3]) | ||
179 | fi | ||
180 | done | ||
181 | POSIX_LIBS= | ||
182 | if test $xmms_posix4 = yes; then | ||
183 | POSIX_LIBS=-lposix4 | ||
184 | fi | ||
185 | if test $xmms_rt = yes; then | ||
186 | POSIX_LIBS="$POSIX_LIBS -lrt" | ||
187 | fi | ||
188 | AC_SUBST(POSIX_LIBS) | ||
189 | ]) |