b3305579e1f3309c3e0996559f0d1e45734ec10b
[bbaumbach/samba-autobuild/.git] / source4 / lib / charset / SConscript
1 #!/usr/bin/env python
2 # tastes like -*- python -*-
3
4 Import('hostenv')
5
6 def _CheckIconvPath(context,path):
7         # Some systems have iconv in libc, some have it in libiconv (OSF/1 and
8         # those with the standalone portable libiconv installed).
9         context.Message("checking for iconv in " + path + " ... ")
10
11         main = """
12 int main()
13 {
14         iconv_t cd = iconv_open("","");
15     iconv(cd,NULL,NULL,NULL,NULL);
16     iconv_close(cd);
17         return 0;
18 }"""
19
20         have_giconv_iconv = context.TryLink("""
21 #include <stdlib.h>
22 #include <giconv.h>
23 """ + main, '.c')
24         if have_giconv_iconv:
25                 context.Result(1)
26                 return ("giconv.h", "")
27
28         have_iconv_iconv = context.TryLink("""
29 #include <stdlib.h>
30 #include <iconv.h>
31 """ + main, '.c')
32
33         if have_iconv_iconv:
34                 context.Result(1)
35                 return ("iconv.h", "")
36
37         #FIXME: Add -lgiconv
38         have_giconv_lib_iconv = context.TryLink("""
39 #include <stdlib.h>
40 #include <giconv.h>
41 """ + main, '.c')
42         if have_giconv_lib_iconv:
43                 context.Result(1)
44                 return ("giconv.h", "-lgiconv")
45
46         #FIXME: Add -liconv
47         have_iconv_lib_iconv = context.TryLink("""
48 #include <stdlib.h>
49 #include <iconv.h>
50 """+main,'.c')
51
52         if have_iconv_lib_iconv:
53                 context.Result(1)
54                 return ("iconv.h", "-liconv")
55
56         return None
57
58 def CheckIconv(context):
59         context.Message("checking for iconv ... ")
60         
61         look_dirs = ['/usr','/usr/local','/sw']
62
63         for p in look_dirs:
64                 _CheckIconvPath(context,p) #FIXME: Handle return value
65
66         if context.TryRun("""
67 #include <iconv.h>
68 main() {
69        iconv_t cd = iconv_open("ASCII", "UCS-2LE");
70        if (cd == 0 || cd == (iconv_t)-1) return -1;
71        return 0;
72 }
73 """, '.c'):
74                 context.Result(1)
75                 return (1,[])
76         
77         context.Result(0)
78         return (0,[])
79
80 if hostenv['configure']:
81         conf = hostenv.Configure( custom_tests = { 'CheckIconv' : CheckIconv })
82         (have_iconv,iconv) = conf.CheckIconv()
83         conf.Finish()
84
85         if not have_iconv:
86                 print "Install iconv for better charset compatibility"
87 else:
88         iconv = [] # FIXME
89
90 charset = hostenv.StaticLibrary('charset',['iconv.c','charcnv.c',iconv])
91 Export('charset')