summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-11-27 22:58:41 -0600
committerSlávek Banko <slavek.banko@axis.cz>2012-07-29 19:24:39 +0200
commitdc2be33dfc5b7bd9baae835949858ab39be8c89b (patch)
treeedd544529c9092a6c82eab6add45305e96e2b6f3
parentb163211001db812c1e19afa9fa89cbc251132221 (diff)
downloadabakus-dc2be33dfc5b7bd9baae835949858ab39be8c89b.tar.gz
abakus-dc2be33dfc5b7bd9baae835949858ab39be8c89b.zip
Cleanup
(cherry picked from commit f7fa09d48f7f1d6e271ddf9a6d8e7da9a3545e9f)
-rw-r--r--SConstruct36
-rw-r--r--bksys/abakus.py178
-rw-r--r--bksys/generic.py498
-rw-r--r--bksys/help.py43
-rw-r--r--bksys/kde.py826
-rw-r--r--bksys/scons-mini.tar.bz2bin58132 -> 0 bytes
-rw-r--r--src/CMakeLists.txt4
-rw-r--r--src/SConscript88
8 files changed, 2 insertions, 1671 deletions
diff --git a/SConstruct b/SConstruct
deleted file mode 100644
index a4a2438..0000000
--- a/SConstruct
+++ /dev/null
@@ -1,36 +0,0 @@
-#! /usr/bin/env python
-
-###################################################################
-# LOAD THE ENVIRONMENT AND SET UP THE TOOLS
-###################################################################
-
-## Load the builders in config
-tools = [ 'default', 'help', 'generic', 'kde', 'abakus' ]
-toolpath = [ './', './bksys' ]
-
-# Required as part of SCons
-env = Environment(tools = tools, toolpath = toolpath)
-
-# Pull in some default settings.
-env.KDEuse("environ rpath nohelp")
-#env.KDEuse("environ rpath lang_qt thread nohelp")
-
-# If we're asking for help just go ahead and exit now.
-if env['HELP']:
- print env.helpText()
- Exit()
-
-if env['flex'] and env['bison']:
- env['PARSER_INCLUDED'] = True
-
-# Export the environment so that SConscript files in subdirs can access it.
-Export('env')
-
-###################################################################
-# SCRIPTS FOR BUILDING THE TARGETS
-###################################################################
-
-env.subdirs('src')
-
-env.docfolder('doc/en', 'en', 'abakus/')
-env.SConscript('doc/en/SConscript')
diff --git a/bksys/abakus.py b/bksys/abakus.py
deleted file mode 100644
index 7b6a20c..0000000
--- a/bksys/abakus.py
+++ /dev/null
@@ -1,178 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Run scons -h to display the associated help, or look below ..
-"""
-
-BOLD ="\033[1m"
-RED ="\033[91m"
-GREEN ="\033[92m"
-YELLOW ="\033[1m" #"\033[93m" # unreadable on white backgrounds
-CYAN ="\033[96m"
-NORMAL ="\033[0m"
-
-def exists(env):
- return true
-
-def printColorCoded(msg):
- msg = msg.replace(']', NORMAL)
- msg = msg.replace('b[', BOLD)
- msg = msg.replace('g[', GREEN)
- msg = msg.replace('r[', RED)
- msg = msg.replace('c[', CYAN)
- msg = msg.replace('y[', YELLOW)
-
- print msg
-
-def generate(env):
- import SCons.Util, os
-
- env.addHelpText("""b[hi]
-b[*** abakus options ***
-----------------------]
-b[* bison=(no|yes): Enable parser support. Only needed for developers.
-b[* flex=(no|yes): Enable lexer support. Only needed for developers.
-b[* mpfr=(no|yes|check): Enable the MPFR library, which is faster and more
- precise than abakus's high-precision code.
-
-ie: b[scons configure]
-""")
-
- if env['HELP']:
- # Don't even bother.
- return env
-
- from SCons.Options import Options, PackageOption, EnumOption
- import os
-
- def CheckFlags(context):
- context.Message('Checking if ld supports --as-needed... ')
- lastLINKFLAGS = context.env['LINKFLAGS']
- context.env.Append(LINKFLAGS = '-Wl,--as-needed')
-
- ret = context.TryLink("""
-#include <iostream>
-using namespace std;
-int main()
-{
- cout << "Test" << endl;
-}
-""", ".cpp")
- if not ret:
- context.env.Replace(LINKFLAGS = lastLINKFLAGS)
- context.Result(ret)
- return ret
-
- def CheckPath(context, prog, versionFlag = ''):
- if context.env[prog] == 'yes':
- context.env[prog] = prog
-
- context.Message('Checking for %s... ' % prog)
-
- ret = True
-
- # If absolute path, just try this one.
- if prog[0] == '/':
- ret = context.TryAction('%s %s' % (context.env[prog], versionFlag))[0]
- if ret:
- context.Result(ret)
- return True
-
- path = context.env.WhereIs(prog)
- if ret and path != None:
- context.env[prog] = path
- context.Result(1)
- else:
- context.env[prog] = False
- context.Result(0)
-
- print """
-The $foo program was not found! You asked to use it so we will stop here. It
-is not required, you may use $foo=no on the command line to go without it.""".replace('$foo', prog)
-
- Exit(1)
-
- return False
-
- context.Result(1)
- return True
-
- cachefile = env['CACHEDIR'] + '/abakus.cache.py'
-
- fixup = lambda x: "%s installed here (yes = search)" % x
-
- opts = None
- if env.doConfigure():
- opts = Options(None, env['ARGS'])
- else:
- opts = Options(cachefile, env['ARGS'])
-
- opts.AddOptions(
- PackageOption('bison', fixup('use the Bison parser generator'), 'yes'),
- PackageOption('flex', fixup('use the Flex scanner generator'), 'yes'),
- EnumOption ('mpfr', 'use the MPFR high-precision library', 'check',
- allowed_values=('yes', 'no', 'check'), map={}, ignorecase=1),
- ('ABAKUS_CONFIGURED', '', 0),
- ('HAVE_ASNEEDED', '', 0)
- )
-
- # We must manually pass the ARGS in.
- opts.Update(env, env['ARGS'])
-
- if env.doConfigure() or not env['ABAKUS_CONFIGURED']:
- # Configure stuff
- conf = env.Configure(custom_tests = {'CheckPath': CheckPath, 'CheckFlags' : CheckFlags})
-
- if env['bison'] and env['bison'] != 'no':
- conf.CheckPath('bison', '-V')
- if env['flex'] and env['flex'] != 'no':
- conf.CheckPath('flex', '-V')
- if env['mpfr'] != 'no':
- oldLibs = conf.env.get('LIBS', '')
- conf.env.AppendUnique(LIBS = 'gmp')
-
- if conf.CheckLibWithHeader('mpfr', 'mpfr.h', 'c++', '''
-mpfr_t a;
-mpfr_ptr ptr;
-__mpfr_struct debug;
-
-mpfr_init(a);
-''', autoadd = True):
- env['mpfr'] = 'yes'
- else:
- conf.env.Replace(LIBS = oldLibs)
-
- if env['mpfr'] == 'yes':
- print "Unable to find requested library mpfr!"
- env.Exit(1)
- else:
- env['mpfr'] = 'no'
-
- env['HAVE_ASNEEDED'] = 0
- if conf.CheckFlags():
- env['HAVE_ASNEEDED'] = 1
-
- env['ABAKUS_CONFIGURED'] = 1
- env = conf.Finish()
-
- try:
- f = open("config.h", "w+")
- f.write("""/* config.h -- Automatically generated by abakus.py
- * Any changes you make to this file will be overwritten!
- */
-
-""")
- f.write("/* HAVE_MPFR -- Defined if the MPFR library is being used. */\n")
- if env['mpfr'] == 'yes':
- f.write ("#define HAVE_MPFR 1\n")
- else:
- f.write ("/* #undef HAVE_MPFR */\n")
-
- f.close()
-
- except IOError:
- print "Unable to write config.h!"
-
- opts.Save(cachefile, env)
-
-# vim: set et ts=8 sw=4:
diff --git a/bksys/generic.py b/bksys/generic.py
deleted file mode 100644
index 580cbd5..0000000
--- a/bksys/generic.py
+++ /dev/null
@@ -1,498 +0,0 @@
-## Thomas Nagy, 2005
-
-"""
-Detect and store the most common options
-* kdecxxflags : debug=1 (-g) or debug=full (-g3, slower)
- else use the user CXXFLAGS if any, - or -O2 by default
-* prefix : the installation path
-* extraincludes : a list of paths separated by ':'
-ie: scons configure debug=full prefix=/usr/local extraincludes=/tmp/include:/usr/local
-"""
-
-BOLD ="\033[1m"
-RED ="\033[91m"
-GREEN ="\033[92m"
-YELLOW ="\033[1m" #"\033[93m" # unreadable on white backgrounds
-CYAN ="\033[96m"
-NORMAL ="\033[0m"
-
-import os, re, types, sys, string, shutil, stat
-
-import SCons.Defaults
-import SCons.Tool
-import SCons.Util
-from SCons.Script.SConscript import SConsEnvironment
-from SCons.Options import Options, PathOption
-
-class genobj:
- def __init__(self, val, env):
- if not val in "program shlib kioslave staticlib".split():
- print "unknown genobj given: "+val
- env.Exit(1)
-
- self.type = val
- self.orenv = env
- self.env = None
- self.executed = 0
-
- self.target=''
- self.src=None
-
- self.cxxflags=''
- self.cflags=''
- self.includes=''
-
- self.linkflags=''
- self.libpaths=''
- self.libs=''
-
- # vars used by shlibs
- self.vnum=''
- self.libprefix=''
-
- # a directory where to install the targets (optional)
- self.instdir=''
- # ignore the DESTDIR (optional)
- self.nodestdir=''
-
- # change the working directory before reading the targets
- self.chdir=''
-
- # these members are private
- self.chdir_lock=None
- self.old_os_dir=''
- self.old_fs_dir=''
- self.p_local_shlibs=[]
- self.p_local_staticlibs=[]
- self.p_global_shlibs=[]
-
- #if not env.has_key('USE_THE_FORCE_LUKE'): env['USE_THE_FORCE_LUKE']=[self]
- #else: env['USE_THE_FORCE_LUKE'].append(self)
-
- def lockchdir(self):
- if not self.chdir: return
- self.chdir_lock=1
- SConfFS=SCons.Node.FS.default_fs
- self.old_fs_dir=SConfFS.getcwd()
- self.old_os_dir=os.getcwd()
- #os.chdir(old_os_dir+'/'+self.chdir)
- SConfFS.chdir( SConfFS.Dir('#/'+self.chdir), change_os_dir=1)
-
- def unlockchdir(self):
- if not self.chdir: return
- if self.chdir_lock:
- #os.chdir(self.old_os_dir)
- SCons.Node.FS.default_fs.chdir(self.old_fs_dir, change_os_dir=0)
- self.chdir_lock=None
-
- def execute(self):
- if self.orenv.has_key('DUMPCONFIG'):
- print self.xml()
- return
-
- self.lockchdir()
-
- self.env = self.orenv.Copy()
-
- if not self.src or len(self.src) == 0:
- print RED+"no source file given to object - self.src"+NORMAL
- self.env.Exit(1)
- if not self.env.has_key('nosmart_includes'): self.env.AppendUnique(CPPPATH=['./'])
- if self.type == "kioslave": self.libprefix=''
-
- if len(self.includes)>0: self.env.AppendUnique(CPPPATH=self.env.make_list(self.includes))
- if len(self.cxxflags)>0: self.env.AppendUnique(CXXFLAGS=self.env.make_list(self.cxxflags))
- if len(self.cflags)>0: self.env.AppendUnique(CCFLAGS=self.env.make_list(self.cflags))
-
- llist=self.env.make_list(self.libs)
- lext='.so .la'.split()
- sext='.a'.split()
- for l in llist:
- sal=SCons.Util.splitext(l)
- if len(sal)>1:
- if sal[1] in lext: self.p_local_shlibs.append(sal[0]+'.so')
- elif sal[1] in sext: self.p_local_staticlibs.append(sal[0]+'.a')
- else: self.p_global_shlibs.append(l)
-
- if len(self.p_global_shlibs)>0: self.env.AppendUnique(LIBS=self.p_global_shlibs)
- if len(self.libpaths)>0: self.env.PrependUnique(LIBPATH=self.env.make_list(self.libpaths))
- if len(self.linkflags)>0: self.env.PrependUnique(LINKFLAGS=self.env.make_list(self.linkflags))
-
- # the target to return
- ret=None
- if self.type=='shlib' or self.type=='kioslave':
- ret=self.env.bksys_shlib(self.target, self.src, self.instdir,
- self.libprefix, self.vnum, nodestdir=self.nodestdir)
- elif self.type=='program':
- ret=self.env.Program(self.target, self.src)
- if not self.env.has_key('NOAUTOINSTALL'):
- self.env.bksys_install(self.instdir, ret, nodestdir=self.nodestdir)
- elif self.type=='staticlib':
- ret=self.env.StaticLibrary(self.target, self.src)
-
- # we link the program against a shared library made locally, add the dependency
- if len(self.p_local_shlibs)>0:
- self.env.link_local_shlib(self.p_local_shlibs)
- if ret: self.env.Depends( ret, self.p_local_shlibs )
- if len(self.p_local_staticlibs)>0:
- self.env.link_local_staticlib(self.p_local_staticlibs)
- if ret: self.env.Depends( ret, self.p_local_staticlibs )
-
- self.unlockchdir()
-
-## Copy function that honors symlinks
-def copy_bksys(dest, source, env):
- if os.path.islink(source):
- #print "symlinking "+source+" "+dest
- if os.path.islink(dest):
- os.unlink(dest)
- os.symlink(os.readlink(source), dest)
- else:
- shutil.copy2(source, dest)
- st=os.stat(source)
- os.chmod(dest, stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE)
- return 0
-
-## Return a list of things
-def make_list(env, s):
- if type(s) is types.ListType:
- return s
- else:
- return s.split()
-
-def exists(env):
- return true
-
-def generate(env):
- ## Bksys requires scons 0.96
- env.EnsureSConsVersion(0, 96)
-
- SConsEnvironment.make_list = make_list
- def doConfigure(env):
- return not env['HELP'] and (env['_CONFIGURE'] or not env.has_key('ISCONFIGURED'))
-
- SConsEnvironment.doConfigure = doConfigure
- env['HELP']=0
- if '--help' in sys.argv or '-h' in sys.argv or 'help' in sys.argv:
- env['HELP']=1
-
- env.addHelpText("""
-b[*** Generic options ***
------------------------]
-b[* debug ]: debug=1 (-g) or debug=full (-g3, slower), otherwise use
- environment CXXFLAGS, or -O2 by default.
-b[* prefix ]: the installation path
-b[* extraincludes ]: a list of paths separated by ':'
-
-ie: b[scons configure debug=full prefix=/usr/local extraincludes=/tmp/include:/usr/local]
-""")
-
- ## Global cache directory
- # Put all project files in it so a rm -rf cache will clean up the config
- if not env.has_key('CACHEDIR'):
- env['CACHEDIR'] = os.getcwd()+'/cache/'
- if not os.path.isdir(env['CACHEDIR']):
- os.mkdir(env['CACHEDIR'])
-
- ## SCons cache directory
- # This avoids recompiling the same files over and over again:
- # very handy when working with cvs
- if os.getuid() != 0:
- env.CacheDir(os.getcwd()+'/cache/objects')
-
- # Avoid spreading .sconsign files everywhere - keep this line
- env.SConsignFile(env['CACHEDIR']+'/scons_signatures')
-
- def makeHashTable(args):
- table = { }
- for arg in args:
- if len(arg) > 1:
- lst=arg.split('=')
- if len(lst) < 2:
- continue
- key=lst[0]
- value=lst[1]
- if len(key) > 0 and len(value) >0:
- table[key] = value
- return table
-
- env['ARGS']=makeHashTable(sys.argv)
-
- ## Special trick for installing rpms ...
- env['DESTDIR']=''
- if 'install' in sys.argv:
- dd=''
- if os.environ.has_key('DESTDIR'):
- dd=os.environ['DESTDIR']
- if not dd:
- if env['ARGS']: dd=env['ARGS']['DESTDIR']
- if dd:
- env['DESTDIR']=dd+'/'
- print CYAN+'** Enabling DESTDIR for the project ** ' + NORMAL + env['DESTDIR']
-
- ## install symlinks for shared libraries properly
- env['INSTALL'] = copy_bksys
-
- ## Use the same extension .o for all object files
- env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
-
- ## load the options
- cachefile=env['CACHEDIR']+'generic.cache.py'
- opts = Options(cachefile)
- opts.AddOptions(
- ( 'GENCCFLAGS', 'C flags' ),
- ( 'GENCXXFLAGS', 'debug level for the project : full or just anything' ),
- ( 'GENLINKFLAGS', 'additional link flags' ),
- ( 'PREFIX', 'prefix for installation' ),
- ( 'EXTRAINCLUDES', 'extra include paths for the project' ),
- ( 'ISCONFIGURED', 'is the project configured' ),
- )
- opts.Update(env)
-
- # Use this to avoid an error message 'how to make target configure ?'
- env.Alias('configure', None)
-
- # Check if the following command line arguments have been given
- # and set a flag in the environment to show whether or not it was
- # given.
- if 'install' in sys.argv:
- env['_INSTALL']=1
- else:
- env['_INSTALL']=0
- if 'configure' in sys.argv:
- env['_CONFIGURE']=1
- else:
- env['_CONFIGURE']=0
-
- # Configure the environment if needed
- if doConfigure(env):
- # be paranoid, unset existing variables
- for var in "GENCXXFLAGS GENCCFLAGS GENLINKFLAGS PREFIX EXTRAINCLUDES ISCONFIGURED EXTRAINCLUDES".split():
- if env.has_key(var): env.__delitem__(var)
-
- if env['ARGS'].get('debug', None):
- debuglevel = env['ARGS'].get('debug', None)
- print CYAN+'** Enabling debug for the project **' + NORMAL
- if (debuglevel == "full"):
- env['GENCXXFLAGS'] = ['-DDEBUG', '-g3', '-Wall']
- else:
- env['GENCXXFLAGS'] = ['-DDEBUG', '-g', '-Wall']
- else:
- if os.environ.has_key('CXXFLAGS'):
- # user-defined flags (gentooers will be elighted)
- env['GENCXXFLAGS'] = SCons.Util.CLVar( os.environ['CXXFLAGS'] )
- env.Append( GENCXXFLAGS = ['-DNDEBUG', '-DNO_DEBUG'] )
- else:
- env.Append(GENCXXFLAGS = ['-O2', '-DNDEBUG', '-DNO_DEBUG'])
-
- if os.environ.has_key('CFLAGS'):
- env['GENCCFLAGS'] = SCons.Util.CLVar( os.environ['CFLAGS'] )
-
- ## FreeBSD settings (contributed by will at freebsd dot org)
- if os.uname()[0] == "FreeBSD":
- if os.environ.has_key('PTHREAD_LIBS'):
- env.AppendUnique( GENLINKFLAGS = SCons.Util.CLVar( os.environ['PTHREAD_LIBS'] ) )
- else:
- syspf = os.popen('/sbin/sysctl kern.osreldate')
- osreldate = int(syspf.read().split()[1])
- syspf.close()
- if osreldate < 500016:
- env.AppendUnique( GENLINKFLAGS = ['-pthread'])
- env.AppendUnique( GENCXXFLAGS = ['-D_THREAD_SAFE'])
- elif osreldate < 502102:
- env.AppendUnique( GENLINKFLAGS = ['-lc_r'])
- env.AppendUnique( GENCXXFLAGS = ['-D_THREAD_SAFE'])
- else:
- env.AppendUnique( GENLINKFLAGS = ['-pthread'])
-
- # User-specified prefix
- if env['ARGS'].has_key('prefix'):
- env['PREFIX'] = os.path.abspath( env['ARGS'].get('prefix', '') )
- print (CYAN+'** installation prefix for the project set to : ' +
- env['PREFIX'] +' **'+ NORMAL)
-
- # User-specified include paths
- env['EXTRAINCLUDES'] = env['ARGS'].get('extraincludes', None)
- if env['EXTRAINCLUDES']:
- print (CYAN+'** extra include paths for the project set to: ' +
- env['EXTRAINCLUDES'] +' **'+ NORMAL)
-
- env['ISCONFIGURED']=1
-
- # And finally save the options in the cache
- opts.Save(cachefile, env)
-
- def bksys_install(lenv, subdir, files, destfile=None, nodestdir=None):
- """ Install files on "scons install"
- If the DESTDIR env variable has been set, (e.g. by
- "scons install DESTDIR=$CURDIR/debian) then install files to that
- directory, regardless of where the configure stage showed that
- files should be installed.
- This feature is useful for packagers, and users of GNU stow.
-
- NB. The DESTDIR will be ignored if NODESTDIR is also set, although
- the same effect can be acheived by not setting DESTDIR in the first
- place."""
-
- if not env['_INSTALL']:
- return
- basedir = env['DESTDIR']
- if nodestdir or env.has_key('NODESTDIR') : basedir = "/"
- install_list = None
- if not destfile:
- install_list = env.Install(basedir+subdir+'/', files)
- else:
- if subdir:
- install_list = env.InstallAs(basedir+subdir+'/'+destfile, files)
- else:
- install_list = env.InstallAs(basedir+'/'+destfile, files)
- env.Alias('install', install_list)
- return install_list
-
- def build_la_file(target, source, env):
- """ Action for building libtool files.
- Writes a .la file, as used by libtool."""
- dest=open(target[0].path, 'w')
- sname=source[0].name
- dest.write("dlname='%s'\n" % sname)
- if len(env['BKSYS_VNUM'])>0:
- vnum=env['BKSYS_VNUM']
- nums=vnum.split('.')
- src=source[0].name
- name = src.split('so.')[0] + 'so'
- strn = src+" "+name+"."+str(nums[0])+" "+name
- dest.write("library_names='%s'\n" % (strn) )
- else:
- dest.write("library_names='%s %s %s'\n" % (sname, sname, sname) )
- dest.write("old_library=''\ndependency_libs=''\ncurrent=0\n")
- dest.write("age=0\nrevision=0\ninstalled=yes\nshouldnotlink=no\n")
- dest.write("dlopen=''\ndlpreopen=''\n")
- dest.write("libdir='%s'" % env['BKSYS_DESTDIR'])
- dest.close()
- return 0
-
- def string_la_file(target, source, env):
- print "building '%s' from '%s'" % (target[0].name, source[0].name)
- la_file = env.Action(build_la_file, string_la_file, ['BKSYS_VNUM', 'BKSYS_DESTDIR'])
- env['BUILDERS']['LaFile'] = env.Builder(action=la_file,suffix='.la',src_suffix=env['SHLIBSUFFIX'])
-
- ## Function for building shared libraries
- def bksys_shlib(lenv, target, source, libdir, libprefix='lib', vnum='', noinst=None, nodestdir=None):
- """ Install a shared library.
-
- Installs a shared library, with or without a version number, and create a
- .la file for use by libtool.
-
- If library version numbering is to be used, the version number
- should be passed as a period-delimited version number (e.g.
- vnum = '1.2.3'). This causes the library to be installed
- with its full version number, and with symlinks pointing to it.
-
- For example, for libfoo version 1.2.3, install the file
- libfoo.so.1.2.3, and create symlinks libfoo.so and
- libfoo.so.1 that point to it.
- """
- thisenv = lenv.Copy() # copying an existing environment is cheap
- thisenv['BKSYS_DESTDIR']=libdir
- thisenv['BKSYS_VNUM']=vnum
- thisenv['SHLIBPREFIX']=libprefix
-
- if len(vnum)>0:
- thisenv['SHLIBSUFFIX']='.so.'+vnum
- thisenv.Depends(target, thisenv.Value(vnum))
-
- # Fix against a scons bug - shared libs and ordinal out of range(128)
- if type(source) is types.ListType:
- src2=[]
- for i in source:
- src2.append( str(i) )
- source=src2
-
- library_list = thisenv.SharedLibrary(target, source)
- lafile_list = thisenv.LaFile(target, library_list)
-
- ## Install the libraries automatically
- if not thisenv.has_key('NOAUTOINSTALL') and not noinst:
- thisenv.bksys_install(libdir, library_list, nodestdir=nodestdir)
- thisenv.bksys_install(libdir, lafile_list, nodestdir=nodestdir)
-
- ## Handle the versioning
- if len(vnum)>0:
- nums=vnum.split('.')
- symlinkcom = ('cd $TARGET.dir && ' +
- 'rm -f $TARGET.name && ' +
- 'ln -s $SOURCE.name $TARGET.name')
- tg = target+'.so.'+vnum
- nm1 = target+'.so'
- nm2 = target+'.so.'+nums[0]
-
- thisenv.Command(nm1, tg, symlinkcom)
- thisenv.Command(nm2, tg, symlinkcom)
-
- #base=env['DESTDIR']+libdir+'/'
- thisenv.bksys_install(libdir, nm1, nodestdir=nodestdir)
- thisenv.bksys_install(libdir, nm2, nodestdir=nodestdir)
-
- # Declare scons scripts to process
- def subdirs(lenv, folderlist):
- flist=[]
- if type(folderlist) is types.ListType: flist = folderlist
- else: flist = folderlist.split()
- for i in flist:
- lenv.SConscript(i+"/SConscript")
-
- def link_local_shlib(lenv, str):
- """ Links against a shared library made in the project """
- lst = lenv.make_list(str)
- for file in lst:
- import re
- reg = re.compile("(.*)/lib(.*).(la|so)")
- result = reg.match(file)
- if not result:
- print "Unknown la file given "+file
- continue
- dir = result.group(1)
- link = result.group(2)
- lenv.AppendUnique(LIBS = [link])
- lenv.PrependUnique(LIBPATH = [dir])
-
- def link_local_staticlib(lenv, str):
- """ Links against a shared library made in the project """
- lst = lenv.make_list(str)
- for file in lst:
- import re
- reg = re.compile("(.*)/(lib.*.a)")
- result = reg.match(file)
- if not result:
- print "Unknown archive file given "+file
- continue
-
- f=SCons.Node.FS.default_fs.File(file)
- lenv.Append(LINKFLAGS=[f.path])
-
- #valid_targets = "program shlib kioslave staticlib".split()
- SConsEnvironment.bksys_install = bksys_install
- SConsEnvironment.bksys_shlib = bksys_shlib
- SConsEnvironment.subdirs = subdirs
- SConsEnvironment.link_local_shlib = link_local_shlib
- SConsEnvironment.link_local_staticlib = link_local_staticlib
-
- SConsEnvironment.genobj=genobj
-
- if env.has_key('GENCXXFLAGS'):
- env.PrependUnique( CXXFLAGS = env['GENCXXFLAGS'] )
-
- if env.has_key('GENCCFLAGS'):
- env.AppendUnique( CCFLAGS = env['GENCCFLAGS'] )
-
- if env.has_key('GENLINKFLAGS'):
- env.AppendUnique( LINKFLAGS = env['GENLINKFLAGS'] )
-
- if env.has_key('EXTRAINCLUDES'):
- if env['EXTRAINCLUDES']:
- incpaths = []
- for dir in str(env['EXTRAINCLUDES']).split(':'):
- incpaths.append( dir )
- env.Append(CPPPATH = incpaths)
-
- env.Export('env')
diff --git a/bksys/help.py b/bksys/help.py
deleted file mode 100644
index 5cb6281..0000000
--- a/bksys/help.py
+++ /dev/null
@@ -1,43 +0,0 @@
-## Thomas Nagy, 2005
-
-"""
-Detect and store the most common options
-* kdecxxflags : debug=1 (-g) or debug=full (-g3, slower)
- else use the user CXXFLAGS if any, - or -O2 by default
-* prefix : the installation path
-* extraincludes : a list of paths separated by ':'
-ie: scons configure debug=full prefix=/usr/local extraincludes=/tmp/include:/usr/local
-"""
-
-BOLD ="\033[1m"
-RED ="\033[91m"
-GREEN ="\033[92m"
-YELLOW ="\033[1m" #"\033[93m" # unreadable on white backgrounds
-CYAN ="\033[96m"
-NORMAL ="\033[0m"
-
-def exists(env):
- return true
-
-def generate(env):
- ## Bksys requires scons 0.96
- env.EnsureSConsVersion(0, 96)
-
- env._help = ''
-
- def addHelpText(env, text):
- env._help = env._help + text
-
- def helpText(env):
- text = env._help.replace(']', NORMAL)
- text = text.replace('b[', BOLD)
- text = text.replace('g[', GREEN)
- text = text.replace('r[', RED)
- text = text.replace('y[', YELLOW)
- text = text.replace('c[', CYAN)
-
- return text
-
- from SCons.Script.SConscript import SConsEnvironment
- SConsEnvironment.addHelpText = addHelpText
- SConsEnvironment.helpText = helpText
diff --git a/bksys/kde.py b/bksys/kde.py
deleted file mode 100644
index b0e4b04..0000000
--- a/bksys/kde.py
+++ /dev/null
@@ -1,826 +0,0 @@
-# Made from scons qt.py and (heavily) modified into kde.py
-# Thomas Nagy, 2004, 2005 <tnagy2^8@yahoo.fr>
-
-"""
-Run scons -h to display the associated help, or look below ..
-"""
-
-BOLD ="\033[1m"
-RED ="\033[91m"
-GREEN ="\033[92m"
-YELLOW ="\033[1m" #"\033[93m" # unreadable on white backgrounds
-CYAN ="\033[96m"
-NORMAL ="\033[0m"
-
-import os, re, types
-from SCons.Script.SConscript import SConsEnvironment
-
-# Returns the name of the shared object (i.e. libkdeui.so.4)
-# referenced by a libtool archive (like libkdeui.la)
-def getSOfromLA(lafile):
- contents = open(lafile, 'r').read()
- match = re.search("^dlname='([^']*)'$", contents, re.M)
- if match:
- return match.group(1)
- return None
-
-# A helper, needed .. everywhere
-def KDEuse(lenv, flags):
- if lenv['HELP']: lenv.Exit(0)
-
- _flags=lenv.make_list(flags)
- if 'environ' in _flags:
- ## The scons developers advise against using this but it is mostly innocuous :)
- lenv.AppendUnique( ENV = os.environ )
- if not 'lang_qt' in _flags:
- ## Use this define if you are using the kde translation scheme (.po files)
- lenv.Append( CPPFLAGS = '-DQT_NO_TRANSLATION' )
- if 'rpath' in _flags:
- ## Use this to set rpath - this may cause trouble if folders are moved (chrpath)
- lenv.Append( RPATH = [lenv['QTLIBPATH'], lenv['KDELIBPATH'], lenv['KDEMODULE']] )
- kdelibpaths=[]
- if lenv['KDELIBPATH'] == lenv['KDELIB']:
- kdelibpaths = [lenv['KDELIB']]
- else:
- kdelibpaths = [lenv['KDELIBPATH'], lenv['KDELIB']]
- lenv.Append( RPATH = [lenv['QTLIBPATH'], lenv['KDEMODULE']]+kdelibpaths )
- if 'thread' in _flags:
- ## Uncomment the following if you need threading support
- lenv.KDEaddflags_cxx( ['-DQT_THREAD_SUPPORT', '-D_REENTRANT'] )
- if 'fasmoc' in _flags:
- lenv['BKSYS_FASTMOC']=1
- if not 'nohelp' in _flags:
- if lenv['_CONFIGURE'] or lenv['HELP']:
- lenv.Exit(0)
- if not 'nosmart' or not lenv.has_key('nosmart_includes'):
- lenv.AppendUnique(CPPPATH=['#/'])
- lst=[]
- if lenv.has_key('USE_THE_FORCE_LUKE'):
- lst=lenv['USE_THE_FORCE_LUKE']
- lenv.__delitem__('USE_THE_FORCE_LUKE')
- for v in lst:
- v.execute()
- else:
- lenv['nosmart_includes']=1
-
- ## To use kdDebug(intvalue)<<"some trace"<<endl; you need to define -DDEBUG
- ## it is done in admin/generic.py automatically when you do scons configure debug=1
-
-def exists(env):
- return True
-
-def detect_kde(env):
- """ Detect the qt and kde environment using kde-config mostly """
- def getpath(varname):
- if not env.has_key('ARGS'): return None
- v=env['ARGS'].get(varname, None)
- if v: v=os.path.abspath(v)
- return v
-
- prefix = getpath('prefix')
- execprefix = getpath('execprefix')
- datadir = getpath('datadir')
- libdir = getpath('libdir')
- kdeincludes = getpath('kdeincludes')
- kdelibs = getpath('kdelibs')
- qtincludes = getpath('qtincludes')
- qtlibs = getpath('qtlibs')
- libsuffix = ''
- if env.has_key('ARGS'): libsuffix=env['ARGS'].get('libsuffix', '')
-
- if libdir: libdir = libdir+libsuffix
-
- ## Detect the kde libraries
- print "Checking for kde-config : ",
- kde_config = os.popen("which kde-config 2>/dev/null").read().strip()
- if len(kde_config):
- print GREEN+"kde-config was found"+NORMAL
- else:
- print RED+"kde-config was NOT found in your PATH"+NORMAL
- print "Make sure kde is installed properly"
- print "(missing package kdebase-devel?)"
- env.Exit(1)
- env['KDEDIR'] = os.popen('kde-config -prefix').read().strip()
-
- print "Checking for kde version : ",
- kde_version = os.popen("kde-config --version|grep KDE|sed 's/R//g'").read().strip().split()[1]
- print GREEN+kde_version+NORMAL
-
- ## Detect the qt library
- print "Checking for the qt library : ",
- qtdir = os.getenv("QTDIR")
- if qtdir:
- print GREEN+"qt is in "+qtdir+NORMAL
- else:
- try:
- tmplibdir = os.popen('kde-config --expandvars --install lib').read().strip()
- libkdeuiSO = tmplibdir+'/'+getSOfromLA(tmplibdir+'/libkdeui.la')
- m = re.search('(.*)/lib/libqt.*', os.popen('ldd ' + libkdeuiSO + ' | grep libqt').read().strip().split()[2])
- except:
- m=None
- if m:
- qtdir = m.group(1)
- print YELLOW+"qt was found as "+m.group(1)+NORMAL
- else:
- print RED+"qt was not found"+NORMAL
- print RED+"Please set QTDIR first (/usr/lib/qt3?) or try scons -h for more options"+NORMAL
- env.Exit(1)
- env['QTDIR'] = qtdir.strip()
-
- ## Find the necessary programs uic-tqt and moc
- print "Checking for uic-tqt : ",
- uic = qtdir + "/bin/uic-tqt"
- if os.path.isfile(uic):
- print GREEN+"uic-tqt was found as "+uic+NORMAL
- else:
- uic = os.popen("which uic-tqt 2>/dev/null").read().strip()
- if len(uic):
- print YELLOW+"uic-tqt was found as "+uic+NORMAL
- else:
- uic = os.popen("which uic-tqt 2>/dev/null").read().strip()
- if len(uic):
- print YELLOW+"uic-tqt was found as "+uic+NORMAL
- else:
- print RED+"uic-tqt was not found - set QTDIR put it in your PATH ?"+NORMAL
- env.Exit(1)
- env['QT_UIC'] = uic
-
- print "Checking for moc : ",
- moc = qtdir + "/bin/moc"
- if os.path.isfile(moc):
- print GREEN + "moc was found as " + moc + NORMAL
- else:
- moc = os.popen("which moc 2>/dev/null").read().strip()
- if len(moc):
- print YELLOW + "moc was found as " + moc + NORMAL
- elif os.path.isfile("/usr/share/tqt3/bin/moc"):
- moc = "/usr/share/tqt3/bin/moc"
- print YELLOW + "moc was found as " + moc + NORMAL
- elif os.path.isfile("/usr/share/qt3/bin/moc"):
- moc = "/usr/share/qt3/bin/moc"
- print YELLOW + "moc was found as " + moc + NORMAL
- else:
- print RED + "moc was not found - set QTDIR or put it in your PATH ?" + NORMAL
- env.Exit(1)
- env['QT_MOC'] = moc
-
- ## check for the qt and kde includes
- print "Checking for the qt includes : ",
- if qtincludes and os.path.isfile(qtincludes + "/qlayout.h"):
- # The user told where to look for and it looks valid
- print GREEN + "ok " + qtincludes + NORMAL
- else:
- if os.path.isfile(qtdir + "/include/qlayout.h"):
- # Automatic detection
- print GREEN + "ok " + qtdir + "/include/ " + NORMAL
- qtincludes = qtdir + "/include/"
- elif os.path.isfile("/usr/include/tqt3/qlayout.h"):
- # Debian probably
- print YELLOW + "the native tqt headers were found in /usr/include/tqt3/ " + NORMAL
- qtincludes = "/usr/include/tqt3"
- elif os.path.isfile("/usr/include/qt3/qlayout.h"):
- # Debian probably
- print YELLOW + "the qt headers were found in /usr/include/qt3/ " + NORMAL
- qtincludes = "/usr/include/qt3"
- elif os.path.isfile("/usr/include/qt4/Qt/qglobal.h"):
- # Debian probably
- print YELLOW + "the qt headers were found in /usr/include/qt4/ " + NORMAL
- qtincludes = "/usr/include/qt4"
- else:
- print RED + "the qt headers were not found" + NORMAL
- env.Exit(1)
-
- print "Checking for the kde includes : ",
- kdeprefix = os.popen("kde-config --prefix").read().strip()
- if not kdeincludes:
- kdeincludes = kdeprefix+"/include/"
- if os.path.isfile(kdeincludes + "/klineedit.h"):
- print GREEN + "ok " + kdeincludes + NORMAL
- else:
- if os.path.isfile(kdeprefix+"/include/kde/klineedit.h"):
- # Debian, Fedora probably
- print YELLOW + "the kde headers were found in " + kdeprefix + "/include/kde/" + NORMAL
- kdeincludes = kdeprefix + "/include/kde/"
- else:
- print RED + "The kde includes were NOT found" + NORMAL
- env.Exit(1)
-
- # kde-config options
- kdec_opts = {'KDEBIN' : 'exe', 'KDEAPPS' : 'apps',
- 'KDEDATA' : 'data', 'KDEICONS' : 'icon',
- 'KDEMODULE' : 'module', 'KDELOCALE' : 'locale',
- 'KDEKCFG' : 'kcfg', 'KDEDOC' : 'html',
- 'KDEMENU' : 'apps', 'KDEXDG' : 'xdgdata-apps',
- 'KDEMIME' : 'mime', 'KDEXDGDIR' : 'xdgdata-dirs',
- 'KDESERV' : 'services','KDESERVTYPES' : 'servicetypes',
- 'KDEINCLUDE': 'include'
- }
-
- if prefix:
- ## use the user-specified prefix
- if not execprefix:
- execprefix = prefix
- if not datadir:
- datadir=prefix+"/share"
- if not libdir:
- libdir=execprefix+"/lib"+libsuffix
-
- subst_vars = lambda x: x.replace('${exec_prefix}', execprefix)\
- .replace('${datadir}', datadir)\
- .replace('${libdir}', libdir)
- debian_fix = lambda x: x.replace('/usr/share', '${datadir}')
- env['PREFIX'] = prefix
- env['KDELIB'] = libdir
- for (var, option) in kdec_opts.items():
- dir = os.popen('kde-config --install ' + option).read().strip()
- if var == 'KDEDOC': dir = debian_fix(dir)
- env[var] = subst_vars(dir)
-
- else:
- env['PREFIX'] = os.popen('kde-config --expandvars --prefix').read().strip()
- env['KDELIB'] = os.popen('kde-config --expandvars --install lib').read().strip()
- for (var, option) in kdec_opts.items():
- dir = os.popen('kde-config --expandvars --install ' + option).read().strip()
- env[var] = dir
-
- env['QTPLUGINS']=os.popen('kde-config --expandvars --install qtplugins').read().strip()
-
- ## kde libs and includes
- env['KDEINCLUDEPATH']=kdeincludes
- if not kdelibs:
- kdelibs=os.popen('kde-config --expandvars --install lib').read().strip()
- env['KDELIBPATH']=kdelibs
-
- ## qt libs and includes
- env['QTINCLUDEPATH']=qtincludes
- if not qtlibs:
- qtlibs=qtdir+"/lib"+libsuffix
- env['QTLIBPATH']=qtlibs
-
-def generate(env):
- """"Set up the qt and kde environment and builders - the moc part is difficult to understand """
-
- # attach this function immediately
- SConsEnvironment.KDEuse = KDEuse
- env.addHelpText("""
-b[*** KDE options ***
--------------------]
-b[* prefix ]: base install path, ie: /usr/local
-b[* execprefix ]: install path for binaries, ie: /usr/bin
-b[* datadir ]: install path for the data, ie: /usr/local/share
-b[* libdir ]: install path for the libs, ie: /usr/lib
-b[* libsuffix ]: suffix of libraries on amd64, ie: 64, 32
-b[* kdeincludes]: path to the kde includes (/usr/include/kde on debian, ...)
-b[* qtincludes ]: path to the for qt includes (/usr/include/qt on debian, ...)
-b[* kdelibs ]: path to the kde libs, for linking the programs
-b[* qtlibs ]: path to the qt libs, for linking the programs
-
-ie: b[scons configure libdir=/usr/local/lib qtincludes=/usr/include/qt]
-""")
-
- import SCons.Defaults
- import SCons.Tool
- import SCons.Util
- import SCons.Node
-
- CLVar = SCons.Util.CLVar
- splitext = SCons.Util.splitext
- Builder = SCons.Builder.Builder
-
- # Detect the environment - replaces ./configure implicitely and store the options into a cache
- from SCons.Options import Options
- cachefile=env['CACHEDIR']+'kde.cache.py'
- opts = Options(cachefile)
- opts.AddOptions(
- ('PREFIX', 'root of the program installation'),
-
- ('QTDIR', ''),
- ('QTLIBPATH', 'path to the qt libraries'),
- ('QTINCLUDEPATH', 'path to the qt includes'),
- ('QT_UIC', 'uic-tqt command'),
- ('QT_MOC', 'moc command'),
- ('QTPLUGINS', 'uic-tqt executable command'),
-
- ('KDEDIR', ''),
- ('KDELIBPATH', 'path to the installed kde libs'),
- ('KDEINCLUDEPATH', 'path to the installed kde includes'),
-
- ('KDEBIN', 'inst path of the kde binaries'),
- ('KDEINCLUDE', 'inst path of the kde include files'),
- ('KDELIB', 'inst path of the kde libraries'),
- ('KDEMODULE', 'inst path of the parts and libs'),
- ('KDEDATA', 'inst path of the application data'),
- ('KDELOCALE', ''), ('KDEDOC', ''), ('KDEKCFG', ''),
- ('KDEXDG', ''), ('KDEXDGDIR', ''), ('KDEMENU', ''),
- ('KDEMIME', ''), ('KDEICONS', ''), ('KDESERV', ''),
- ('KDESERVTYPES', ''), ('KDEAPPS', ''),
- )
- opts.Update(env)
-
- def getInstDirForResType(lenv,restype):
- if len(restype) == 0 or not lenv.has_key(restype):
- print RED+"unknown resource type "+restype+NORMAL
- lenv.Exit(1)
- else:
- instdir = lenv[restype]
- basedir=lenv['DESTDIR']
- ## support for installing into other folders when PREFIX is set - used by gnu stow
- if basedir: instdir = instdir.replace(lenv['PREFIX'], basedir)
- return instdir
-
- # reconfigure when things are missing
- if not env['HELP'] and (env['_CONFIGURE'] or not env.has_key('QTDIR') or not env.has_key('KDEDIR')):
- detect_kde(env)
- opts.Save(cachefile, env)
-
- ## set default variables, one can override them in sconscript files
- env.Append(CXXFLAGS = ['-I'+env['KDEINCLUDEPATH'], '-I'+env['QTINCLUDEPATH'] ],
- LIBPATH = [env['KDELIBPATH'], env['QTLIBPATH'] ])
-
- env['QT_AUTOSCAN'] = 1
- env['QT_DEBUG'] = 0
-
- env['MEINPROC'] = 'meinproc'
- env['MSGFMT'] = 'msgfmt'
-
- ## ui file processing
- def uic_processing(target, source, env):
- inc_kde ='#include <klocale.h>\n#include <kdialog.h>\n'
- inc_moc ='#include "%s"\n' % target[2].name
- comp_h ='$QT_UIC -L $QTPLUGINS -nounload -o %s %s' % (target[0].path, source[0].path)
- comp_c ='$QT_UIC -L $QTPLUGINS -nounload -tr tr2i18n -impl %s %s' % (target[0].path, source[0].path)
- comp_moc ='$QT_MOC -o %s %s' % (target[2].path, target[0].path)
- if env.Execute(comp_h):
- return ret
- dest = open( target[1].path, "w" )
- dest.write(inc_kde)
- dest.close()
- if env.Execute( comp_c+" >> "+target[1].path ):
- return ret
- dest = open( target[1].path, "a" )
- dest.write(inc_moc)
- dest.close()
- ret = env.Execute( comp_moc )
- return ret
- def uicEmitter(target, source, env):
- adjustixes = SCons.Util.adjustixes
- bs = SCons.Util.splitext(str(source[0].name))[0]
- bs = os.path.join(str(target[0].get_dir()),bs)
- target.append(bs+'.cpp')
- target.append(bs+'.moc')
- return target, source
- env['BUILDERS']['Uic']=Builder(action=uic_processing,emitter=uicEmitter,suffix='.h',src_suffix='.ui')
-
- def kcfg_buildit(target, source, env):
- comp='kconfig_compiler -d%s %s %s' % (str(source[0].get_dir()), source[1].path, source[0].path)
- return env.Execute(comp)
- def kcfg_stringit(target, source, env):
- print "processing %s to get %s and %s" % (source[0].name, target[0].name, target[1].name)
- def kcfgEmitter(target, source, env):
- adjustixes = SCons.Util.adjustixes
- bs = SCons.Util.splitext(str(source[0].name))[0]
- bs = os.path.join(str(target[0].get_dir()),bs)
- # .h file is already there
- target.append(bs+'.cpp')
-
- if not os.path.isfile(str(source[0])):
- print RED+'kcfg file given '+str(source[0])+' does not exist !'+NORMAL
- print os.popen('pwd').read()
- return target, source
- kfcgfilename=""
- kcfgFileDeclRx = re.compile("^[fF]ile\s*=\s*(.+)\s*$")
- for line in file(str(source[0]), "r").readlines():
- match = kcfgFileDeclRx.match(line.strip())
- if match:
- kcfgfilename = match.group(1)
- break
- if not kcfgfilename:
- print 'invalid kcfgc file'
- return 0
- source.append(str(source[0].get_dir())+'/'+kcfgfilename)
- return target, source
-
- env['BUILDERS']['Kcfg']=Builder(action=env.Action(kcfg_buildit, kcfg_stringit),
- emitter=kcfgEmitter, suffix='.h', src_suffix='.kcfgc')
-
- ## MOC processing
- env['BUILDERS']['Moc']=Builder(action='$QT_MOC -o $TARGET $SOURCE',suffix='.moc',src_suffix='.h')
- env['BUILDERS']['Moccpp']=Builder(action='$QT_MOC -o $TARGET $SOURCE',suffix='_moc.cpp',src_suffix='.h')
-
- ## KIDL file
- env['BUILDERS']['Kidl']=Builder(action= 'dcopidl $SOURCE > $TARGET || (rm -f $TARGET ; false)',
- suffix='.kidl', src_suffix='.h')
- ## DCOP
- env['BUILDERS']['Dcop']=Builder(action='dcopidl2cpp --c++-suffix cpp --no-signals --no-stub $SOURCE',
- suffix='_skel.cpp', src_suffix='.kidl')
- ## STUB
- env['BUILDERS']['Stub']=Builder(action= 'dcopidl2cpp --c++-suffix cpp --no-signals --no-skel $SOURCE',
- suffix='_stub.cpp', src_suffix='.kidl')
- ## DOCUMENTATION
- env['BUILDERS']['Meinproc']=Builder(action='$MEINPROC --check --cache $TARGET $SOURCE',suffix='.cache.bz2')
- ## TRANSLATIONS
- env['BUILDERS']['Transfiles']=Builder(action='$MSGFMT $SOURCE -o $TARGET',suffix='.gmo',src_suffix='.po')
-
- ## Handy helpers for building kde programs
- ## You should not have to modify them ..
-
- ui_ext = [".ui"]
- kcfg_ext = ['.kcfgc']
- header_ext = [".h", ".hxx", ".hpp", ".hh"]
- cpp_ext = [".cpp", ".cxx", ".cc"]
- skel_ext = [".skel", ".SKEL"]
- stub_ext = [".stub", ".STUB"]
-
- def KDEfiles(lenv, target, source):
- """ Returns a list of files for scons (handles kde tricks like .skel)
- It also makes custom checks against double includes like : ['file.ui', 'file.cpp']
- (file.cpp is already included because of file.ui) """
-
- q_object_search = re.compile(r'[^A-Za-z0-9]Q_OBJECT[^A-Za-z0-9]')
- def scan_moc(bs, file_cpp):
- addfile=None
- # try to find the header
- h_ext=''
- for n_h_ext in header_ext:
- if os.path.isfile(bs+n_h_ext):
- h_ext=n_h_ext
- break
- # We have the header corresponding to the cpp file
- if h_ext:
- needscan=0
- # User asked for fasmoc, try to avoid scanning
- if env.has_key('BKSYS_FASTMOC'):
- if os.path.isfile(bs+'.moc'):
- lenv.Moc(bs+h_ext)
- elif os.path.isfile(bs+'_moc.cpp'):
- lenv.Moccpp(bs+h_ext)
- addfile=bs+'_moc.cpp'
- else:
- #print "need scanning "+os.getcwd()+'/'+bs+".moc"
- needscan=1
- else:
- needscan=1
- # We cannot avoid scanning the files ...
- if needscan:
- file_h=bs+h_ext
- h_contents = open(file_h, 'rb').read()
- if q_object_search.search(h_contents):
- # we know now there is Q_OBJECT macro
- lst = bs.split('/')
- val = lst[ len(lst) - 1 ]
- reg = '\n\s*#include\s*("|<)'+val+'.moc("|>)'
- meta_object_search = re.compile(reg)
- cpp_contents = open(file_cpp, 'rb').read()
- if meta_object_search.search(cpp_contents):
- lenv.Moc(file_h)
- else:
- lenv.Moccpp(file_h)
- addfile=bs+'_moc.cpp'
- print "WARNING: moc.cpp for "+bs+h_ext+" consider using #include <file.moc> instead"
- return addfile
-
- src=[]
- ui_files=[]
- kcfg_files=[]
- other_files=[]
- kidl=[]
-
- source_=lenv.make_list(source)
-
- # For each file, check wether it is a dcop file or not, and create the complete list of sources
- for file in source_:
- bs = SCons.Util.splitext(file)[0]
- ext = SCons.Util.splitext(file)[1]
- if ext in skel_ext:
- if not bs in kidl:
- kidl.append(bs)
- lenv.Dcop(bs+'.kidl')
- src.append(bs+'_skel.cpp')
- elif ext in stub_ext:
- if not bs in kidl:
- kidl.append(bs)
- lenv.Stub(bs+'.kidl')
- src.append(bs+'_stub.cpp')
- elif ext == ".moch":
- lenv.Moccpp(bs+'.h')
- src.append(bs+'_moc.cpp')
- elif ext in cpp_ext:
- src.append(file)
- if not env.has_key('NOMOCFILE'):
- ret = scan_moc(bs, file)
- if ret:
- src.append( ret )
- elif ext in ui_ext:
- lenv.Uic(file)
- src.append(bs+'.cpp')
- elif ext in kcfg_ext:
- lenv.Kcfg(file)
- src.append(bs+'.cpp')
- else:
- src.append(file)
-
- for base in kidl:
- lenv.Kidl(base+'.h')
-
- # Now check against typical newbie errors
- for file in ui_files:
- for ofile in other_files:
- if ofile == file:
- print RED+"WARNING: You have included "+file+".ui and another file of the same prefix"+NORMAL
- print "Files generated by uic-tqt (file.h, file.cpp must not be included"
- for file in kcfg_files:
- for ofile in other_files:
- if ofile == file:
- print RED+"WARNING: You have included "+file+".kcfg and another file of the same prefix"+NORMAL
- print "Files generated by kconfig_compiler (settings.h, settings.cpp) must not be included"
- return src
-
-
- """ In the future, these functions will contain the code that will dump the
- configuration for re-use from an IDE """
- import glob
- def KDEinstall(lenv, restype, subdir, files):
- if env.has_key('DUMPCONFIG'):
- print "<install type=\"%s\" subdir=\"%s\">" % (restype, subdir)
- for i in lenv.make_list(files):
- print " <file name=\"%s\"/>" % i
- print "</install>"
- return
-
- if not env['_INSTALL']:
- return
- dir = getInstDirForResType(lenv, restype)
- install_list = lenv.bksys_install(dir+'/'+subdir, files, nodestdir=1)
- return install_list
-
- def KDEinstallas(lenv, restype, destfile, file):
- if not env['_INSTALL']:
- return
- dir = getInstDirForResType(lenv, restype)
- install_list = lenv.InstallAs(dir+'/'+destfile, file)
- env.Alias('install', install_list)
- return install_list
-
- def KDEprogram(lenv, target, source,
- includes='', localshlibs='', globallibs='', globalcxxflags=''):
- """ Makes a kde program
- The program is installed except if one sets env['NOAUTOINSTALL'] """
- src = KDEfiles(lenv, target, source)
- program_list = lenv.Program(target, src)
-
- # we link the program against a shared library done locally, add the dependency
- if not lenv.has_key('nosmart_includes'):
- lenv.AppendUnique(CPPPATH=['./'])
- if len(localshlibs)>0:
- lst=lenv.make_list(localshlibs)
- lenv.link_local_shlib(lst)
- lenv.Depends( program_list, lst )
-
- if len(includes)>0:
- lenv.KDEaddpaths_includes(includes)
- if len(globallibs)>0:
- lenv.KDEaddlibs(globallibs)
- if len(globalcxxflags)>0:
- lenv.KDEaddflags_cxx(globalcxxflags)
-
- if not lenv.has_key('NOAUTOINSTALL'):
- KDEinstall(lenv, 'KDEBIN', '', target)
- return program_list
-
- def KDEshlib(lenv, target, source, kdelib=0, libprefix='lib',
- includes='', localshlibs='', globallibs='', globalcxxflags='', vnum=''):
- """ Makes a shared library for kde (.la file for klibloader)
- The library is installed except if one sets env['NOAUTOINSTALL'] """
- src = KDEfiles(lenv, target, source)
-
- if not lenv.has_key('nosmart_includes'):
- lenv.AppendUnique(CPPPATH=['./'])
- # we link the program against a shared library done locally, add the dependency
- lst=[]
- if len(localshlibs)>0:
- lst=lenv.make_list(localshlibs)
- lenv.link_local_shlib(lst)
- if len(includes)>0:
- lenv.KDEaddpaths_includes(includes)
- if len(globallibs)>0:
- lenv.KDEaddlibs(globallibs)
- if len(globalcxxflags)>0:
- lenv.KDEaddflags_cxx(globalcxxflags)
-
- restype = 'KDEMODULE'
- if kdelib==1:
- restype = 'KDELIB'
-
- library_list = lenv.bksys_shlib(target, src, getInstDirForResType(lenv, restype), libprefix, vnum, nodestdir=1)
- if len(lst)>0: lenv.Depends( library_list, lst )
-
- return library_list
-
- def KDEstaticlib(lenv, target, source):
- """ Makes a static library for kde - in practice you should not use static libraries
- 1. they take more memory than shared ones
- 2. makefile.am needed it because of limitations
- (cannot handle sources in separate folders - takes extra processing) """
- if not lenv.has_key('nosmart_includes'):
- lenv.AppendUnique(CPPPATH=['./'])
- src = KDEfiles(lenv, target, source)
- return lenv.StaticLibrary(target, src)
- # do not install static libraries by default
-
- def KDEaddflags_cxx(lenv, fl):
- """ Compilation flags for C++ programs """
- lenv.AppendUnique(CXXFLAGS = lenv.make_list(fl))
-
- def KDEaddflags_c(lenv, fl):
- """ Compilation flags for C programs """
- lenv.AppendUnique(CFLAGS = lenv.make_list(fl))
-
- def KDEaddflags_link(lenv, fl):
- """ Add link flags - Use this if KDEaddlibs below is not enough """
- lenv.PrependUnique(LINKFLAGS = lenv.make_list(fl))
-
- def KDEaddlibs(lenv, libs):
- """ Helper function """
- lenv.AppendUnique(LIBS = lenv.make_list(libs))
-
- def KDEaddpaths_includes(lenv, paths):
- """ Add new include paths """
- lenv.AppendUnique(CPPPATH = lenv.make_list(paths))
-
- def KDEaddpaths_libs(lenv, paths):
- """ Add paths to libraries """
- lenv.PrependUnique(LIBPATH = lenv.make_list(paths))
-
- def KDElang(lenv, folder, appname):
- """ Process translations (.po files) in a po/ dir """
- transfiles = glob.glob(folder+'/*.po')
- for lang in transfiles:
- result = lenv.Transfiles(lang)
- country = SCons.Util.splitext(result[0].name)[0]
- KDEinstallas(lenv, 'KDELOCALE', country+'/LC_MESSAGES/'+appname+'.mo', result)
-
- def KDEicon(lenv, icname='*', path='./', restype='KDEICONS', subdir=''):
- """Contributed by: "Andrey Golovizin" <grooz()gorodok()net>
- modified by "Martin Ellis" <m.a.ellis()ncl()ac()uk>
-
- Installs icons with filenames such as cr22-action-frame.png into
- KDE icon hierachy with names like icons/crystalsvg/22x22/actions/frame.png.
-
- Global KDE icons can be installed simply using env.KDEicon('name').
- The second parameter, path, is optional, and specifies the icons
- location in the source, relative to the SConscript file.
-
- To install icons that need to go under an applications directory (to
- avoid name conflicts, for example), use e.g.
- env.KDEicon('name', './', 'KDEDATA', 'appname/icons')"""
-
- if env.has_key('DUMPCONFIG'):
- print "<icondirent subdir=\"%s\">" % (path+subdir)
- return
-
- type_dic = { 'action' : 'actions', 'app' : 'apps', 'device' :
- 'devices', 'filesys' : 'filesystems', 'mime' : 'mimetypes' }
- dir_dic = {
- 'los' :'locolor/16x16',
- 'lom' :'locolor/32x32',
- 'him' :'hicolor/32x32',
- 'hil' :'hicolor/48x48',
- 'lo16' :'locolor/16x16',
- 'lo22' :'locolor/22x22',
- 'lo32' :'locolor/32x32',
- 'hi16' :'hicolor/16x16',
- 'hi22' :'hicolor/22x22',
- 'hi32' :'hicolor/32x32',
- 'hi48' :'hicolor/48x48',
- 'hi64' :'hicolor/64x64',
- 'hi128':'hicolor/128x128',
- 'hisc' :'hicolor/scalable',
- 'cr16' :'crystalsvg/16x16',
- 'cr22' :'crystalsvg/22x22',
- 'cr32' :'crystalsvg/32x32',
- 'cr48' :'crystalsvg/48x48',
- 'cr64' :'crystalsvg/64x64',
- 'cr128':'crystalsvg/128x128',
- 'crsc' :'crystalsvg/scalable'
- }
-
- iconfiles = []
- for ext in "png xpm mng svg svgz".split():
- files = glob.glob(path+'/'+'*-*-%s.%s' % (icname, ext))
- iconfiles += files
- for iconfile in iconfiles:
- lst = iconfile.split('/')
- filename = lst[ len(lst) - 1 ]
- tmp = filename.split('-')
- if len(tmp)!=3:
- print RED+'WARNING: icon filename has unknown format: '+iconfile+NORMAL
- continue
- [icon_dir, icon_type, icon_filename]=tmp
- try:
- basedir=getInstDirForResType(lenv, restype)
- destfile = '%s/%s/%s/%s/%s' % (basedir, subdir, dir_dic[icon_dir], type_dic[icon_type], icon_filename)
- except KeyError:
- print RED+'WARNING: unknown icon type: '+iconfile+NORMAL
- continue
- ## Do not use KDEinstallas here, as parsing from an ide will be necessary
- if env['_INSTALL']:
- env.Alias('install', env.InstallAs( destfile, iconfile ) )
-
- ## This function uses env imported above
- def docfolder(lenv, folder, lang, destination=""):
- # folder is the folder to process
- # lang is the language
- # destination is the subdirectory in KDEDOC
- docfiles = glob.glob(folder+"/???*.*") # file files that are at least 4 chars wide :)
- # warn about errors
- #if len(lang) != 2:
- # print "error, lang must be a two-letter string, like 'en'"
-
- # when the destination is not given, use the folder
- if len(destination) == 0:
- destination=folder
- docbook_list = []
- for file in docfiles:
- # do not process folders
- if not os.path.isfile(file):
- continue
- # do not process the cache file
- if file == 'index.cache.bz2':
- continue
- # ignore invalid files (TODO??)
- if len( SCons.Util.splitext( file ) ) <= 1 :
- continue
-
- ext = SCons.Util.splitext( file )[1]
-
- # docbook files are processed by meinproc
- if ext != '.docbook':
- continue
- docbook_list.append( file )
- lenv.KDEinstall('KDEDOC', lang+'/'+destination, file)
- # Now process the index.docbook files ..
- if len(docbook_list) == 0:
- return
- if not os.path.isfile( folder+'/index.docbook' ):
- print "Error, index.docbook was not found in "+folder+'/index.docbook'
- return
- ## Define this to 1 if you are writing documentation else to 0 :)
- if env.has_key('i_am_a_documentation_writer'):
- for file in docbook_list:
- lenv.Depends( folder+'index.cache.bz2', file )
- lenv.Meinproc( folder+'/index.cache.bz2', folder+'/index.docbook' )
- lenv.KDEinstall( 'KDEDOC', lang+'/'+destination, folder+'/index.cache.bz2' )
-
- #valid_targets = "program shlib kioslave staticlib".split()
- import generic
- class kobject(generic.genobj):
- def __init__(self, val, senv=None):
- if senv: generic.genobj.__init__(self, val, senv)
- else: generic.genobj.__init__(self, val, env)
- self.iskdelib=0
- def it_is_a_kdelib(self): self.iskdelib=1
- def execute(self):
- self.lockchdir()
- if self.orenv.has_key('DUMPCONFIG'):
- print self.xml()
- return
- if (self.type=='shlib' or self.type=='kioslave'):
- install_dir = 'KDEMODULE'
- if self.iskdelib==1: install_dir = 'KDELIB'
- self.instdir=getInstDirForResType(self.orenv, install_dir)
- self.nodestdir=1
- elif self.type=='program':
- self.instdir=getInstDirForResType(self.orenv, 'KDEBIN')
- self.nodestdir=1
-
- self.src=KDEfiles(env, self.target, self.source)
- generic.genobj.execute(self)
- self.unlockchdir()
-
- def xml(self):
- ret= '<compile type="%s" chdir="%s" target="%s" cxxflags="%s" cflags="%s" includes="%s" linkflags="%s" libpaths="%s" libs="%s" vnum="%s" iskdelib="%s" libprefix="%s">\n' % (self.type, self.chdir, self.target, self.cxxflags, self.cflags, self.includes, self.linkflags, self.libpaths, self.libs, self.vnum, self.iskdelib, self.libprefix)
- if self.source:
- for i in self.orenv.make_list(self.source):
- ret += ' <source file="%s"/>\n' % i
- ret += "</compile>"
- return ret
-
- # Attach the functions to the environment so that SConscripts can use them
- SConsEnvironment.KDEprogram = KDEprogram
- SConsEnvironment.KDEshlib = KDEshlib
- SConsEnvironment.KDEstaticlib = KDEstaticlib
- SConsEnvironment.KDEinstall = KDEinstall
- SConsEnvironment.KDEinstallas = KDEinstallas
- SConsEnvironment.KDElang = KDElang
- SConsEnvironment.KDEicon = KDEicon
-
- SConsEnvironment.KDEaddflags_cxx = KDEaddflags_cxx
- SConsEnvironment.KDEaddflags_c = KDEaddflags_c
- SConsEnvironment.KDEaddflags_link = KDEaddflags_link
- SConsEnvironment.KDEaddlibs = KDEaddlibs
- SConsEnvironment.KDEaddpaths_includes = KDEaddpaths_includes
- SConsEnvironment.KDEaddpaths_libs = KDEaddpaths_libs
-
- SConsEnvironment.docfolder = docfolder
- SConsEnvironment.kobject = kobject
-
diff --git a/bksys/scons-mini.tar.bz2 b/bksys/scons-mini.tar.bz2
deleted file mode 100644
index 53d41bb..0000000
--- a/bksys/scons-mini.tar.bz2
+++ /dev/null
Binary files differ
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9802b55..31c6c64 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -25,8 +25,8 @@ include( ${CMAKE_SOURCE_DIR}/BisonMacros.cmake )
##### other data ################################
-install( FILES abakus.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )
-install( FILES abakusui.rc DESTINATION ${DATA_INSTALL_DIR} )
+install( FILES abakus.desktop DESTINATION ${APPS_INSTALL_DIR}/Utilities )
+install( FILES abakusui.rc DESTINATION ${DATA_INSTALL_DIR}/abakus )
##### abakus (executable) #######################
diff --git a/src/SConscript b/src/SConscript
deleted file mode 100644
index 9933baf..0000000
--- a/src/SConscript
+++ /dev/null
@@ -1,88 +0,0 @@
-#! /usr/bin/env python
-## This script demonstrates how to build and install
-## a simple kde program having KconfigXT settings
-## with scons
-##
-## Thomas Nagy, 2004, 2005
-
-## This file can be reused freely for any project (see COPYING)
-
-############################
-## load the config
-
-## Use the environment and the tools set in the top-level
-## SConstruct file (set with 'Export') - this is very important
-
-Import( 'env' )
-myenv=env.Clone()
-
-import os
-from SCons.Script.SConscript import SConsEnvironment
-
-#############################
-## the programs to build
-
-# The sources for our program - only .ui, .skel and .cpp are accepted
-abakus_sources = """
-abakus.cpp
-abakuslistview.cpp
-dragsupport.cpp
-editor.cpp
-evaluator.cpp
-function.cpp
-lexer_lex.cpp
-mainwindow.cpp
-node.cpp
-numerictypes.cpp
-parser_yacc.cpp
-result.cpp
-resultlistview.cpp
-resultlistviewtext.cpp
-rpnmuncher.cpp
-valuemanager.cpp
-dcopIface.skel
-"""
-
-if myenv.get('mpfr', 'no') == 'yes':
- myenv.Append(LIBS = ['mpfr', 'gmp'])
-else:
- abakus_sources = abakus_sources + " hmath.cpp number.c"
-
-myenv.KDEprogram( "abakus", abakus_sources )
-myenv.KDEicon( 'abakus' )
-
-# Mark these as being created by flex and bison if it's installed.
-if myenv.Dictionary().has_key('PARSER_INCLUDED'):
- myenv.CXXFile( "lexer_lex.cpp", "lexer.ll" )
- myenv.CXXFile( "parser_yacc.cpp", "parser.yy", YACCFLAGS="-d" )
-
-if myenv['HAVE_ASNEEDED']:
- myenv.Append(LINKFLAGS = '-Wl,--as-needed')
-
-myenv.Append(CXXFLAGS = '-Wno-non-virtual-dtor -I/usr/include/tqt -include tqt.h -DTQT_THREAD_SUPPORT')
-
-############################
-## Customization
-
-## Additional include paths for compiling the source files
-## Always add '../' (top-level directory) because moc makes code that needs it
-myenv.KDEaddpaths_includes('#/src/ #/')
-
-## Necessary libraries to link against
-## FIXME
-if os.path.isfile("/usr/include/tqt3/qlayout.h"):
- myenv.KDEaddlibs( 'tqt-mt tqt kio kdecore kdeprint kdeui DCOP' )
-else:
- myenv.KDEaddlibs( 'qt-mt tqt kio kdecore kdeprint kdeui DCOP' )
-
-#############################
-## Data to install
-
-## The ui.rc file and the tips go into datadir/appname/
-myenv.KDEinstall( 'KDEDATA', 'abakus', 'abakusui.rc' )
-
-## Warning : there is a difference between the normal destop file used for the menu
-## and the servicetype desktop file, so they go in different directories
-## you will find more information in 'test3'
-myenv.KDEinstall( 'KDEMENU', 'Utilities', 'abakus.desktop')
-