source: icXML/icXML-devel/m4/xerces_transcoder_selection.m4 @ 2723

Last change on this file since 2723 was 2723, checked in by cameron, 6 years ago

Add Xerces build system scripts

File size: 7.1 KB
Line 
1dnl @synopsis XERCES_TRANSCODER_SELECTION
2dnl
3dnl Determines the which transcoder to use
4dnl
5dnl @category C
6dnl @author James Berry
7dnl @version 2005-05-23
8dnl @license AllPermissive
9dnl
10dnl $Id: xerces_transcoder_selection.m4 835245 2009-11-12 05:57:31Z borisk $
11
12AC_DEFUN([XERCES_TRANSCODER_SELECTION],
13        [
14
15        ######################################################
16        # Test for availability of each transcoder on this host.
17        # For each transcoder that's available, and hasn't been disabled, add it to our list.
18        # If the transcoder has been explicitly "enable"d, then vote for it strongly,
19        # in upper case.
20        ######################################################
21
22        tc_list=
23
24        # Check for GNU iconv support
25        no_GNUiconv=false
26        AC_CHECK_HEADERS([iconv.h wchar.h string.h stdlib.h stdio.h ctype.h locale.h errno.h], [], [no_GNUiconv=true])
27        # The code in iconv needs just on of these include files
28        AC_CHECK_HEADER([endian.h],
29                        [],
30                        [
31                         AC_CHECK_HEADER([machine/endian.h],
32                                         [],
33                                         [
34                                          AC_CHECK_HEADER([arpa/nameser_compat.h],
35                                                          [],
36                                                          [no_GNUiconv=true])
37                                         ])
38                        ])
39        AC_CHECK_FUNCS([iconv_open iconv_close iconv], [], [no_GNUiconv=true])
40        AC_MSG_CHECKING([whether we can support the GNU iconv Transcoder])
41        list_add=
42        AS_IF([! $no_GNUiconv], [
43                AC_ARG_ENABLE([transcoder-gnuiconv],
44                        AS_HELP_STRING([--enable-transcoder-gnuiconv],
45                                [Enable GNU iconv-based transcoder support]),
46                        [AS_IF([test x"$enableval" = xyes],
47                                [list_add=GNUICONV])],
48                        [list_add=gnuiconv])
49        ])
50        AS_IF([test x"$list_add" != x],
51                [tc_list="$tc_list -$list_add-"; AC_MSG_RESULT(yes)],
52                [AC_MSG_RESULT(no)]
53        )
54
55        # Check for iconv support
56        no_iconv=false
57        AC_CHECK_HEADERS([wchar.h], [], [no_iconv=true])
58        AC_CHECK_FUNCS([mblen wcstombs mbstowcs], [], [no_iconv=true])
59        AC_MSG_CHECKING([whether we can support the iconv Transcoder])
60        list_add=
61        AS_IF([! $no_iconv], [
62                AC_ARG_ENABLE([transcoder-iconv],
63                        AS_HELP_STRING([--enable-transcoder-iconv],
64                                [Enable iconv-based transcoder support]),
65                        [AS_IF([test x"$enableval" = xyes],
66                                [list_add=ICONV])],
67                        [list_add=iconv])
68        ])
69        AS_IF([test x"$list_add" != x],
70                [tc_list="$tc_list -$list_add-"; AC_MSG_RESULT(yes)],
71                [AC_MSG_RESULT(no)]
72        )
73
74        # Check for ICU
75        AC_REQUIRE([XERCES_ICU_PREFIX])
76        AC_MSG_CHECKING([whether we can support the ICU Transcoder])
77        list_add=
78        AS_IF([test x"$xerces_cv_icu_present" != x"no"], [
79                AC_ARG_ENABLE([transcoder-icu],
80                        AS_HELP_STRING([--enable-transcoder-icu],
81                                [Enable icu-based transcoder support]),
82                        [AS_IF([test x"$enableval" = xyes],
83                                [list_add=ICU])],
84                        [list_add=icu])
85        ])
86        AS_IF([test x"$list_add" != x],
87                [tc_list="$tc_list -$list_add-"; AC_MSG_RESULT(yes)],
88                [AC_MSG_RESULT(no)]
89        )
90
91
92        # Check for platform-specific transcoders
93        list_add=
94        case $host_os in
95        darwin*)
96                AC_MSG_CHECKING([whether we can support the MacOSUnicodeConverter Transcoder])
97                AS_IF([test x"$ac_cv_header_CoreServices_CoreServices_h" = xyes], [
98                        AC_ARG_ENABLE([transcoder-macosunicodeconverter],
99                                AS_HELP_STRING([--enable-transcoder-macosunicodeconverter],
100                                        [Enable MacOSUnicodeConverter-based transcoder support]),
101                                [AS_IF([test x"$enableval" = xyes],
102                                        [list_add=MACOSUNICODECONVERTER])],
103                                [list_add=macosunicodeconverter])
104                ])
105                AS_IF([test x"$list_add" != x],
106                        [tc_list="$tc_list -$list_add-"; AC_MSG_RESULT(yes)],
107                        [AC_MSG_RESULT(no)]
108                )
109                ;;
110        windows* | mingw*)
111                AC_MSG_CHECKING([whether we can support the Windows Transcoder])
112                AC_ARG_ENABLE([transcoder-windows],
113                        AS_HELP_STRING([--enable-transcoder-windows],
114                                [Enable Windows-based transcoder support]),
115                        [AS_IF([test x"$enableval" = xyes],
116                                [list_add=WINDOWS])],
117                        [list_add=windows])
118                AS_IF([test x"$list_add" != x],
119                        [tc_list="$tc_list -$list_add-"; AC_MSG_RESULT(yes)],
120                        [AC_MSG_RESULT(no)]
121                )
122                ;;
123        cygwin*)
124                # Only add it to the list if the user explicitly asked
125                # for it.
126                #
127                AC_MSG_CHECKING([whether to use the Windows Transcoder])
128                AC_ARG_ENABLE([transcoder-windows],
129                        AS_HELP_STRING([--enable-transcoder-windows],
130                                [Enable Windows-based transcoder support]),
131                        [AS_IF([test x"$enableval" = xyes],
132                               [list_add=WINDOWS])])
133                AS_IF([test x"$list_add" != x],
134                        [tc_list="$tc_list -$list_add-"; AC_MSG_RESULT(yes)],
135                        [AC_MSG_RESULT(no)]
136                )
137                ;;
138        esac
139
140        # TODO: Tests for additional transcoders
141
142        ######################################################
143        # Determine which transcoder to use.
144        #
145        # We do this in two passes. Transcoders that have been enabled with "yes",
146        # and which start out in upper case, get the top priority on the first pass.
147        # On the second pass, we consider those which are simply available, but
148        # which were not "disable"d (these won't even be in our list).
149        ######################################################
150        transcoder=
151        az_lower=abcdefghijklmnopqrstuvwxyz
152        az_upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
153        AC_MSG_CHECKING([for which Transcoder to use (choices:$tc_list)])
154        for i in 1 2; do
155                # Swap upper/lower case in the tc_list. Cannot use tr ranges
156                # because of the portability issues.
157                #
158                tc_list=`echo $tc_list | tr "$az_lower$az_upper" "$az_upper$az_lower"`
159
160                # Check for each transcoder, in implicit rank order
161                case $tc_list in
162
163                *-icu-*)
164                        transcoder=icu
165                        AC_DEFINE([XERCES_USE_TRANSCODER_ICU], 1, [Define to use the ICU-based transcoder])
166                        LIBS="${LIBS} ${xerces_cv_icu_libs}"
167                        break
168                        ;;
169
170                *-macosunicodeconverter-*)
171                        transcoder=macosunicodeconverter
172                        AC_DEFINE([XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER], 1, [Define to use the Mac OS UnicodeConverter-based transcoder])
173                        XERCES_LINK_DARWIN_FRAMEWORK([CoreServices])
174                        break
175                        ;;
176
177                *-gnuiconv-*)
178                        transcoder=gnuiconv
179                        AC_DEFINE([XERCES_USE_TRANSCODER_GNUICONV], 1, [Define to use the GNU iconv transcoder])
180                        break
181                        ;;
182
183                *-windows-*)
184                        transcoder=windows
185                        AC_DEFINE([XERCES_USE_TRANSCODER_WINDOWS], 1, [Define to use the Windows transcoder])
186                        break
187                        ;;
188
189                *-iconv-*)
190                        transcoder=iconv
191                        AC_DEFINE([XERCES_USE_TRANSCODER_ICONV], 1, [Define to use the iconv transcoder])
192                        break
193                        ;;
194
195                *)
196                        AS_IF([test $i -eq 2], [
197                                AC_MSG_RESULT([none])
198                                AC_MSG_ERROR([Xerces cannot function without a transcoder])
199                                ]
200                        )
201                        ;;
202                esac
203        done
204        if test x"$transcoder" != x; then
205                AC_MSG_RESULT($transcoder)
206        fi
207
208        # Define the auto-make conditionals which determine what actually gets compiled
209        # Note that these macros can't be executed conditionally, which is why they're here, not above.
210        AM_CONDITIONAL([XERCES_USE_TRANSCODER_ICU],                     [test x"$transcoder" = xicu])
211        AM_CONDITIONAL([XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER],   [test x"$transcoder" = xmacosunicodeconverter])
212        AM_CONDITIONAL([XERCES_USE_TRANSCODER_GNUICONV],                [test x"$transcoder" = xgnuiconv])
213        AM_CONDITIONAL([XERCES_USE_TRANSCODER_ICONV],                   [test x"$transcoder" = xiconv])
214        AM_CONDITIONAL([XERCES_USE_TRANSCODER_WINDOWS],                 [test x"$transcoder" = xwindows])
215
216        ]
217)
Note: See TracBrowser for help on using the repository browser.