66,81c66,67
< # Generate the header. target[0] is the full path of the output
< # header to generate. 'source' is a dummy variable, since we get the
< # list of ISAs from env['ALL_ISA_LIST'].
< def gen_switch_hdr(target, source, env):
< fname = str(target[0])
< basename = os.path.basename(fname)
< f = open(fname, 'w')
< f.write('#include "arch/isa_specific.hh"\n')
< cond = '#if'
< for isa in env['ALL_ISA_LIST']:
< f.write('%s THE_ISA == %s_ISA\n#include "arch/%s/%s"\n'
< % (cond, isa.upper(), isa, basename))
< cond = '#elif'
< f.write('#else\n#error "THE_ISA not set"\n#endif\n')
< f.close()
< return 0
---
> # Set up this directory to support switching headers
> env.make_switching_dir('arch', isa_switch_hdrs, env)
83,96d68
< # String to print when generating header
< def gen_switch_hdr_string(target, source, env):
< return "Generating ISA switch header " + str(target[0])
<
< # Build SCons Action object. 'varlist' specifies env vars that this
< # action depends on; when env['ALL_ISA_LIST'] changes these actions
< # should get re-executed.
< switch_hdr_action = Action(gen_switch_hdr, gen_switch_hdr_string,
< varlist=['ALL_ISA_LIST'])
<
< # Instantiate actions for each header
< for hdr in isa_switch_hdrs:
< env.Command(hdr, [], switch_hdr_action)
<