SConscript revision 2023
17860SN/A# -*- mode:python -*-
27860SN/A
37860SN/A# Copyright (c) 2004-2005 The Regents of The University of Michigan
48825Snilay@cs.wisc.edu# All rights reserved.
57935SN/A#
67935SN/A# Redistribution and use in source and binary forms, with or without
77935SN/A# modification, are permitted provided that the following conditions are
87860SN/A# met: redistributions of source code must retain the above copyright
97860SN/A# notice, this list of conditions and the following disclaimer;
107860SN/A# redistributions in binary form must reproduce the above copyright
117860SN/A# notice, this list of conditions and the following disclaimer in the
128825Snilay@cs.wisc.edu# documentation and/or other materials provided with the distribution;
138825Snilay@cs.wisc.edu# neither the name of the copyright holders nor the names of its
148825Snilay@cs.wisc.edu# contributors may be used to endorse or promote products derived from
158825Snilay@cs.wisc.edu# this software without specific prior written permission.
167860SN/A#
178464SN/A# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
188721SN/A# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
197860SN/A# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
208825Snilay@cs.wisc.edu# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
218825Snilay@cs.wisc.edu# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
227935SN/A# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
237935SN/A# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
247935SN/A# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
257935SN/A# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
267935SN/A# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
277935SN/A# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
287935SN/A
298893Ssaidi@eecs.umich.eduimport os
307860SN/Aimport sys
317860SN/Afrom os.path import isdir
327860SN/A
338825Snilay@cs.wisc.edu# This file defines how to build a particular configuration of M5
347860SN/A# based on variable settings in the 'env' build environment.
357860SN/A
367860SN/A# Import build environment variable from SConstruct.
377860SN/AImport('env')
388210SN/A
398210SN/A###################################################
407860SN/A#
417860SN/A# Define needed sources.
427860SN/A#
437860SN/A###################################################
447860SN/A
457860SN/A# Base sources used by all configurations.
467860SN/A
477860SN/Abase_sources = Split('''
487860SN/A	base/circlebuf.cc
497860SN/A	base/copyright.cc
507860SN/A	base/cprintf.cc
517860SN/A        base/embedfile.cc
527860SN/A	base/fast_alloc.cc
537860SN/A	base/fifo_buffer.cc
547860SN/A	base/hostinfo.cc
557860SN/A	base/hybrid_pred.cc
567860SN/A	base/inifile.cc
577860SN/A	base/intmath.cc
587860SN/A	base/match.cc
597860SN/A	base/misc.cc
607860SN/A	base/output.cc
617860SN/A	base/pollevent.cc
628825Snilay@cs.wisc.edu	base/range.cc
637860SN/A	base/random.cc
647860SN/A	base/sat_counter.cc
657860SN/A	base/socket.cc
667860SN/A	base/statistics.cc
677860SN/A	base/str.cc
687860SN/A	base/time.cc
697860SN/A	base/trace.cc
707860SN/A	base/traceflags.cc
717860SN/A	base/userinfo.cc
727860SN/A	base/compression/lzss_compression.cc
737860SN/A	base/loader/aout_object.cc
747860SN/A	base/loader/ecoff_object.cc
757860SN/A	base/loader/elf_object.cc
767860SN/A	base/loader/object_file.cc
777860SN/A	base/loader/symtab.cc
787860SN/A	base/stats/events.cc
797860SN/A	base/stats/statdb.cc
808825Snilay@cs.wisc.edu	base/stats/visit.cc
817860SN/A	base/stats/text.cc
827860SN/A
837860SN/A	cpu/base.cc
847860SN/A        cpu/base_dyn_inst.cc
857860SN/A	cpu/exec_context.cc
867860SN/A	cpu/exetrace.cc
877860SN/A	cpu/pc_event.cc
887860SN/A	cpu/static_inst.cc
897860SN/A        cpu/o3/2bit_local_pred.cc
907860SN/A        cpu/o3/alpha_dyn_inst.cc
917860SN/A        cpu/o3/alpha_cpu.cc
928825Snilay@cs.wisc.edu        cpu/o3/alpha_cpu_builder.cc
937860SN/A        cpu/o3/bpred_unit.cc
947860SN/A        cpu/o3/btb.cc
957860SN/A        cpu/o3/commit.cc
967860SN/A        cpu/o3/decode.cc
977860SN/A        cpu/o3/fetch.cc
987860SN/A        cpu/o3/free_list.cc
997860SN/A        cpu/o3/cpu.cc
1007860SN/A        cpu/o3/iew.cc
1018825Snilay@cs.wisc.edu        cpu/o3/inst_queue.cc
1027860SN/A        cpu/o3/ldstq.cc
1037860SN/A        cpu/o3/mem_dep_unit.cc
1047860SN/A        cpu/o3/ras.cc
1057860SN/A        cpu/o3/rename.cc
1067860SN/A        cpu/o3/rename_map.cc
1077860SN/A        cpu/o3/rob.cc
1087860SN/A        cpu/o3/sat_counter.cc
1097860SN/A        cpu/o3/store_set.cc
1107860SN/A        cpu/o3/tournament_pred.cc
1117860SN/A	cpu/fast/cpu.cc
1127860SN/A        cpu/sampler/sampler.cc
1137860SN/A        cpu/simple/cpu.cc
1147860SN/A        cpu/trace/reader/mem_trace_reader.cc
1157860SN/A        cpu/trace/reader/ibm_reader.cc
1167860SN/A        cpu/trace/reader/itx_reader.cc
1177860SN/A        cpu/trace/reader/m5_reader.cc
1188521SN/A        cpu/trace/opt_cpu.cc
1197860SN/A        cpu/trace/trace_cpu.cc
1207860SN/A
1217860SN/A	encumbered/cpu/full/bpred.cc
1227860SN/A	encumbered/cpu/full/commit.cc
1237860SN/A	encumbered/cpu/full/cpu.cc
1247860SN/A	encumbered/cpu/full/create_vector.cc
1257860SN/A	encumbered/cpu/full/cv_spec_state.cc
1267860SN/A	encumbered/cpu/full/dd_queue.cc
1277860SN/A	encumbered/cpu/full/dep_link.cc
1287860SN/A	encumbered/cpu/full/dispatch.cc
1297860SN/A	encumbered/cpu/full/dyn_inst.cc
1308893Ssaidi@eecs.umich.edu	encumbered/cpu/full/execute.cc
1317860SN/A	encumbered/cpu/full/fetch.cc
1327860SN/A	encumbered/cpu/full/floss_reasons.cc
1337860SN/A	encumbered/cpu/full/fu_pool.cc
1347860SN/A	encumbered/cpu/full/inst_fifo.cc
1358150SN/A	encumbered/cpu/full/instpipe.cc
1367860SN/A	encumbered/cpu/full/issue.cc
1377860SN/A	encumbered/cpu/full/ls_queue.cc
1387860SN/A	encumbered/cpu/full/machine_queue.cc
1397860SN/A        encumbered/cpu/full/pipetrace.cc
1408835SAli.Saidi@ARM.com        encumbered/cpu/full/readyq.cc
1417860SN/A        encumbered/cpu/full/reg_info.cc
1427860SN/A        encumbered/cpu/full/rob_station.cc
1437860SN/A        encumbered/cpu/full/spec_memory.cc
1447860SN/A        encumbered/cpu/full/spec_state.cc
1458835SAli.Saidi@ARM.com        encumbered/cpu/full/storebuffer.cc
1467860SN/A        encumbered/cpu/full/writeback.cc
1477860SN/A        encumbered/cpu/full/iq/iq_station.cc
1487860SN/A        encumbered/cpu/full/iq/iqueue.cc
1497860SN/A        encumbered/cpu/full/iq/segmented/chain_info.cc
1507860SN/A        encumbered/cpu/full/iq/segmented/chain_wire.cc
1518893Ssaidi@eecs.umich.edu        encumbered/cpu/full/iq/segmented/iq_seg.cc
1527860SN/A        encumbered/cpu/full/iq/segmented/iq_segmented.cc
1537860SN/A        encumbered/cpu/full/iq/segmented/seg_chain.cc
1547860SN/A        encumbered/cpu/full/iq/seznec/iq_seznec.cc
1558825Snilay@cs.wisc.edu        encumbered/cpu/full/iq/standard/iq_standard.cc
1567860SN/A	encumbered/mem/functional/main.cc
1578825Snilay@cs.wisc.edu
1588825Snilay@cs.wisc.edu	mem/base_hier.cc
1598825Snilay@cs.wisc.edu	mem/base_mem.cc
1608825Snilay@cs.wisc.edu	mem/hier_params.cc
1618825Snilay@cs.wisc.edu	mem/mem_cmd.cc
1628825Snilay@cs.wisc.edu	mem/mem_debug.cc
1638825Snilay@cs.wisc.edu	mem/mem_req.cc
1648893Ssaidi@eecs.umich.edu	mem/memory_interface.cc
1657860SN/A	mem/bus/base_interface.cc
1667860SN/A	mem/bus/bus.cc
1677860SN/A	mem/bus/bus_bridge.cc
1687860SN/A	mem/bus/bus_bridge_master.cc
1697860SN/A	mem/bus/bus_bridge_slave.cc
1707860SN/A	mem/bus/bus_interface.cc
1717860SN/A	mem/bus/dma_bus_interface.cc
1727860SN/A	mem/bus/dma_interface.cc
1737860SN/A	mem/bus/master_interface.cc
1747860SN/A	mem/bus/slave_interface.cc
1757860SN/A	mem/cache/base_cache.cc
1767860SN/A	mem/cache/cache.cc
1777860SN/A	mem/cache/cache_builder.cc
1787860SN/A	mem/cache/coherence/coherence_protocol.cc
1797860SN/A	mem/cache/coherence/uni_coherence.cc
1807860SN/A	mem/cache/miss/blocking_buffer.cc
1817860SN/A	mem/cache/miss/miss_queue.cc
1827860SN/A	mem/cache/miss/mshr.cc
1837860SN/A	mem/cache/miss/mshr_queue.cc
1847860SN/A        mem/cache/prefetch/base_prefetcher.cc
1857860SN/A        mem/cache/prefetch/prefetcher.cc
1867860SN/A        mem/cache/prefetch/tagged_prefetcher.cc
1877860SN/A	mem/cache/tags/base_tags.cc
1887860SN/A	mem/cache/tags/cache_tags.cc	
1897860SN/A	mem/cache/tags/fa_lru.cc
1907860SN/A	mem/cache/tags/iic.cc
1917860SN/A	mem/cache/tags/lru.cc
1927860SN/A	mem/cache/tags/repl/gen.cc
1937860SN/A	mem/cache/tags/repl/repl.cc
1947860SN/A	mem/cache/tags/split.cc
1957860SN/A	mem/cache/tags/split_lru.cc
1967860SN/A	mem/cache/tags/split_lifo.cc
1977860SN/A	mem/functional/functional.cc
1987860SN/A	mem/timing/base_memory.cc
1997860SN/A	mem/timing/memory_builder.cc
2007860SN/A	mem/timing/simple_mem_bank.cc
2017860SN/A        mem/trace/itx_writer.cc
2027860SN/A	mem/trace/mem_trace_writer.cc
2037860SN/A	mem/trace/m5_writer.cc
2047860SN/A
2057860SN/A        python/pyconfig.cc
2067860SN/A        python/embedded_py.cc
2077860SN/A
2087860SN/A	sim/builder.cc
2097860SN/A	sim/configfile.cc
2107860SN/A	sim/debug.cc
2117860SN/A	sim/eventq.cc
2127860SN/A	sim/main.cc
2137860SN/A	sim/param.cc
2147860SN/A	sim/profile.cc
2157860SN/A	sim/root.cc
2167860SN/A	sim/serialize.cc
2177860SN/A	sim/sim_events.cc
2187860SN/A	sim/sim_exit.cc
2197860SN/A	sim/sim_object.cc
2207860SN/A	sim/startup.cc
2217860SN/A	sim/stat_context.cc
2227860SN/A	sim/stat_control.cc
2237860SN/A	sim/trace_context.cc
2247860SN/A        ''')
2257860SN/A# These are now included by the architecture specific SConscript
2267860SN/A#	arch/alpha/decoder.cc
2277860SN/A#	arch/alpha/alpha_o3_exec.cc
2287860SN/A#	arch/alpha/fast_cpu_exec.cc
2297860SN/A#	arch/alpha/simple_cpu_exec.cc
2307860SN/A#	arch/alpha/full_cpu_exec.cc
2317860SN/A#	arch/alpha/faults.cc
2327860SN/A#	arch/alpha/isa_traits.cc
2337860SN/A
2347860SN/A# MySql sources
2357860SN/Amysql_sources = Split('''
2367860SN/A	base/mysql.cc
2377860SN/A	base/stats/mysql.cc
2387860SN/A        ''')
2397860SN/A
2407860SN/A# Full-system sources
2417860SN/Afull_system_sources = Split('''
2427860SN/A	base/crc.cc
2437860SN/A	base/inet.cc
2447860SN/A	base/remote_gdb.cc
2457860SN/A
2467860SN/A	cpu/intr_control.cc
2477860SN/A        cpu/profile.cc
2487860SN/A
2497860SN/A	dev/alpha_console.cc
2507860SN/A	dev/baddev.cc
2517860SN/A        dev/simconsole.cc
2527860SN/A	dev/disk_image.cc
2537860SN/A	dev/etherbus.cc
2547860SN/A	dev/etherdump.cc
2557860SN/A	dev/etherint.cc
2567860SN/A	dev/etherlink.cc
2577860SN/A	dev/etherpkt.cc
2587860SN/A	dev/ethertap.cc
2597860SN/A	dev/ide_ctrl.cc
2607860SN/A	dev/ide_disk.cc
2617860SN/A	dev/io_device.cc
2627860SN/A	dev/ns_gige.cc
2637860SN/A	dev/pciconfigall.cc
2647860SN/A	dev/pcidev.cc
2657860SN/A	dev/pcifake.cc
2667860SN/A	dev/pktfifo.cc
2677860SN/A	dev/platform.cc
2687860SN/A	dev/sinic.cc
2697860SN/A	dev/simple_disk.cc
2707860SN/A	dev/tsunami.cc
2717860SN/A	dev/tsunami_cchip.cc
2727860SN/A	dev/isa_fake.cc
2737860SN/A	dev/tsunami_io.cc
2747860SN/A	dev/tsunami_pchip.cc
2757860SN/A	dev/uart.cc
2767860SN/A	dev/uart8250.cc
2777860SN/A
2787860SN/A	kern/kernel_binning.cc
2797860SN/A	kern/kernel_stats.cc
2807860SN/A	kern/system_events.cc
2817860SN/A	kern/freebsd/freebsd_system.cc
2827860SN/A	kern/linux/linux_syscalls.cc
2837860SN/A	kern/linux/linux_system.cc
2847860SN/A	kern/linux/printk.cc
2857860SN/A	kern/tru64/dump_mbuf.cc
2867860SN/A	kern/tru64/printf.cc
2877860SN/A	kern/tru64/tru64_events.cc
2887860SN/A	kern/tru64/tru64_syscalls.cc
2897860SN/A	kern/tru64/tru64_system.cc
2907860SN/A
2917860SN/A	mem/functional/memory_control.cc
2927860SN/A	mem/functional/physical.cc
2937860SN/A
2947860SN/A	sim/system.cc
2957860SN/A        ''')
2967860SN/A
2977860SN/A# These are now included by the architecture specific SConscript
2987860SN/A#	arch/alpha/alpha_memory.cc
2997860SN/A#	arch/alpha/arguments.cc
3007860SN/A#	arch/alpha/ev5.cc
3017860SN/A#	arch/alpha/osfpal.cc
3027860SN/A#	arch/alpha/pseudo_inst.cc
3037860SN/A#	arch/alpha/stacktrace.cc
3047860SN/A#	arch/alpha/vtophys.cc
3057860SN/A
3067860SN/A# turbolaser encumbered sources
3077860SN/Aturbolaser_sources = Split('''
3087860SN/A	encumbered/dev/dma.cc
3097860SN/A	encumbered/dev/etherdev.cc
3107860SN/A	encumbered/dev/scsi.cc
3117860SN/A	encumbered/dev/scsi_ctrl.cc
3127860SN/A	encumbered/dev/scsi_disk.cc
3137860SN/A	encumbered/dev/scsi_none.cc
3147860SN/A	encumbered/dev/tlaser_clock.cc
3157860SN/A	encumbered/dev/tlaser_ipi.cc
3167860SN/A	encumbered/dev/tlaser_mbox.cc
3177860SN/A	encumbered/dev/tlaser_mc146818.cc
3187860SN/A	encumbered/dev/tlaser_node.cc
3197860SN/A	encumbered/dev/tlaser_pcia.cc
3207860SN/A	encumbered/dev/tlaser_pcidev.cc
3217860SN/A	encumbered/dev/tlaser_serial.cc
3227860SN/A	encumbered/dev/turbolaser.cc
3237860SN/A	encumbered/dev/uart8530.cc
3247860SN/A        ''')
3257860SN/A
3267860SN/A# Syscall emulation (non-full-system) sources
3277860SN/Asyscall_emulation_sources = Split('''
3287860SN/A	cpu/memtest/memtest.cc
3297860SN/A	encumbered/eio/eio.cc
3307860SN/A	encumbered/eio/exolex.cc
3317860SN/A	encumbered/eio/libexo.cc
3327860SN/A	sim/process.cc
3337860SN/A	sim/syscall_emul.cc
3347860SN/A        ''')
3357860SN/A
3367860SN/A# These are now included by the architecture specific SConscript
3377860SN/A#	arch/alpha/alpha_common_syscall_emul.cc
3387860SN/A#	arch/alpha/alpha_linux_process.cc
3397860SN/A#	arch/alpha/alpha_tru64_process.cc
3407860SN/A
3417860SN/Atargetarch_files = Split('''
3427860SN/A        alpha_common_syscall_emul.hh
3437860SN/A        alpha_linux_process.hh
3447860SN/A        alpha_memory.hh
3457860SN/A        alpha_tru64_process.hh
3467860SN/A        aout_machdep.h
3477860SN/A        arguments.hh
3487860SN/A        byte_swap.hh
3497860SN/A        ecoff_machdep.h
3507860SN/A        ev5.hh
3517860SN/A        faults.hh
3527860SN/A        isa_fullsys_traits.hh
3537860SN/A        isa_traits.hh
3547860SN/A        osfpal.hh
3557860SN/A        pseudo_inst.hh
3567860SN/A        stacktrace.hh
3577860SN/A        vptr.hh
3587860SN/A        vtophys.hh
3597860SN/A        ''')
3607860SN/A
3617860SN/A# Set up bridging headers to the architecture specific versions
3627860SN/Afor f in targetarch_files:
3637860SN/A    env.Command('targetarch/' + f, 'arch/%s/%s' % (env['TARGET_ISA'], f),
3647860SN/A                '''echo '#include "arch/%s/%s"' > $TARGET''' % (env['TARGET_ISA'], f))
3657860SN/A
3667860SN/A# Let the target architecture define what sources it needs
3677860SN/Aarch_source = SConscript('arch/%s/SConscript' % env['TARGET_ISA'],
3687860SN/A	build_dir = 'build/%s/' % env['BUILD_DIR'],
3697860SN/A	exports = 'env', duplicate = False)
3707860SN/A
3717860SN/A# Set up complete list of sources based on configuration.
3727860SN/Asources = base_sources + arch_source
3737860SN/A
3747860SN/Aif env['FULL_SYSTEM']:
3757860SN/A    sources += full_system_sources
3767860SN/A    if env['ALPHA_TLASER']:
3777860SN/A        sources += turbolaser_sources
3787860SN/Aelse:
3797860SN/A    sources += syscall_emulation_sources
3807860SN/A
3817860SN/Aif env['USE_MYSQL']:
3827860SN/A    sources += mysql_sources
3837860SN/A
3847860SN/Afor opt in env.ExportOptions:
3857860SN/A    env.ConfigFile(opt)
3867860SN/A
3877860SN/A###################################################
3887860SN/A#
3897860SN/A# Special build rules.
3907860SN/A#
3917860SN/A###################################################
3927860SN/A
3937860SN/A# base/traceflags.{cc,hh} are generated from base/traceflags.py.
3947860SN/A# $TARGET.base will expand to "<build-dir>/base/traceflags".
3957860SN/Aenv.Command(Split('base/traceflags.hh base/traceflags.cc'),
3967860SN/A            'base/traceflags.py',
3977860SN/A            'python $SOURCE $TARGET.base')
3987860SN/A
3997860SN/A# several files are generated from arch/$TARGET_ISA/isa_desc.
4007860SN/Aenv.Command(Split('''
4017860SN/A	arch/%s/decoder.cc
4027860SN/A	arch/%s/decoder.hh
4037860SN/A        arch/%s/alpha_o3_exec.cc
4047860SN/A	arch/%s/fast_cpu_exec.cc
4057860SN/A        arch/%s/simple_cpu_exec.cc
4067860SN/A        arch/%s/full_cpu_exec.cc''' %
4077860SN/A	(env['TARGET_ISA'],
4087860SN/A	env['TARGET_ISA'],
4097860SN/A	env['TARGET_ISA'],
4107860SN/A	env['TARGET_ISA'],
4117860SN/A	env['TARGET_ISA'],
4127860SN/A	env['TARGET_ISA'])),
4137860SN/A	Split('''
4147860SN/A	arch/%s/isa_desc
4157860SN/A	arch/isa_parser.py''' %
4167860SN/A	env['TARGET_ISA']),
4177860SN/A	'$SRCDIR/arch/isa_parser.py $SOURCE $TARGET.dir arch/%s' % env['TARGET_ISA'])
4187860SN/A
4197860SN/A
4207860SN/A# libelf build is described in its own SConscript file.
4217860SN/A# SConscript-local is the per-config build, which just copies some
4227860SN/A# header files into a place where they can be found.
4237860SN/ASConscript('libelf/SConscript-local', exports = 'env', duplicate=0)
4247860SN/ASConscript('python/SConscript', exports = ['env'], duplicate=0)
4257860SN/A
4267860SN/A# This function adds the specified sources to the given build
4277860SN/A# environment, and returns a list of all the corresponding SCons
4287860SN/A# Object nodes (including an extra one for date.cc).  We explicitly
4297860SN/A# add the Object nodes so we can set up special dependencies for
4307860SN/A# date.cc.
4318893Ssaidi@eecs.umich.edudef make_objs(sources, env):
4327860SN/A    objs = [env.Object(s) for s in sources]
4337860SN/A    # make date.cc depend on all other objects so it always gets
4347860SN/A    # recompiled whenever anything else does
4357860SN/A    date_obj = env.Object('base/date.cc')
4368150SN/A    env.Depends(date_obj, objs)
4377860SN/A    objs.append(date_obj)
4387860SN/A    return objs
4397860SN/A
4407860SN/A###################################################
4418835SAli.Saidi@ARM.com#
4427860SN/A# Define binaries.  Each different build type (debug, opt, etc.) gets
4437860SN/A# a slightly different build environment.
4447860SN/A#
4457860SN/A###################################################
4468835SAli.Saidi@ARM.com
4477860SN/A# Include file paths are rooted in this directory.  SCons will
4487860SN/A# automatically expand '.' to refer to both the source directory and
4497860SN/A# the corresponding build directory to pick up generated include
4507860SN/A# files.
4517860SN/Aenv.Append(CPPPATH='.')
4528893Ssaidi@eecs.umich.edu
4537860SN/A# Debug binary
4548825Snilay@cs.wisc.edudebugEnv = env.Copy(OBJSUFFIX='.do')
4558825Snilay@cs.wisc.edudebugEnv.Label = 'debug'
4568825Snilay@cs.wisc.edudebugEnv.Append(CCFLAGS=Split('-g -gstabs+ -O0'))
4577860SN/AdebugEnv.Append(CPPDEFINES='DEBUG')
4587860SN/Atlist = debugEnv.Program(target = 'm5.debug',
4598825Snilay@cs.wisc.edu                         source = make_objs(sources, debugEnv))
4607860SN/AdebugEnv.M5Binary = tlist[0]
4618825Snilay@cs.wisc.edu
4628825Snilay@cs.wisc.edu# Optimized binary
4638825Snilay@cs.wisc.eduoptEnv = env.Copy()
4648825Snilay@cs.wisc.eduoptEnv.Label = 'opt'
4658825Snilay@cs.wisc.eduoptEnv.Append(CCFLAGS=Split('-g -O5'))
4668825Snilay@cs.wisc.edutlist = optEnv.Program(target = 'm5.opt',
4678825Snilay@cs.wisc.edu                       source = make_objs(sources, optEnv))
4688893Ssaidi@eecs.umich.eduoptEnv.M5Binary = tlist[0]
4697860SN/A
4707860SN/A# "Fast" binary
4717860SN/AfastEnv = env.Copy(OBJSUFFIX='.fo')
4728893Ssaidi@eecs.umich.edufastEnv.Label = 'fast'
4737860SN/AfastEnv.Append(CCFLAGS=Split('-O5'))
4747860SN/AfastEnv.Append(CPPDEFINES='NDEBUG')
4757860SN/AfastEnv.Program(target = 'm5.fast.unstripped',
4767860SN/A                source = make_objs(sources, fastEnv))
4778150SN/Atlist = fastEnv.Command(target = 'm5.fast',
4787860SN/A                        source = 'm5.fast.unstripped',
4797860SN/A                        action = 'strip $SOURCE -o $TARGET')
4807860SN/AfastEnv.M5Binary = tlist[0]
4817860SN/A
4828835SAli.Saidi@ARM.com# Profiled binary
4837860SN/AprofEnv = env.Copy(OBJSUFFIX='.po')
4847860SN/AprofEnv.Label = 'prof'
4857860SN/AprofEnv.Append(CCFLAGS=Split('-O5 -g -pg'), LINKFLAGS='-pg')
4867860SN/Atlist = profEnv.Program(target = 'm5.prof',
4878835SAli.Saidi@ARM.com                        source = make_objs(sources, profEnv))
4887860SN/AprofEnv.M5Binary = tlist[0]
4897860SN/A
4907860SN/AenvList = [debugEnv, optEnv, fastEnv, profEnv]
4917860SN/A
4928893Ssaidi@eecs.umich.eduReturn('envList')
4938893Ssaidi@eecs.umich.edu