Make .isa-file ##include file paths relative to including file.

Makes .isa files cleaner and simplifies scanner too.
Simplified scanner to work under both old and new versions of scons.

arch/SConscript:
    Simplify .isa scanner... seems to work with both scons 0.96.1 and 0.96.91 now.
    Assumes .isa ##include paths are relative to including file.
arch/alpha/isa/main.isa:
arch/mips/isa/formats/formats.isa:
arch/mips/isa/main.isa:
arch/sparc/isa/formats.isa:
arch/sparc/isa/main.isa:
    Make ##include paths relative to including file.
arch/isa_parser.py:
    Make ##include file paths relative to including file.
    Makes .isa files cleaner and simplifies scanner too.
    Partial rewrite of include-handling code to use cool re.sub() feature
    where you can specify a function to provide the replacement string.
    Minor cleanup of error-handling code.
    Also got rid of '#!' at top to make caller choose which python interpreter
    is used (since SPARC now requires 2.4 to build, we may need to do that via
    scons in the future).

--HG--
rename : arch/mips/isa/formats.isa => arch/mips/isa/formats/formats.isa
extra : convert_revision : 15a3920fa3aaf80cd94083eda853aa4e49425045
This commit is contained in:
Steve Reinhardt
2006-03-28 22:29:42 -05:00
parent 55293c9e98
commit efc41fe82d
8 changed files with 126 additions and 133 deletions

View File

@@ -100,18 +100,12 @@ for hdr in isa_switch_hdrs:
#
import SCons.Scanner
def ISAScan():
return SCons.Scanner.Classic("ISAScan",
"$ISASUFFIXES",
"SRCDIR",
'^[ \t]*##[ \t]*include[ \t]*"([^>"]+)"')
isa_scanner = SCons.Scanner.Classic("ISAScan",
[".isa", ".ISA"],
"SRCDIR",
r'^\s*##include\s+"([\w/.-]*)"')
def ISAPath(env, dir, target=None, source=None, a=None):
return (Dir(env['SRCDIR']), Dir('.'))
iscan = Scanner(function = ISAScan().scan, skeys = [".isa", ".ISA"],
path_function = ISAPath)
env.Append(SCANNERS = iscan)
env.Append(SCANNERS = isa_scanner)
#
# Now create a Builder object that uses isa_parser.py to generate C++
@@ -138,8 +132,7 @@ def isa_desc_emitter(target, source, env):
return (isa_desc_gen_files, [isa_parser, cpu_models_file] + source)
# Pieces are in place, so create the builder.
isa_desc_builder = Builder(action='$SOURCES $TARGET.dir $CPU_MODELS',
source_scanner = iscan,
isa_desc_builder = Builder(action='python $SOURCES $TARGET.dir $CPU_MODELS',
emitter = isa_desc_emitter)
env.Append(BUILDERS = { 'ISADesc' : isa_desc_builder })