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('scim-gtkutils'):
114 env.ParseConfig('pkg-config scim sunpinyin-2.0 scim-gtkutils --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'])