3 sources = ['src/debug.cpp',
5 'src/ibus_portable.cpp',
6 'src/imi_ibus_win.cpp',
8 'src/sunpinyin_config.cpp',
9 'src/sunpinyin_engine.cpp',
10 'src/sunpinyin_engine_proxy.cpp',
11 'src/sunpinyin_lookup_table.cpp',
12 'src/sunpinyin_property.cpp']
16 cflags = '-O2 -g -pipe '
19 AddOption('--prefix', dest='prefix', metavar='DIR',
20 help='installation prefix')
21 AddOption('--libdir', dest='libdir', metavar='DIR',
22 help='installation libdir')
23 AddOption('--libexecdir', dest='libexecdir', metavar='DIR',
24 help='installation libexecdir')
25 AddOption('--datadir', dest='datadir', metavar='DIR',
26 help='installation datadir')
27 AddOption('--rpath', dest='rpath', metavar='DIR',
28 help='encode rpath in the executables')
30 opts = Variables('configure.conf')
31 opts.Add('PREFIX', default='/usr/local')
32 opts.Add('LIBDIR', default='/usr/local/lib')
33 opts.Add('LIBEXECDIR', default='/usr/local/lib')
34 opts.Add('DATADIR', default='/usr/local/share')
36 def PassVariables(envvar, env):
39 print 'Warning: you\'ve set %s in the environmental variable!' % x
40 env[y] = os.environ[x]
42 env = Environment(ENV=os.environ,
43 CFLAGS=cflags, CXXFLAGS=cflags,
45 tools=['default', 'textfile'])
48 if GetOption('prefix') is not None:
49 env['PREFIX'] = GetOption('prefix')
50 env['LIBDIR'] = env['PREFIX'] + '/lib'
51 env['LIBEXECDIR'] = env['PREFIX'] + '/lib/'
52 env['DATADIR'] = env['PREFIX'] + '/share/'
54 if GetOption('libdir') is not None:
55 env['LIBDIR'] = GetOption('libdir')
57 if GetOption('libexecdir') is not None:
58 env['LIBEXECDIR'] = GetOption('libexecdir')
60 if GetOption('datadir') is not None:
61 env['DATADIR'] = GetOption('datadir')
63 opts.Save('configure.conf', env)
65 envvar = [('CC', 'CC'),
68 ('CXXFLAGS', 'CXXFLAGS'),
69 ('LDFLAGS', 'LINKFLAGS')]
70 PassVariables(envvar, env)
72 data_dir = env['DATADIR'] + '/ibus-sunpinyin'
73 icons_dir = env['DATADIR'] + '/ibus-sunpinyin/icons'
74 bin_dir = env['LIBEXECDIR'] + '/ibus-sunpinyin'
75 gettext_package = 'ibus-sunpinyin'
77 extra_cflags = ' -DIBUS_SUNPINYIN_LOCALEDIR=\'"%s"\'' % (env['DATADIR'] + '/locale')
78 extra_cflags += ' -DIBUS_SUNPINYIN_ICON_DIR=\'"%s"\'' % icons_dir
79 extra_cflags += ' -DLIBEXECDIR=\'"%s"\'' % bin_dir
80 extra_cflags += ' -DGETTEXT_PACKAGE=\'"%s"\'' % gettext_package
82 env.Append(CFLAGS=extra_cflags)
83 env.Append(CXXFLAGS=extra_cflags)
85 if GetOption('rpath') is not None:
86 env.Append(LINKFLAGS=' -Wl,-R -Wl,%s' % GetOption('rpath'))
89 #==============================configure================================
91 def CheckPKGConfig(context, version='0.12.0'):
92 context.Message( 'Checking for pkg-config... ' )
93 ret = context.TryAction('pkg-config --atleast-pkgconfig-version=%s' % version)[0]
97 def CheckPKG(context, name):
98 context.Message( 'Checking for %s... ' % name )
99 ret = context.TryAction('pkg-config --exists \'%s\'' % name)[0]
103 conf = Configure(env, custom_tests={'CheckPKGConfig' : CheckPKGConfig,
104 'CheckPKG' : CheckPKG })
107 if GetOption('clean'):
110 if not conf.CheckPKGConfig():
113 if not conf.CheckPKG('ibus-1.0'):
116 if not conf.CheckPKG('sunpinyin-2.0'):
119 env.ParseConfig('pkg-config ibus-1.0 sunpinyin-2.0 --libs --cflags')
123 env.Program('ibus-engine-sunpinyin', source=sources)
124 for locale in locales:
125 mo = 'po/%s.mo' % (locale,)
126 env.Command(mo, [], 'msgfmt po/%s.po -o %s' % (locale, mo))
128 sub = {'@LIBEXEC_DIR@': bin_dir,
129 '@DATA_DIR@' : data_dir,
130 '@ICON_DIR@': icons_dir,
131 '@VERSION@' : version,
132 '@INSTALL_PREFIX@': env['PREFIX']}
133 env.Substfile('data/sunpinyin.xml.in', SUBST_DICT=sub)
134 env.Substfile('setup/config.py.in', SUBST_DICT=sub)
135 env.Substfile('setup/ibus-setup-sunpinyin.in', SUBST_DICT=sub)
138 #==============================install================================
141 libexec_target = env.Install(bin_dir, ['ibus-engine-sunpinyin',
142 'setup/ibus-setup-sunpinyin'])
143 for exec_bin in libexec_target:
144 env.AddPostAction(exec_bin, Chmod(str(exec_bin), 0755))
146 setup_target = env.Install(data_dir + '/setup',
150 icons_target = env.Install(icons_dir,
154 'icons/fullwidth.svg',
155 'icons/halfwidth.svg',
158 'icons/sunpinyin-logo.png'])
159 component_target = env.Install(env['DATADIR'] + '/ibus/component',
160 'data/sunpinyin.xml')
162 for locale in locales:
163 path = env['DATADIR'] + '/locale/%s/LC_MESSAGES/%s.mo' % \
164 (locale, gettext_package)
165 locale_targets.append(env.InstallAs(path, 'po/%s.mo' % (locale,)))
167 env.Alias('install-libexec', [libexec_target, setup_target])
168 env.Alias('install-data', [icons_target, component_target])
169 env.Alias('install-locale', locale_targets)
172 env.Alias('install', ['install-libexec', 'install-data', 'install-locale'])