1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
import os
sources = ['ic.c',
'ic_gtk.c',
'ic_skin.c',
'skin.c',
'ui.c',
'main.c',
'settings.c',
'sunpinyin_preedit.cc',
'sunpinyin_preedit_gtk.cc',
'sunpinyin_preedit_skin.cc',
'xim.c',
'xim_trigger.c',
'xmisc.c']
preferences_sources = ['preferences.c',
'settings.c',
'xmisc.c']
imdkit_sources = ['IMdkit/FrameMgr.c',
'IMdkit/i18nAttr.c',
'IMdkit/i18nClbk.c',
'IMdkit/i18nIc.c',
'IMdkit/i18nIMProto.c',
'IMdkit/i18nMethod.c',
'IMdkit/i18nPtHdr.c',
'IMdkit/i18nUtil.c',
'IMdkit/i18nX.c',
'IMdkit/IMConn.c',
'IMdkit/IMMethod.c',
'IMdkit/IMValues.c']
cflags='-O2 -g -pipe '
# options
AddOption('--prefix', dest='prefix', type='string', nargs=1, action='store',
metavar='DIR', help='installation prefix')
AddOption('--rpath', dest='rpath', type='string', nargs=1, action='store',
metavar='DIR', help='encode rpath in the executables')
# save the options
opts = Variables('configure.conf')
opts.Add('PREFIX', default='/usr/local')
def PassVariables(envvar, env):
for (x, y) in envvar:
if x in os.environ:
print('Warning: you\'ve set %s in the environmental variable!' % x)
env.MergeFlags(os.environ[x])
env = Environment(ENV=os.environ,
CFLAGS=cflags, CXXFLAGS=cflags,
CPPPATH=['.', 'IMdkit'])
opts.Update(env)
if GetOption('prefix') is not None:
env['PREFIX'] = GetOption('prefix')
opts.Save('configure.conf', env)
envvar = [('CC', 'CC'),
('CXX', 'CXX'),
('AR', 'AR'),
('RANLIB', 'RANLIB'),
('CFLAGS', 'CFLAGS'),
('CXXFLAGS', 'CXXFLAGS'),
('LDFLAGS', 'LINKFLAGS')]
PassVariables(envvar, env)
bin_dir = env['PREFIX'] + '/bin'
data_dir = '%s/share/xsunpinyin/' % env['PREFIX']
icon_dir = data_dir + 'icons/'
extra_cflags = ' -DSUNPINYIN_XIM_ICON_DIR=\\"%s\\"' % icon_dir
extra_cflags += ' -DSUNPINYIN_XIM_SETTING_DIR=\\"%s\\"' % data_dir
env.Append(CFLAGS=extra_cflags)
env.Append(CXXFLAGS=extra_cflags)
env.Append(LINKFLAGS=['-export-dynamic'])
# set rpath
if GetOption('rpath') is not None:
env.Append(LINKFLAGS=['-Wl,-R', '-Wl,%s' % GetOption('rpath')])
#
#==============================configure================================
#
def CheckPKGConfig(context, version='0.12.0'):
context.Message( 'Checking for pkg-config... ' )
ret = context.TryAction('pkg-config --atleast-pkgconfig-version=%s' % version)[0]
context.Result(ret)
return ret
def CheckPKG(context, name):
context.Message( 'Checking for %s... ' % name )
ret = context.TryAction('pkg-config --exists \'%s\'' % name)[0]
context.Result(ret)
return ret
conf = Configure(env, custom_tests={'CheckPKGConfig' : CheckPKGConfig,
'CheckPKG' : CheckPKG })
def DoConfigure():
if GetOption('clean'):
return
if not conf.CheckPKGConfig():
Exit(1)
if not conf.CheckPKG('gtk+-2.0'):
Exit(1)
if not conf.CheckPKG('x11'):
Exit(1)
if not conf.CheckPKG('sunpinyin-2.0'):
Exit(1)
env = conf.Finish()
env.ParseConfig('pkg-config gtk+-2.0 x11 sunpinyin-2.0 --libs --cflags')
DoConfigure()
env.Append(LIBS=env.Library('IMdkit', source=imdkit_sources))
env.Program('xsunpinyin', source=sources)
env.Program('xsunpinyin-preferences', source=preferences_sources)
def DoInstall():
bin_target = env.Install(bin_dir,
['xsunpinyin', 'xsunpinyin-preferences'])
icon_target = env.Install(icon_dir,
['data/chnpunc.png',
'data/han.png',
'data/eng.png',
'data/han.svg',
'data/eng.svg',
'data/engpunc.png',
'data/full.png',
'data/half.png',
'data/sunpinyin-logo-big.png',
'data/sunpinyin-logo.png'])
data_target = env.Install(data_dir, ['data/settings_ui.xml'])
data_target += env.Install(data_dir + 'skins/', Glob('data/skins/*'))
env.Alias('install-bin', bin_target)
env.Alias('install-data', [icon_target, data_target])
DoInstall()
env.Alias('install', ['install-bin', 'install-data'])
|