2
import SCons.Tool.textfile
6
cflags = '-O2 -g -pipe '
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')
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')
26
def PassVariables(envvar, env):
29
print 'Warning: you\'ve set %s in the environmental variable!' % x
30
env[y] = os.environ[x]
32
env = Environment(ENV=os.environ,
33
CFLAGS=cflags, CXXFLAGS=cflags,
34
CPPPATH=['.'], SUBSTFILESUFFIX='.in')
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/'
43
if GetOption('libdir') is not None:
44
env['LIBDIR'] = GetOption('libdir')
46
if GetOption('libexecdir') is not None:
47
env['LIBEXECDIR'] = GetOption('libexecdir')
49
if GetOption('datadir') is not None:
50
env['DATADIR'] = GetOption('datadir')
52
opts.Save('configure.conf', env)
54
envvar = [('CC', 'CC'),
57
('CXXFLAGS', 'CXXFLAGS'),
58
('LDFLAGS', 'LINKFLAGS')]
59
PassVariables(envvar, env)
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'
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'
72
env.Append(CFLAGS=extra_cflags)
73
env.Append(CXXFLAGS=extra_cflags)
74
env.Replace(SHLIBPREFIX = '')
76
if GetOption('rpath') is not None:
77
env.Append(LINKFLAGS=' -Wl,-R -Wl,%s' % GetOption('rpath'))
80
#==============================configure================================
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]
88
def CheckPKG(context, name):
89
context.Message( 'Checking for %s... ' % name )
90
ret = context.TryAction('pkg-config --exists \'%s\'' % name)[0]
94
conf = Configure(env, custom_tests={'CheckPKGConfig' : CheckPKGConfig,
95
'CheckPKG' : CheckPKG })
98
if GetOption('clean'):
101
if not conf.CheckPKGConfig():
104
if not conf.CheckPKG('scim'):
107
if not conf.CheckPKG('sunpinyin-2.0'):
110
if not conf.CheckPKG('gtk+-2.0'):
114
env.ParseConfig('pkg-config scim sunpinyin-2.0 gtk+-2.0 --libs --cflags')
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()
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)
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))
138
#==============================install================================
142
os.system('chmod 0644 ' + lib_sunpinyin_imengine_setup_target + '.so')
143
os.system('chmod 0644 ' + lib_sunpinyin_imengine_target + '.so')
145
icons_target = env.Install(scim_icondir,
146
['data/sunpinyin_logo.png'])
148
imengine_target = env.Install(scim_moduledir + '/IMEngine',
149
'sunpinyin_imengine.so')
151
imsetup_target = env.Install(scim_moduledir + '/SetupUI',
152
'sunpinyin_imengine_setup.so')
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,)))
160
env.Alias('install-libexec', [imengine_target, imsetup_target])
161
env.Alias('install-data', [icons_target])
162
env.Alias('install-locale', locale_targets)
165
env.Alias('install', ['install-libexec', 'install-data', 'install-locale'])