SConscript revision 1511
15331Sgblack@eecs.umich.edu# -*- mode:python -*-
25331Sgblack@eecs.umich.edu
35331Sgblack@eecs.umich.edu# Copyright (c) 2004 The Regents of The University of Michigan
45331Sgblack@eecs.umich.edu# All rights reserved.
55331Sgblack@eecs.umich.edu#
65331Sgblack@eecs.umich.edu# Redistribution and use in source and binary forms, with or without
75331Sgblack@eecs.umich.edu# modification, are permitted provided that the following conditions are
85331Sgblack@eecs.umich.edu# met: redistributions of source code must retain the above copyright
95331Sgblack@eecs.umich.edu# notice, this list of conditions and the following disclaimer;
105331Sgblack@eecs.umich.edu# redistributions in binary form must reproduce the above copyright
115331Sgblack@eecs.umich.edu# notice, this list of conditions and the following disclaimer in the
125331Sgblack@eecs.umich.edu# documentation and/or other materials provided with the distribution;
135331Sgblack@eecs.umich.edu# neither the name of the copyright holders nor the names of its
145331Sgblack@eecs.umich.edu# contributors may be used to endorse or promote products derived from
155331Sgblack@eecs.umich.edu# this software without specific prior written permission.
165331Sgblack@eecs.umich.edu#
175331Sgblack@eecs.umich.edu# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
185331Sgblack@eecs.umich.edu# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
195331Sgblack@eecs.umich.edu# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
205331Sgblack@eecs.umich.edu# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
215331Sgblack@eecs.umich.edu# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
225331Sgblack@eecs.umich.edu# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
235331Sgblack@eecs.umich.edu# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
245331Sgblack@eecs.umich.edu# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
255331Sgblack@eecs.umich.edu# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
265331Sgblack@eecs.umich.edu# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
275331Sgblack@eecs.umich.edu# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
285331Sgblack@eecs.umich.edu
295331Sgblack@eecs.umich.eduimport os
304276Sgblack@eecs.umich.eduimport sys
314276Sgblack@eecs.umich.edu
324276Sgblack@eecs.umich.edu# This file defines how to build a particular configuration of M5
334276Sgblack@eecs.umich.edu# based on variable settings in the 'env' build environment.
344276Sgblack@eecs.umich.edu
354276Sgblack@eecs.umich.edu# Import build environment variable from SConstruct.
364276Sgblack@eecs.umich.eduImport('env')
374276Sgblack@eecs.umich.edu
384276Sgblack@eecs.umich.edu###################################################
394276Sgblack@eecs.umich.edu#
404276Sgblack@eecs.umich.edu# Define needed sources.
414276Sgblack@eecs.umich.edu#
424276Sgblack@eecs.umich.edu###################################################
434276Sgblack@eecs.umich.edu
444276Sgblack@eecs.umich.edu# Base sources used by all configurations.
454276Sgblack@eecs.umich.edubase_sources = Split('''
464276Sgblack@eecs.umich.edu	arch/alpha/decoder.cc
474276Sgblack@eecs.umich.edu	arch/alpha/fast_cpu_exec.cc
484276Sgblack@eecs.umich.edu	arch/alpha/simple_cpu_exec.cc
494276Sgblack@eecs.umich.edu	arch/alpha/inorder_cpu_exec.cc
504276Sgblack@eecs.umich.edu	arch/alpha/full_cpu_exec.cc
514276Sgblack@eecs.umich.edu	arch/alpha/faults.cc
524276Sgblack@eecs.umich.edu	arch/alpha/isa_traits.cc
534276Sgblack@eecs.umich.edu
544276Sgblack@eecs.umich.edu	base/circlebuf.cc
554276Sgblack@eecs.umich.edu	base/copyright.cc
564276Sgblack@eecs.umich.edu	base/cprintf.cc
574276Sgblack@eecs.umich.edu        base/embedfile.cc
584276Sgblack@eecs.umich.edu	base/fast_alloc.cc
594276Sgblack@eecs.umich.edu	base/fifo_buffer.cc
604276Sgblack@eecs.umich.edu	base/hostinfo.cc
614276Sgblack@eecs.umich.edu	base/hybrid_pred.cc
624276Sgblack@eecs.umich.edu	base/inifile.cc
634276Sgblack@eecs.umich.edu	base/intmath.cc
644276Sgblack@eecs.umich.edu	base/match.cc
654276Sgblack@eecs.umich.edu	base/misc.cc
664276Sgblack@eecs.umich.edu	base/output.cc
674276Sgblack@eecs.umich.edu	base/pollevent.cc
684276Sgblack@eecs.umich.edu	base/python.cc
694276Sgblack@eecs.umich.edu	base/range.cc
704276Sgblack@eecs.umich.edu	base/random.cc
714276Sgblack@eecs.umich.edu	base/sat_counter.cc
724276Sgblack@eecs.umich.edu	base/socket.cc
734276Sgblack@eecs.umich.edu	base/statistics.cc
744276Sgblack@eecs.umich.edu	base/str.cc
754276Sgblack@eecs.umich.edu	base/time.cc
764276Sgblack@eecs.umich.edu	base/trace.cc
774276Sgblack@eecs.umich.edu	base/traceflags.cc
784276Sgblack@eecs.umich.edu	base/userinfo.cc
794276Sgblack@eecs.umich.edu	base/compression/lzss_compression.cc
804276Sgblack@eecs.umich.edu	base/loader/aout_object.cc
814276Sgblack@eecs.umich.edu	base/loader/ecoff_object.cc
824276Sgblack@eecs.umich.edu	base/loader/elf_object.cc
834276Sgblack@eecs.umich.edu	base/loader/object_file.cc
844276Sgblack@eecs.umich.edu	base/loader/symtab.cc
854276Sgblack@eecs.umich.edu	base/stats/events.cc
864276Sgblack@eecs.umich.edu	base/stats/python.cc
874276Sgblack@eecs.umich.edu	base/stats/statdb.cc
884276Sgblack@eecs.umich.edu	base/stats/visit.cc
894711Sgblack@eecs.umich.edu	base/stats/text.cc
904276Sgblack@eecs.umich.edu
914276Sgblack@eecs.umich.edu	cpu/base_cpu.cc
925238Sgblack@eecs.umich.edu	cpu/exec_context.cc
935238Sgblack@eecs.umich.edu	cpu/exetrace.cc
945238Sgblack@eecs.umich.edu	cpu/pc_event.cc
955238Sgblack@eecs.umich.edu	cpu/static_inst.cc
965937Sgblack@eecs.umich.edu	cpu/fast_cpu/fast_cpu.cc
975902Sgblack@eecs.umich.edu	cpu/full_cpu/bpred.cc
985238Sgblack@eecs.umich.edu	cpu/full_cpu/commit.cc
995238Sgblack@eecs.umich.edu	cpu/full_cpu/create_vector.cc
1005238Sgblack@eecs.umich.edu	cpu/full_cpu/cv_spec_state.cc
1015238Sgblack@eecs.umich.edu	cpu/full_cpu/dd_queue.cc
1025238Sgblack@eecs.umich.edu	cpu/full_cpu/dep_link.cc
1035238Sgblack@eecs.umich.edu	cpu/full_cpu/dispatch.cc
1045238Sgblack@eecs.umich.edu	cpu/full_cpu/dyn_inst.cc
1055238Sgblack@eecs.umich.edu	cpu/full_cpu/execute.cc
1065238Sgblack@eecs.umich.edu	cpu/full_cpu/fetch.cc
1075238Sgblack@eecs.umich.edu	cpu/full_cpu/floss_reasons.cc
1085238Sgblack@eecs.umich.edu	cpu/full_cpu/fu_pool.cc
1095238Sgblack@eecs.umich.edu	cpu/full_cpu/full_cpu.cc
1105238Sgblack@eecs.umich.edu	cpu/full_cpu/inst_fifo.cc
1115238Sgblack@eecs.umich.edu	cpu/full_cpu/instpipe.cc
1125238Sgblack@eecs.umich.edu	cpu/full_cpu/issue.cc
1135238Sgblack@eecs.umich.edu	cpu/full_cpu/ls_queue.cc
1145238Sgblack@eecs.umich.edu	cpu/full_cpu/machine_queue.cc
1155238Sgblack@eecs.umich.edu        cpu/full_cpu/pc_sample_profile.cc
1165238Sgblack@eecs.umich.edu	cpu/full_cpu/pipetrace.cc
1175238Sgblack@eecs.umich.edu	cpu/full_cpu/readyq.cc
1185238Sgblack@eecs.umich.edu	cpu/full_cpu/reg_info.cc
1195238Sgblack@eecs.umich.edu	cpu/full_cpu/rob_station.cc
1205238Sgblack@eecs.umich.edu	cpu/full_cpu/spec_memory.cc
1215238Sgblack@eecs.umich.edu	cpu/full_cpu/spec_state.cc
1225238Sgblack@eecs.umich.edu	cpu/full_cpu/storebuffer.cc
1235238Sgblack@eecs.umich.edu	cpu/full_cpu/writeback.cc
1245238Sgblack@eecs.umich.edu	cpu/full_cpu/iq/iq_station.cc
1255238Sgblack@eecs.umich.edu	cpu/full_cpu/iq/iqueue.cc
1265238Sgblack@eecs.umich.edu	cpu/full_cpu/iq/segmented/chain_info.cc
1275238Sgblack@eecs.umich.edu	cpu/full_cpu/iq/segmented/chain_wire.cc
1286055Sgblack@eecs.umich.edu	cpu/full_cpu/iq/segmented/iq_seg.cc
1296054Sgblack@eecs.umich.edu	cpu/full_cpu/iq/segmented/iq_segmented.cc
1305238Sgblack@eecs.umich.edu	cpu/full_cpu/iq/segmented/seg_chain.cc
1315683Sgblack@eecs.umich.edu	cpu/full_cpu/iq/seznec/iq_seznec.cc
1325238Sgblack@eecs.umich.edu	cpu/full_cpu/iq/standard/iq_standard.cc
1335238Sgblack@eecs.umich.edu	cpu/sampling_cpu/sampling_cpu.cc
1345238Sgblack@eecs.umich.edu	cpu/simple_cpu/simple_cpu.cc
1355238Sgblack@eecs.umich.edu	cpu/inorder_cpu/inorder_cpu.cc
1365238Sgblack@eecs.umich.edu	cpu/trace/reader/mem_trace_reader.cc
1375238Sgblack@eecs.umich.edu	cpu/trace/reader/ibm_reader.cc
1385238Sgblack@eecs.umich.edu	cpu/trace/reader/itx_reader.cc
1395238Sgblack@eecs.umich.edu	cpu/trace/reader/m5_reader.cc
1405291Sgblack@eecs.umich.edu
1415291Sgblack@eecs.umich.edu	mem/base_hier.cc
1425291Sgblack@eecs.umich.edu	mem/base_mem.cc
1435291Sgblack@eecs.umich.edu	mem/hier_params.cc
1445291Sgblack@eecs.umich.edu	mem/mem_cmd.cc
1455291Sgblack@eecs.umich.edu	mem/mem_debug.cc
1465291Sgblack@eecs.umich.edu	mem/mem_req.cc
1475291Sgblack@eecs.umich.edu	mem/memory_interface.cc
1485291Sgblack@eecs.umich.edu	mem/bus/base_interface.cc
1495292Sgblack@eecs.umich.edu	mem/bus/bus.cc
1505292Sgblack@eecs.umich.edu	mem/bus/bus_bridge.cc
1515292Sgblack@eecs.umich.edu	mem/bus/bus_bridge_master.cc
1525292Sgblack@eecs.umich.edu	mem/bus/bus_bridge_slave.cc
1535292Sgblack@eecs.umich.edu	mem/bus/bus_interface.cc
1545292Sgblack@eecs.umich.edu	mem/bus/dma_bus_interface.cc
1555292Sgblack@eecs.umich.edu	mem/bus/dma_interface.cc
1565292Sgblack@eecs.umich.edu	mem/bus/master_interface.cc
1575292Sgblack@eecs.umich.edu	mem/bus/slave_interface.cc
1586055Sgblack@eecs.umich.edu	mem/cache/base_cache.cc
1596054Sgblack@eecs.umich.edu	mem/cache/cache.cc
1605359Sgblack@eecs.umich.edu	mem/cache/cache_builder.cc
1615238Sgblack@eecs.umich.edu	mem/cache/coherence/coherence_protocol.cc
1625238Sgblack@eecs.umich.edu	mem/cache/coherence/uni_coherence.cc
1635238Sgblack@eecs.umich.edu	mem/cache/miss/blocking_buffer.cc
1644276Sgblack@eecs.umich.edu	mem/cache/miss/miss_queue.cc
1654276Sgblack@eecs.umich.edu	mem/cache/miss/mshr.cc
1665789Sgblack@eecs.umich.edu	mem/cache/miss/mshr_queue.cc
1675789Sgblack@eecs.umich.edu	mem/cache/tags/base_tags.cc
1685789Sgblack@eecs.umich.edu	mem/cache/tags/cache_tags.cc
1695789Sgblack@eecs.umich.edu	mem/cache/tags/fa_lru.cc
1705789Sgblack@eecs.umich.edu	mem/cache/tags/iic.cc
1715789Sgblack@eecs.umich.edu	mem/cache/tags/lru.cc
1725789Sgblack@eecs.umich.edu	mem/cache/tags/split.cc
1735789Sgblack@eecs.umich.edu	mem/cache/tags/split_lifo.cc
1745789Sgblack@eecs.umich.edu	mem/cache/tags/split_lru.cc
1755789Sgblack@eecs.umich.edu	mem/cache/tags/repl/gen.cc
1765789Sgblack@eecs.umich.edu	mem/cache/tags/repl/repl.cc
1775789Sgblack@eecs.umich.edu	mem/functional_mem/functional_memory.cc
1785789Sgblack@eecs.umich.edu	mem/functional_mem/main_memory.cc
1795789Sgblack@eecs.umich.edu	mem/timing_mem/base_memory.cc
1805789Sgblack@eecs.umich.edu	mem/timing_mem/memory_builder.cc
1815789Sgblack@eecs.umich.edu	mem/timing_mem/simple_mem_bank.cc
1825789Sgblack@eecs.umich.edu        mem/trace/itx_writer.cc
1835789Sgblack@eecs.umich.edu	mem/trace/mem_trace_writer.cc
1845789Sgblack@eecs.umich.edu	mem/trace/m5_writer.cc
1855789Sgblack@eecs.umich.edu
1865789Sgblack@eecs.umich.edu        python/pyconfig.cc
1875789Sgblack@eecs.umich.edu        python/embedded_py.cc
1885789Sgblack@eecs.umich.edu
1895789Sgblack@eecs.umich.edu	sim/builder.cc
1905789Sgblack@eecs.umich.edu	sim/configfile.cc
1915789Sgblack@eecs.umich.edu	sim/debug.cc
1925789Sgblack@eecs.umich.edu	sim/eventq.cc
1935789Sgblack@eecs.umich.edu	sim/main.cc
1945789Sgblack@eecs.umich.edu	sim/param.cc
1955789Sgblack@eecs.umich.edu	sim/profile.cc
1965789Sgblack@eecs.umich.edu	sim/serialize.cc
1975789Sgblack@eecs.umich.edu	sim/sim_events.cc
1985789Sgblack@eecs.umich.edu	sim/sim_exit.cc
1995789Sgblack@eecs.umich.edu	sim/sim_object.cc
2005789Sgblack@eecs.umich.edu	sim/startup.cc
2015789Sgblack@eecs.umich.edu	sim/stat_context.cc
2025789Sgblack@eecs.umich.edu	sim/stat_control.cc
2035789Sgblack@eecs.umich.edu	sim/trace_context.cc
2045789Sgblack@eecs.umich.edu	sim/universe.cc
2055789Sgblack@eecs.umich.edu        ''')
2065789Sgblack@eecs.umich.edu
2075789Sgblack@eecs.umich.edu# MySql sources
2085789Sgblack@eecs.umich.edumysql_sources = Split('''
2095789Sgblack@eecs.umich.edu	base/mysql.cc
2105789Sgblack@eecs.umich.edu	base/stats/mysql.cc
2115789Sgblack@eecs.umich.edu        ''')
2125789Sgblack@eecs.umich.edu
2135789Sgblack@eecs.umich.edu# Full-system sources
2145789Sgblack@eecs.umich.edufull_system_sources = Split('''
2155789Sgblack@eecs.umich.edu	arch/alpha/alpha_memory.cc
2165789Sgblack@eecs.umich.edu	arch/alpha/arguments.cc
2175789Sgblack@eecs.umich.edu	arch/alpha/ev5.cc
2185789Sgblack@eecs.umich.edu	arch/alpha/osfpal.cc
2195789Sgblack@eecs.umich.edu	arch/alpha/pseudo_inst.cc
2205789Sgblack@eecs.umich.edu	arch/alpha/vtophys.cc
2215789Sgblack@eecs.umich.edu
2225789Sgblack@eecs.umich.edu	base/crc.cc
2235789Sgblack@eecs.umich.edu	base/inet.cc
2245789Sgblack@eecs.umich.edu	base/remote_gdb.cc
2255789Sgblack@eecs.umich.edu
2265789Sgblack@eecs.umich.edu	cpu/intr_control.cc
2275789Sgblack@eecs.umich.edu
2285789Sgblack@eecs.umich.edu	dev/alpha_console.cc
2295789Sgblack@eecs.umich.edu	dev/baddev.cc
2305789Sgblack@eecs.umich.edu        dev/simconsole.cc
2315789Sgblack@eecs.umich.edu	dev/disk_image.cc
2325789Sgblack@eecs.umich.edu	dev/dma.cc
2335789Sgblack@eecs.umich.edu	dev/etherbus.cc
2345789Sgblack@eecs.umich.edu	dev/etherdump.cc
2355789Sgblack@eecs.umich.edu	dev/etherint.cc
2365789Sgblack@eecs.umich.edu	dev/etherlink.cc
2375789Sgblack@eecs.umich.edu	dev/etherpkt.cc
2385789Sgblack@eecs.umich.edu	dev/ethertap.cc
2395789Sgblack@eecs.umich.edu	dev/ide_ctrl.cc
2405789Sgblack@eecs.umich.edu	dev/ide_disk.cc
2415789Sgblack@eecs.umich.edu	dev/io_device.cc
2425789Sgblack@eecs.umich.edu	dev/ns_gige.cc
2435789Sgblack@eecs.umich.edu	dev/etherdev.cc
2445789Sgblack@eecs.umich.edu	dev/pciconfigall.cc
2455789Sgblack@eecs.umich.edu	dev/pcidev.cc
2465789Sgblack@eecs.umich.edu	dev/pktfifo.cc
2475789Sgblack@eecs.umich.edu	dev/scsi.cc
2485789Sgblack@eecs.umich.edu	dev/scsi_ctrl.cc
2495789Sgblack@eecs.umich.edu	dev/scsi_disk.cc
2505789Sgblack@eecs.umich.edu	dev/scsi_none.cc
2515789Sgblack@eecs.umich.edu	dev/sinic.cc
2525789Sgblack@eecs.umich.edu	dev/simple_disk.cc
2535789Sgblack@eecs.umich.edu	dev/tlaser_clock.cc
2545789Sgblack@eecs.umich.edu	dev/tlaser_ipi.cc
2555789Sgblack@eecs.umich.edu	dev/tlaser_mbox.cc
2564712Sgblack@eecs.umich.edu	dev/tlaser_mc146818.cc
2575907Sgblack@eecs.umich.edu	dev/tlaser_node.cc
2585907Sgblack@eecs.umich.edu	dev/tlaser_pcia.cc
2595907Sgblack@eecs.umich.edu	dev/tlaser_pcidev.cc
2605907Sgblack@eecs.umich.edu	dev/tlaser_serial.cc
2615907Sgblack@eecs.umich.edu	dev/turbolaser.cc
2625907Sgblack@eecs.umich.edu	dev/tsunami.cc
2635907Sgblack@eecs.umich.edu	dev/tsunami_cchip.cc
2644712Sgblack@eecs.umich.edu	dev/tsunami_fake.cc
2655659Sgblack@eecs.umich.edu	dev/tsunami_io.cc
2664712Sgblack@eecs.umich.edu	dev/tsunami_pchip.cc
2675933Sgblack@eecs.umich.edu	dev/uart.cc
2685908Sgblack@eecs.umich.edu
2695908Sgblack@eecs.umich.edu	kern/kernel_binning.cc
2705908Sgblack@eecs.umich.edu	kern/kernel_stats.cc
2715908Sgblack@eecs.umich.edu	kern/system_events.cc
2725908Sgblack@eecs.umich.edu	kern/linux/linux_events.cc
2735908Sgblack@eecs.umich.edu	kern/linux/linux_syscalls.cc
2745908Sgblack@eecs.umich.edu	kern/linux/linux_system.cc
2755908Sgblack@eecs.umich.edu	kern/linux/printk.cc
2765908Sgblack@eecs.umich.edu	kern/tru64/dump_mbuf.cc
2774276Sgblack@eecs.umich.edu	kern/tru64/printf.cc
2784276Sgblack@eecs.umich.edu	kern/tru64/tru64_events.cc
2794712Sgblack@eecs.umich.edu	kern/tru64/tru64_syscalls.cc
2804712Sgblack@eecs.umich.edu	kern/tru64/tru64_system.cc
2814730Sgblack@eecs.umich.edu
2824760Sgblack@eecs.umich.edu	mem/functional_mem/memory_control.cc
2834730Sgblack@eecs.umich.edu	mem/functional_mem/physical_memory.cc
2845920Sgblack@eecs.umich.edu        dev/platform.cc
2855422Sgblack@eecs.umich.edu
2865422Sgblack@eecs.umich.edu	sim/system.cc
2874276Sgblack@eecs.umich.edu        ''')
2886576Sgblack@eecs.umich.edu
2896576Sgblack@eecs.umich.edu# Syscall emulation (non-full-system) sources
2906576Sgblack@eecs.umich.edusyscall_emulation_sources = Split('''
2916576Sgblack@eecs.umich.edu	arch/alpha/alpha_common_syscall_emul.cc
2926576Sgblack@eecs.umich.edu	arch/alpha/alpha_linux_process.cc
2936576Sgblack@eecs.umich.edu	arch/alpha/alpha_tru64_process.cc
2946576Sgblack@eecs.umich.edu	cpu/memtest/memtest.cc
2956576Sgblack@eecs.umich.edu        cpu/trace/opt_cpu.cc
2966576Sgblack@eecs.umich.edu	cpu/trace/trace_cpu.cc
2976576Sgblack@eecs.umich.edu	eio/eio.cc
2986576Sgblack@eecs.umich.edu	eio/exolex.cc
2996576Sgblack@eecs.umich.edu	eio/libexo.cc
3006576Sgblack@eecs.umich.edu	sim/process.cc
3016576Sgblack@eecs.umich.edu	sim/syscall_emul.cc
3026576Sgblack@eecs.umich.edu        ''')
3036576Sgblack@eecs.umich.edu
3046576Sgblack@eecs.umich.edutargetarch_files = Split('''
3056576Sgblack@eecs.umich.edu        alpha_common_syscall_emul.hh
3065020Sgblack@eecs.umich.edu        alpha_linux_process.hh
3076576Sgblack@eecs.umich.edu        alpha_memory.hh
3086576Sgblack@eecs.umich.edu        alpha_tru64_process.hh
3096576Sgblack@eecs.umich.edu        aout_machdep.h
3106576Sgblack@eecs.umich.edu        arguments.hh
3116576Sgblack@eecs.umich.edu        byte_swap.hh
3126576Sgblack@eecs.umich.edu        ecoff_machdep.h
3136576Sgblack@eecs.umich.edu        elf_machdep.h
3145020Sgblack@eecs.umich.edu        ev5.hh
3156576Sgblack@eecs.umich.edu        faults.hh
3166576Sgblack@eecs.umich.edu        isa_fullsys_traits.hh
3176576Sgblack@eecs.umich.edu        isa_traits.hh
3186576Sgblack@eecs.umich.edu        machine_exo.h
3196576Sgblack@eecs.umich.edu        osfpal.hh
3206576Sgblack@eecs.umich.edu        pseudo_inst.hh
3216576Sgblack@eecs.umich.edu        vptr.hh
3226576Sgblack@eecs.umich.edu        vtophys.hh
3236576Sgblack@eecs.umich.edu        ''')
3246576Sgblack@eecs.umich.edu
3256576Sgblack@eecs.umich.edufor f in targetarch_files:
3266576Sgblack@eecs.umich.edu    env.Command('targetarch/' + f, 'arch/alpha/' + f,
3276576Sgblack@eecs.umich.edu                '''echo '#include "arch/alpha/%s"' > $TARGET''' % f)
3286576Sgblack@eecs.umich.edu
3296576Sgblack@eecs.umich.edu
3306576Sgblack@eecs.umich.edu# Set up complete list of sources based on configuration.
3316576Sgblack@eecs.umich.edusources = base_sources
3326576Sgblack@eecs.umich.edu
3336576Sgblack@eecs.umich.eduif env['FULL_SYSTEM']:
3344760Sgblack@eecs.umich.edu    sources += full_system_sources
3356576Sgblack@eecs.umich.eduelse:
3366576Sgblack@eecs.umich.edu    sources += syscall_emulation_sources
3376576Sgblack@eecs.umich.edu
3386576Sgblack@eecs.umich.eduextra_libraries = []
3396576Sgblack@eecs.umich.eduenv.Append(LIBS=['z'])
3406576Sgblack@eecs.umich.eduif env['USE_MYSQL']:
3416576Sgblack@eecs.umich.edu    sources += mysql_sources
3426576Sgblack@eecs.umich.edu    env.Append(CPPDEFINES = 'USE_MYSQL')
3436576Sgblack@eecs.umich.edu    env.Append(CPPDEFINES = 'STATS_BINNING')
3446576Sgblack@eecs.umich.edu    env.Append(CPPPATH=['/usr/local/include/mysql', '/usr/include/mysql'])
3456576Sgblack@eecs.umich.edu    if os.path.isdir('/usr/lib64'):
3466576Sgblack@eecs.umich.edu        env.Append(LIBPATH=['/usr/lib64/mysql'])
3476576Sgblack@eecs.umich.edu    else:
3486576Sgblack@eecs.umich.edu        env.Append(LIBPATH=['/usr/lib/mysql/'])
3496576Sgblack@eecs.umich.edu    env.Append(LIBS=['mysqlclient'])
3506576Sgblack@eecs.umich.edu
3514760Sgblack@eecs.umich.edu
3526576Sgblack@eecs.umich.edu###################################################
3536576Sgblack@eecs.umich.edu#
3546576Sgblack@eecs.umich.edu# Special build rules.
3556576Sgblack@eecs.umich.edu#
3566576Sgblack@eecs.umich.edu###################################################
3576576Sgblack@eecs.umich.edu
3586576Sgblack@eecs.umich.edu# base/traceflags.{cc,hh} are generated from base/traceflags.py.
3596576Sgblack@eecs.umich.edu# $TARGET.base will expand to "<build-dir>/base/traceflags".
3606576Sgblack@eecs.umich.eduenv.Command(Split('base/traceflags.hh base/traceflags.cc'),
3616576Sgblack@eecs.umich.edu            'base/traceflags.py',
3626576Sgblack@eecs.umich.edu            'python $SOURCE $TARGET.base')
3636576Sgblack@eecs.umich.edu
3646576Sgblack@eecs.umich.edu# several files are generated from arch/$TARGET_ISA/isa_desc.
3656576Sgblack@eecs.umich.eduenv.Command(Split('''arch/alpha/decoder.cc
3666576Sgblack@eecs.umich.edu		     arch/alpha/decoder.hh
3676576Sgblack@eecs.umich.edu		     arch/alpha/fast_cpu_exec.cc
3686576Sgblack@eecs.umich.edu                     arch/alpha/simple_cpu_exec.cc
3694760Sgblack@eecs.umich.edu                     arch/alpha/inorder_cpu_exec.cc
3704276Sgblack@eecs.umich.edu                     arch/alpha/full_cpu_exec.cc'''),
3715020Sgblack@eecs.umich.edu            Split('''arch/alpha/isa_desc
3725020Sgblack@eecs.umich.edu		     arch/isa_parser.py'''),
3735020Sgblack@eecs.umich.edu            '$SRCDIR/arch/isa_parser.py $SOURCE $TARGET.dir arch/alpha')
3745031Sgblack@eecs.umich.edu
3755031Sgblack@eecs.umich.edu
3765031Sgblack@eecs.umich.edu# libelf build is described in its own SConscript file.
3775031Sgblack@eecs.umich.edu# SConscript-local is the per-config build, which just copies some
3786563Sgblack@eecs.umich.edu# header files into a place where they can be found.
3795020Sgblack@eecs.umich.eduSConscript('libelf/SConscript-local', exports = 'env', duplicate=0)
3805020Sgblack@eecs.umich.eduSConscript('python/SConscript', exports = ['env'], duplicate=0)
3815020Sgblack@eecs.umich.edu
3825020Sgblack@eecs.umich.edu
3835020Sgblack@eecs.umich.edu# This function adds the specified sources to the given build
3845020Sgblack@eecs.umich.edu# environment, and returns a list of all the corresponding SCons
3855020Sgblack@eecs.umich.edu# Object nodes (including an extra one for date.cc).  We explicitly
3865020Sgblack@eecs.umich.edu# add the Object nodes so we can set up special dependencies for
3876563Sgblack@eecs.umich.edu# date.cc.
3885020Sgblack@eecs.umich.edudef make_objs(sources, env):
3895020Sgblack@eecs.umich.edu    objs = [env.Object(s) for s in sources]
3905020Sgblack@eecs.umich.edu    # make date.cc depend on all other objects so it always gets
3915020Sgblack@eecs.umich.edu    # recompiled whenever anything else does
3925020Sgblack@eecs.umich.edu    date_obj = env.Object('base/date.cc')
3935020Sgblack@eecs.umich.edu    env.Depends(date_obj, objs)
3946564Sgblack@eecs.umich.edu    objs.append(date_obj)
3956564Sgblack@eecs.umich.edu    objs.extend(extra_libraries)
3966563Sgblack@eecs.umich.edu    return objs
3975020Sgblack@eecs.umich.edu
3985020Sgblack@eecs.umich.edu###################################################
3995020Sgblack@eecs.umich.edu#
4005058Sgblack@eecs.umich.edu# Define binaries.  Each different build type (debug, opt, etc.) gets
4015020Sgblack@eecs.umich.edu# a slightly different build environment.
4025020Sgblack@eecs.umich.edu#
4035020Sgblack@eecs.umich.edu###################################################
4045020Sgblack@eecs.umich.edu
4055046Sgblack@eecs.umich.edu# Include file paths are rooted in this directory.  SCons will
4065046Sgblack@eecs.umich.edu# automatically expand '.' to refer to both the source directory and
4075046Sgblack@eecs.umich.edu# the corresponding build directory to pick up generated include
4085046Sgblack@eecs.umich.edu# files.
4095020Sgblack@eecs.umich.eduenv.Append(CPPPATH='.')
4105020Sgblack@eecs.umich.edu
4115020Sgblack@eecs.umich.edu# Debug binary
4125020Sgblack@eecs.umich.edudebug = env.Copy(OBJSUFFIX='.do')
4134276Sgblack@eecs.umich.edudebug.Append(CCFLAGS=Split('-g -gstabs+ -O0'))
4144276Sgblack@eecs.umich.edudebug.Append(CPPDEFINES='DEBUG')
4155149Sgblack@eecs.umich.edudebug.Program(target = 'm5.debug', source = make_objs(sources, debug))
4165409Sgblack@eecs.umich.edu
4175149Sgblack@eecs.umich.edu# Optimized binary
4184712Sgblack@eecs.umich.eduopt = env.Copy()
4195972Sgblack@eecs.umich.eduopt.Append(CCFLAGS=Split('-g -O5'))
4204712Sgblack@eecs.umich.eduopt.Program(target = 'm5.opt', source = make_objs(sources, opt))
4215972Sgblack@eecs.umich.edu
4225972Sgblack@eecs.umich.edu# "Fast" binary
4235972Sgblack@eecs.umich.edufast = env.Copy(OBJSUFFIX='.fo')
4244712Sgblack@eecs.umich.edufast.Append(CCFLAGS=Split('-O5'))
4254730Sgblack@eecs.umich.edufast.Append(CPPDEFINES='NDEBUG')
4264712Sgblack@eecs.umich.edufast.Program(target = 'm5.fast.unstripped', source = make_objs(sources, fast))
4274276Sgblack@eecs.umich.edufast.Command(target = 'm5.fast', source = 'm5.fast.unstripped',
4284276Sgblack@eecs.umich.edu             action = 'strip $SOURCE -o $TARGET')
4294712Sgblack@eecs.umich.edu
4304712Sgblack@eecs.umich.edu# Profiled binary
4314712Sgblack@eecs.umich.eduprof = env.Copy(OBJSUFFIX='.po')
4324712Sgblack@eecs.umich.eduprof.Append(CCFLAGS=Split('-O5 -g -pg'), LINKFLAGS='-pg')
4334712Sgblack@eecs.umich.eduprof.Program(target = 'm5.prof', source = make_objs(sources, prof))
4344712Sgblack@eecs.umich.edu