summaryrefslogtreecommitdiffstats
path: root/bksys/abakus.py
diff options
context:
space:
mode:
authorTimothy Pearson <[email protected]>2011-11-27 22:58:41 -0600
committerTimothy Pearson <[email protected]>2011-11-27 22:58:41 -0600
commitf7fa09d48f7f1d6e271ddf9a6d8e7da9a3545e9f (patch)
tree0cb130b0238a65c84710317eef0f3c98e2832484 /bksys/abakus.py
parent2c82d91b8c5ac4b7b5813a8c09b130e12180974c (diff)
downloadabakus-f7fa09d48f7f1d6e271ddf9a6d8e7da9a3545e9f.tar.gz
abakus-f7fa09d48f7f1d6e271ddf9a6d8e7da9a3545e9f.zip
Cleanup
Diffstat (limited to 'bksys/abakus.py')
-rw-r--r--bksys/abakus.py178
1 files changed, 0 insertions, 178 deletions
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: