Tizen 2.1 base
[platform/core/uifw/ise-engine-sunpinyin.git] / wrapper / scim / SConstruct
1 import os
2 import SCons.Tool.textfile
3
4 locales = []
5
6 cflags = '-O2 -g -pipe '
7 version = '2.0.3'
8
9 AddOption('--prefix', dest='prefix', metavar='DIR',
10           help='installation prefix')
11 AddOption('--libdir', dest='libdir', metavar='DIR',
12           help='installation libdir')
13 AddOption('--libexecdir', dest='libexecdir', metavar='DIR',
14           help='installation libexecdir')
15 AddOption('--datadir', dest='datadir', metavar='DIR',
16           help='installation datadir')
17 AddOption('--rpath', dest='rpath', metavar='DIR',
18           help='encode rpath in the executables')
19
20 opts = Variables('configure.conf')
21 opts.Add('PREFIX', default='/usr/local')
22 opts.Add('LIBDIR', default='/usr/local/lib')
23 opts.Add('LIBEXECDIR', default='/usr/local/lib')
24 opts.Add('DATADIR', default='/usr/local/share')
25
26 def PassVariables(envvar, env):
27     for (x, y) in envvar:
28         if x in os.environ:
29             print 'Warning: you\'ve set %s in the environmental variable!' % x
30             env[y] = os.environ[x]
31
32 env = Environment(ENV=os.environ,
33                   CFLAGS=cflags, CXXFLAGS=cflags, 
34                   CPPPATH=['.'], SUBSTFILESUFFIX='.in')
35 opts.Update(env)
36
37 if GetOption('prefix') is not None:
38     env['PREFIX'] = GetOption('prefix')
39     env['LIBDIR'] = env['PREFIX'] + '/lib'
40     env['LIBEXECDIR'] = env['PREFIX'] + '/lib/'
41     env['DATADIR'] = env['PREFIX'] + '/share/'
42
43 if GetOption('libdir') is not None:
44     env['LIBDIR'] = GetOption('libdir')
45
46 if GetOption('libexecdir') is not None:
47     env['LIBEXECDIR'] = GetOption('libexecdir')
48
49 if GetOption('datadir') is not None:
50     env['DATADIR'] = GetOption('datadir')
51
52 opts.Save('configure.conf', env)
53
54 envvar = [('CC', 'CC'),
55           ('CXX', 'CXX'),
56           ('CFLAGS', 'CFLAGS'),
57           ('CXXFLAGS', 'CXXFLAGS'),
58           ('LDFLAGS', 'LINKFLAGS')]
59 PassVariables(envvar, env)
60
61 data_dir = env['DATADIR'] + '/scim-sunpinyin'
62 icons_dir = env['DATADIR'] + '/scim-sunpinyin/icons'
63 bin_dir = env['LIBEXECDIR'] + '/scim-sunpinyin'
64 gettext_package = 'scim-sunpinyin'
65
66 extra_cflags  = ' -DSCIM_SUNPINYIN_LOCALEDIR=\'"%s"\'' % (env['DATADIR'] + '/locale')
67 extra_cflags += ' -DSCIM_SUNPINYIN_ICON_DIR=\'"%s"\'' % icons_dir
68 extra_cflags += ' -DLIBEXECDIR=\'"%s"\'' % bin_dir
69 extra_cflags += ' -DGETTEXT_PACKAGE=\'"%s"\'' % gettext_package
70 extra_cflags += ' -Isrc'
71
72 env.Append(CFLAGS=extra_cflags)
73 env.Append(CXXFLAGS=extra_cflags)
74 env.Replace(SHLIBPREFIX = '')
75
76 if GetOption('rpath') is not None:
77     env.Append(LINKFLAGS=' -Wl,-R -Wl,%s' % GetOption('rpath'))
78
79 #
80 #==============================configure================================
81 #
82 def CheckPKGConfig(context, version='0.12.0'):
83     context.Message( 'Checking for pkg-config... ' )
84     ret = context.TryAction('pkg-config --atleast-pkgconfig-version=%s' % version)[0]
85     context.Result(ret)
86     return ret
87
88 def CheckPKG(context, name):
89     context.Message( 'Checking for %s... ' % name )
90     ret = context.TryAction('pkg-config --exists \'%s\'' % name)[0]
91     context.Result(ret)
92     return ret
93
94 conf = Configure(env, custom_tests={'CheckPKGConfig' : CheckPKGConfig,
95                                     'CheckPKG' : CheckPKG })
96
97 def DoConfigure():
98     if GetOption('clean'):
99         return
100
101     if not conf.CheckPKGConfig():
102         Exit(1)
103
104     if not conf.CheckPKG('scim'):
105         Exit(1)
106
107     if not conf.CheckPKG('sunpinyin-2.0'):
108         Exit(1)
109
110     if not conf.CheckPKG('scim-gtkutils'):
111         Exit(1)
112     
113     env = conf.Finish()
114     env.ParseConfig('pkg-config scim sunpinyin-2.0 scim-gtkutils --libs --cflags')
115
116 DoConfigure()
117
118 scim_icondir = os.popen('pkg-config scim   --variable=icondir').readlines()[0].rstrip()
119 scim_moduledir =os.popen('pkg-config scim   --variable=moduledir').readlines()[0].rstrip()
120
121 lib_sunpinyin_imengine_setup_target  = "sunpinyin_imengine_setup"
122 lib_sunpinyin_imengine_setup_sources = ["src/sunpinyin_imengine_setup.cpp"]
123 env.SharedLibrary(target = lib_sunpinyin_imengine_setup_target, source = lib_sunpinyin_imengine_setup_sources)
124
125 lib_sunpinyin_imengine_target  = "sunpinyin_imengine"
126 lib_sunpinyin_imengine_sources = ['src/imi_scimwin.cpp',
127                                   'src/sunpinyin_imengine.cpp',
128                                   'src/sunpinyin_lookup_table.cpp',
129                                   'src/sunpinyin_utils.cpp']
130 env.SharedLibrary(target = lib_sunpinyin_imengine_target, source = lib_sunpinyin_imengine_sources)
131 os.system('chmod 0644 ' + lib_sunpinyin_imengine_setup_target + '.so')
132 os.system('chmod 0644 ' + lib_sunpinyin_imengine_target + '.so')
133 for locale in locales:
134     mo = 'po/%s.mo' % (locale,)
135     env.Command(mo, [], 'msgfmt po/%s.po -o %s' % (locale, mo))
136
137 #
138 #==============================install================================
139 #
140 def DoInstall():
141
142     os.system('chmod 0644 ' + lib_sunpinyin_imengine_setup_target + '.so')
143     os.system('chmod 0644 ' + lib_sunpinyin_imengine_target + '.so')
144         
145     icons_target = env.Install(scim_icondir,
146                                ['data/sunpinyin_logo.png'])
147
148     imengine_target = env.Install(scim_moduledir + '/IMEngine',
149                                    'sunpinyin_imengine.so')
150
151     imsetup_target = env.Install(scim_moduledir + '/SetupUI',
152                                    'sunpinyin_imengine_setup.so')
153
154     locale_targets = []
155     for locale in locales:
156         path = env['DATADIR'] + '/locale/%s/LC_MESSAGES/%s.mo' % \
157             (locale, gettext_package)
158         locale_targets.append(env.InstallAs(path, 'po/%s.mo' % (locale,)))
159
160     env.Alias('install-libexec', [imengine_target, imsetup_target])
161     env.Alias('install-data', [icons_target])
162     env.Alias('install-locale', locale_targets)
163
164 DoInstall()
165 env.Alias('install', ['install-libexec', 'install-data', 'install-locale'])