diff options
Diffstat (limited to 'source4/lib/charset')
-rw-r--r-- | source4/lib/charset/SConscript | 92 |
1 files changed, 84 insertions, 8 deletions
diff --git a/source4/lib/charset/SConscript b/source4/lib/charset/SConscript index 53e5db44bb..b3305579e1 100644 --- a/source4/lib/charset/SConscript +++ b/source4/lib/charset/SConscript @@ -1,15 +1,91 @@ +#!/usr/bin/env python +# tastes like -*- python -*- + Import('hostenv') -SConscript('../../build/scons/iconv.py') -# tastes like -*- python -*- -#conf = Configure( custom_tests = { 'CheckIconv' : CheckIconv }) -#(have_iconv,iconv) = conf.CheckIconv() -#conf.Finish() +def _CheckIconvPath(context,path): + # Some systems have iconv in libc, some have it in libiconv (OSF/1 and + # those with the standalone portable libiconv installed). + context.Message("checking for iconv in " + path + " ... ") + + main = """ +int main() +{ + iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + return 0; +}""" + + have_giconv_iconv = context.TryLink(""" +#include <stdlib.h> +#include <giconv.h> +""" + main, '.c') + if have_giconv_iconv: + context.Result(1) + return ("giconv.h", "") + + have_iconv_iconv = context.TryLink(""" +#include <stdlib.h> +#include <iconv.h> +""" + main, '.c') + + if have_iconv_iconv: + context.Result(1) + return ("iconv.h", "") + + #FIXME: Add -lgiconv + have_giconv_lib_iconv = context.TryLink(""" +#include <stdlib.h> +#include <giconv.h> +""" + main, '.c') + if have_giconv_lib_iconv: + context.Result(1) + return ("giconv.h", "-lgiconv") + + #FIXME: Add -liconv + have_iconv_lib_iconv = context.TryLink(""" +#include <stdlib.h> +#include <iconv.h> +"""+main,'.c') + + if have_iconv_lib_iconv: + context.Result(1) + return ("iconv.h", "-liconv") + + return None + +def CheckIconv(context): + context.Message("checking for iconv ... ") + + look_dirs = ['/usr','/usr/local','/sw'] + + for p in look_dirs: + _CheckIconvPath(context,p) #FIXME: Handle return value + + if context.TryRun(""" +#include <iconv.h> +main() { + iconv_t cd = iconv_open("ASCII", "UCS-2LE"); + if (cd == 0 || cd == (iconv_t)-1) return -1; + return 0; +} +""", '.c'): + context.Result(1) + return (1,[]) + + context.Result(0) + return (0,[]) -#if not have_iconv: -# print "Install iconv for better charset compatibility" +if hostenv['configure']: + conf = hostenv.Configure( custom_tests = { 'CheckIconv' : CheckIconv }) + (have_iconv,iconv) = conf.CheckIconv() + conf.Finish() -iconv = [] + if not have_iconv: + print "Install iconv for better charset compatibility" +else: + iconv = [] # FIXME charset = hostenv.StaticLibrary('charset',['iconv.c','charcnv.c',iconv]) Export('charset') |