SConscript revision 1078
14519Sgblack@eecs.umich.edu# -*- mode:python -*- 24519Sgblack@eecs.umich.edu 34519Sgblack@eecs.umich.edu# Copyright (c) 2004 The Regents of The University of Michigan 44519Sgblack@eecs.umich.edu# All rights reserved. 54519Sgblack@eecs.umich.edu# 64519Sgblack@eecs.umich.edu# Redistribution and use in source and binary forms, with or without 74519Sgblack@eecs.umich.edu# modification, are permitted provided that the following conditions are 84519Sgblack@eecs.umich.edu# met: redistributions of source code must retain the above copyright 94519Sgblack@eecs.umich.edu# notice, this list of conditions and the following disclaimer; 104519Sgblack@eecs.umich.edu# redistributions in binary form must reproduce the above copyright 114519Sgblack@eecs.umich.edu# notice, this list of conditions and the following disclaimer in the 124519Sgblack@eecs.umich.edu# documentation and/or other materials provided with the distribution; 134519Sgblack@eecs.umich.edu# neither the name of the copyright holders nor the names of its 144519Sgblack@eecs.umich.edu# contributors may be used to endorse or promote products derived from 154519Sgblack@eecs.umich.edu# this software without specific prior written permission. 164519Sgblack@eecs.umich.edu# 174519Sgblack@eecs.umich.edu# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 184519Sgblack@eecs.umich.edu# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 194519Sgblack@eecs.umich.edu# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 204519Sgblack@eecs.umich.edu# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 214519Sgblack@eecs.umich.edu# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 224519Sgblack@eecs.umich.edu# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 234519Sgblack@eecs.umich.edu# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 244519Sgblack@eecs.umich.edu# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 254519Sgblack@eecs.umich.edu# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 264519Sgblack@eecs.umich.edu# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 274519Sgblack@eecs.umich.edu# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 284519Sgblack@eecs.umich.edu 294519Sgblack@eecs.umich.eduimport os 304519Sgblack@eecs.umich.eduimport sys 314519Sgblack@eecs.umich.edu 324519Sgblack@eecs.umich.edu# This file defines how to build a particular configuration of M5 334519Sgblack@eecs.umich.edu# based on variable settings in the 'env' build environment. 344519Sgblack@eecs.umich.edu 354519Sgblack@eecs.umich.edu# Import build environment variable from SConstruct. 364519Sgblack@eecs.umich.eduImport('env') 374519Sgblack@eecs.umich.edu 384519Sgblack@eecs.umich.edu################################################### 394519Sgblack@eecs.umich.edu# 404519Sgblack@eecs.umich.edu# Define needed sources. 414519Sgblack@eecs.umich.edu# 424519Sgblack@eecs.umich.edu################################################### 434519Sgblack@eecs.umich.edu 444519Sgblack@eecs.umich.edu# Base sources used by all configurations. 454519Sgblack@eecs.umich.edubase_sources = Split(''' 464519Sgblack@eecs.umich.edu arch/alpha/decoder.cc 474519Sgblack@eecs.umich.edu arch/alpha/fast_cpu_exec.cc 484519Sgblack@eecs.umich.edu arch/alpha/simple_cpu_exec.cc 494519Sgblack@eecs.umich.edu arch/alpha/full_cpu_exec.cc 504519Sgblack@eecs.umich.edu arch/alpha/faults.cc 514519Sgblack@eecs.umich.edu arch/alpha/isa_traits.cc 524519Sgblack@eecs.umich.edu 534519Sgblack@eecs.umich.edu base/circlebuf.cc 544519Sgblack@eecs.umich.edu base/copyright.cc 554519Sgblack@eecs.umich.edu base/cprintf.cc 564519Sgblack@eecs.umich.edu base/fast_alloc.cc 574519Sgblack@eecs.umich.edu base/fifo_buffer.cc 584519Sgblack@eecs.umich.edu base/hostinfo.cc 594519Sgblack@eecs.umich.edu base/hybrid_pred.cc 604519Sgblack@eecs.umich.edu base/inifile.cc 614519Sgblack@eecs.umich.edu base/intmath.cc 624519Sgblack@eecs.umich.edu base/match.cc 634519Sgblack@eecs.umich.edu base/misc.cc 644519Sgblack@eecs.umich.edu base/pollevent.cc 654519Sgblack@eecs.umich.edu base/python.cc 664519Sgblack@eecs.umich.edu base/range.cc 674519Sgblack@eecs.umich.edu base/sat_counter.cc 684809Sgblack@eecs.umich.edu base/socket.cc 694519Sgblack@eecs.umich.edu base/statistics.cc 704519Sgblack@eecs.umich.edu base/str.cc 714688Sgblack@eecs.umich.edu base/time.cc 724688Sgblack@eecs.umich.edu base/trace.cc 734688Sgblack@eecs.umich.edu base/traceflags.cc 744688Sgblack@eecs.umich.edu base/userinfo.cc 754688Sgblack@eecs.umich.edu base/compression/lzss_compression.cc 764688Sgblack@eecs.umich.edu base/loader/aout_object.cc 774708Sgblack@eecs.umich.edu base/loader/ecoff_object.cc 784708Sgblack@eecs.umich.edu base/loader/elf_object.cc 794708Sgblack@eecs.umich.edu base/loader/object_file.cc 804708Sgblack@eecs.umich.edu base/loader/symtab.cc 814519Sgblack@eecs.umich.edu base/stats/events.cc 824519Sgblack@eecs.umich.edu base/stats/python.cc 834519Sgblack@eecs.umich.edu base/stats/statdb.cc 844519Sgblack@eecs.umich.edu base/stats/visit.cc 854519Sgblack@eecs.umich.edu base/stats/text.cc 864519Sgblack@eecs.umich.edu 874519Sgblack@eecs.umich.edu cpu/base_cpu.cc 884519Sgblack@eecs.umich.edu cpu/exec_context.cc 894519Sgblack@eecs.umich.edu cpu/exetrace.cc 904519Sgblack@eecs.umich.edu cpu/pc_event.cc 914519Sgblack@eecs.umich.edu cpu/static_inst.cc 924951Sgblack@eecs.umich.edu cpu/fast_cpu/fast_cpu.cc 934519Sgblack@eecs.umich.edu cpu/full_cpu/bpred.cc 944519Sgblack@eecs.umich.edu cpu/full_cpu/commit.cc 954519Sgblack@eecs.umich.edu cpu/full_cpu/create_vector.cc 964519Sgblack@eecs.umich.edu cpu/full_cpu/cv_spec_state.cc 974519Sgblack@eecs.umich.edu cpu/full_cpu/dd_queue.cc 984519Sgblack@eecs.umich.edu cpu/full_cpu/dep_link.cc 994688Sgblack@eecs.umich.edu cpu/full_cpu/dispatch.cc 1004688Sgblack@eecs.umich.edu cpu/full_cpu/dyn_inst.cc 1014688Sgblack@eecs.umich.edu cpu/full_cpu/execute.cc 1024688Sgblack@eecs.umich.edu cpu/full_cpu/fetch.cc 1034688Sgblack@eecs.umich.edu cpu/full_cpu/floss_reasons.cc 1044688Sgblack@eecs.umich.edu cpu/full_cpu/fu_pool.cc 1054708Sgblack@eecs.umich.edu cpu/full_cpu/full_cpu.cc 1064708Sgblack@eecs.umich.edu cpu/full_cpu/inst_fifo.cc 1074708Sgblack@eecs.umich.edu cpu/full_cpu/instpipe.cc 1084708Sgblack@eecs.umich.edu cpu/full_cpu/issue.cc 1094519Sgblack@eecs.umich.edu cpu/full_cpu/ls_queue.cc 1104519Sgblack@eecs.umich.edu cpu/full_cpu/machine_queue.cc 1114519Sgblack@eecs.umich.edu cpu/full_cpu/pipetrace.cc 1124519Sgblack@eecs.umich.edu cpu/full_cpu/readyq.cc 1134519Sgblack@eecs.umich.edu cpu/full_cpu/reg_info.cc 1144519Sgblack@eecs.umich.edu cpu/full_cpu/rob_station.cc 1154519Sgblack@eecs.umich.edu cpu/full_cpu/spec_memory.cc 1164519Sgblack@eecs.umich.edu cpu/full_cpu/spec_state.cc 1174519Sgblack@eecs.umich.edu cpu/full_cpu/storebuffer.cc 1184519Sgblack@eecs.umich.edu cpu/full_cpu/writeback.cc 1194519Sgblack@eecs.umich.edu cpu/full_cpu/iq/iq_station.cc 1204519Sgblack@eecs.umich.edu cpu/full_cpu/iq/iqueue.cc 1214519Sgblack@eecs.umich.edu cpu/full_cpu/iq/segmented/chain_info.cc 1224519Sgblack@eecs.umich.edu cpu/full_cpu/iq/segmented/chain_wire.cc 1234519Sgblack@eecs.umich.edu cpu/full_cpu/iq/segmented/iq_seg.cc 1244519Sgblack@eecs.umich.edu cpu/full_cpu/iq/segmented/iq_segmented.cc 1254519Sgblack@eecs.umich.edu cpu/full_cpu/iq/segmented/seg_chain.cc 1264519Sgblack@eecs.umich.edu cpu/full_cpu/iq/seznec/iq_seznec.cc 1274519Sgblack@eecs.umich.edu cpu/full_cpu/iq/standard/iq_standard.cc 1284519Sgblack@eecs.umich.edu cpu/sampling_cpu/sampling_cpu.cc 1294519Sgblack@eecs.umich.edu cpu/simple_cpu/simple_cpu.cc 1304712Sgblack@eecs.umich.edu cpu/trace/reader/mem_trace_reader.cc 1314519Sgblack@eecs.umich.edu cpu/trace/reader/ibm_reader.cc 1324519Sgblack@eecs.umich.edu cpu/trace/reader/itx_reader.cc 1334519Sgblack@eecs.umich.edu cpu/trace/reader/m5_reader.cc 1344519Sgblack@eecs.umich.edu 1354712Sgblack@eecs.umich.edu mem/base_hier.cc 1364519Sgblack@eecs.umich.edu mem/base_mem.cc 1374519Sgblack@eecs.umich.edu mem/hier_params.cc 1384519Sgblack@eecs.umich.edu mem/mem_cmd.cc 1394519Sgblack@eecs.umich.edu mem/mem_debug.cc 1404519Sgblack@eecs.umich.edu mem/mem_req.cc 1414519Sgblack@eecs.umich.edu mem/memory_interface.cc 1424519Sgblack@eecs.umich.edu mem/bus/base_interface.cc 1434951Sgblack@eecs.umich.edu mem/bus/bus.cc 1444519Sgblack@eecs.umich.edu mem/bus/bus_bridge.cc 1454519Sgblack@eecs.umich.edu mem/bus/bus_bridge_master.cc 1464519Sgblack@eecs.umich.edu mem/bus/bus_bridge_slave.cc 1474519Sgblack@eecs.umich.edu mem/bus/bus_interface.cc 1484519Sgblack@eecs.umich.edu mem/bus/dma_bus_interface.cc 1494951Sgblack@eecs.umich.edu mem/bus/dma_interface.cc 1504519Sgblack@eecs.umich.edu mem/bus/master_interface.cc 1514519Sgblack@eecs.umich.edu mem/bus/slave_interface.cc 1524951Sgblack@eecs.umich.edu mem/cache/base_cache.cc 1534712Sgblack@eecs.umich.edu mem/cache/cache.cc 1544519Sgblack@eecs.umich.edu mem/cache/cache_builder.cc 1554951Sgblack@eecs.umich.edu mem/cache/coherence/coherence_protocol.cc 1564519Sgblack@eecs.umich.edu mem/cache/coherence/uni_coherence.cc 1574951Sgblack@eecs.umich.edu mem/cache/miss/blocking_buffer.cc 1584712Sgblack@eecs.umich.edu mem/cache/miss/miss_queue.cc 1594519Sgblack@eecs.umich.edu mem/cache/miss/mshr.cc 1604519Sgblack@eecs.umich.edu mem/cache/miss/mshr_queue.cc 1614519Sgblack@eecs.umich.edu mem/cache/tags/base_tags.cc 1624519Sgblack@eecs.umich.edu mem/cache/tags/cache_tags.cc 1634519Sgblack@eecs.umich.edu mem/cache/tags/fa_lru.cc 1644519Sgblack@eecs.umich.edu mem/cache/tags/iic.cc 1654519Sgblack@eecs.umich.edu mem/cache/tags/lru.cc 1664519Sgblack@eecs.umich.edu mem/cache/tags/split.cc 1674519Sgblack@eecs.umich.edu mem/cache/tags/split_lifo.cc 1684519Sgblack@eecs.umich.edu mem/cache/tags/split_lru.cc 1694519Sgblack@eecs.umich.edu mem/cache/tags/repl/gen.cc 1704519Sgblack@eecs.umich.edu mem/cache/tags/repl/repl.cc 1714519Sgblack@eecs.umich.edu mem/functional_mem/functional_memory.cc 1724519Sgblack@eecs.umich.edu mem/functional_mem/main_memory.cc 1734519Sgblack@eecs.umich.edu mem/timing_mem/base_memory.cc 1744712Sgblack@eecs.umich.edu mem/timing_mem/memory_builder.cc 1754519Sgblack@eecs.umich.edu mem/timing_mem/simple_mem_bank.cc 1764581Sgblack@eecs.umich.edu mem/trace/itx_writer.cc 1774688Sgblack@eecs.umich.edu mem/trace/mem_trace_writer.cc 1784581Sgblack@eecs.umich.edu mem/trace/m5_writer.cc 1794519Sgblack@eecs.umich.edu 1804519Sgblack@eecs.umich.edu sim/builder.cc 1814519Sgblack@eecs.umich.edu sim/configfile.cc 1824519Sgblack@eecs.umich.edu sim/debug.cc 1834519Sgblack@eecs.umich.edu sim/eventq.cc 1844519Sgblack@eecs.umich.edu sim/main.cc 1854519Sgblack@eecs.umich.edu sim/param.cc 1864519Sgblack@eecs.umich.edu sim/profile.cc 1874712Sgblack@eecs.umich.edu sim/serialize.cc 1884519Sgblack@eecs.umich.edu sim/sim_events.cc 1894581Sgblack@eecs.umich.edu sim/sim_exit.cc 1904688Sgblack@eecs.umich.edu sim/sim_init.cc 1914581Sgblack@eecs.umich.edu sim/sim_object.cc 1924519Sgblack@eecs.umich.edu sim/stat_context.cc 1934519Sgblack@eecs.umich.edu sim/stat_control.cc 1944519Sgblack@eecs.umich.edu sim/trace_context.cc 1954519Sgblack@eecs.umich.edu sim/universe.cc 1964519Sgblack@eecs.umich.edu sim/pyconfig/pyconfig.cc 1974519Sgblack@eecs.umich.edu sim/pyconfig/code.cc 1984519Sgblack@eecs.umich.edu ''') 1994951Sgblack@eecs.umich.edu 2004519Sgblack@eecs.umich.edubase_obj_desc_files = Split(''' 2014519Sgblack@eecs.umich.edu cpu/full_cpu/iq/segmented/SegmentedIQ.od 2024519Sgblack@eecs.umich.edu cpu/full_cpu/iq/seznec/SeznecIQ.od 2034519Sgblack@eecs.umich.edu cpu/full_cpu/iq/standard/StandardIQ.od 2044951Sgblack@eecs.umich.edu cpu/full_cpu/iq/BaseIQ.od 2054519Sgblack@eecs.umich.edu cpu/full_cpu/BranchPred.od 2064951Sgblack@eecs.umich.edu cpu/full_cpu/FUDesc.od 2074712Sgblack@eecs.umich.edu cpu/full_cpu/FullCPU.od 2084519Sgblack@eecs.umich.edu cpu/full_cpu/FuncUnitPool.od 2094581Sgblack@eecs.umich.edu cpu/full_cpu/OpDesc.od 2104688Sgblack@eecs.umich.edu cpu/full_cpu/PipeTrace.od 2114581Sgblack@eecs.umich.edu cpu/sampling_cpu/SamplingCPU.od 2124519Sgblack@eecs.umich.edu cpu/simple_cpu/SimpleCPU.od 2134519Sgblack@eecs.umich.edu cpu/BaseCPU.od 2144519Sgblack@eecs.umich.edu cpu/IntrControl.od 2154519Sgblack@eecs.umich.edu mem/bus/Bus.od 2164951Sgblack@eecs.umich.edu mem/bus/BusBridge.od 2174519Sgblack@eecs.umich.edu mem/cache/coherence/CoherenceProtocol.od 2184519Sgblack@eecs.umich.edu mem/cache/tags/repl/GenRepl.od 2194951Sgblack@eecs.umich.edu mem/cache/tags/repl/Repl.od 2204712Sgblack@eecs.umich.edu mem/cache/BaseCache.od 2214519Sgblack@eecs.umich.edu mem/functional_mem/FunctionalMemory.od 2224581Sgblack@eecs.umich.edu mem/functional_mem/MainMemory.od 2234688Sgblack@eecs.umich.edu mem/functional_mem/MemoryController.od 2244581Sgblack@eecs.umich.edu mem/functional_mem/PhysicalMemory.od 2254519Sgblack@eecs.umich.edu mem/timing_mem/BaseMemory.od 2264519Sgblack@eecs.umich.edu mem/BaseHier.od 2274519Sgblack@eecs.umich.edu mem/BaseMem.od 2284519Sgblack@eecs.umich.edu mem/HierParams.od 2294519Sgblack@eecs.umich.edu ''') 2304519Sgblack@eecs.umich.edu 2314688Sgblack@eecs.umich.edu 2324688Sgblack@eecs.umich.edu# MySql sources 2334688Sgblack@eecs.umich.edumysql_sources = Split(''' 2344688Sgblack@eecs.umich.edu base/mysql.cc 2354688Sgblack@eecs.umich.edu base/stats/mysql.cc 2364688Sgblack@eecs.umich.edu ''') 2374688Sgblack@eecs.umich.edu 2384688Sgblack@eecs.umich.edu# Full-system sources 2394688Sgblack@eecs.umich.edufull_system_sources = Split(''' 2404688Sgblack@eecs.umich.edu arch/alpha/alpha_memory.cc 2414688Sgblack@eecs.umich.edu arch/alpha/arguments.cc 2424688Sgblack@eecs.umich.edu arch/alpha/ev5.cc 2434688Sgblack@eecs.umich.edu arch/alpha/osfpal.cc 2444688Sgblack@eecs.umich.edu arch/alpha/pseudo_inst.cc 2454688Sgblack@eecs.umich.edu arch/alpha/vtophys.cc 2464688Sgblack@eecs.umich.edu 2474528Sgblack@eecs.umich.edu base/crc.cc 2484688Sgblack@eecs.umich.edu base/inet.cc 2494701Sgblack@eecs.umich.edu base/remote_gdb.cc 2504519Sgblack@eecs.umich.edu 2514519Sgblack@eecs.umich.edu cpu/intr_control.cc 2524519Sgblack@eecs.umich.edu 2534688Sgblack@eecs.umich.edu dev/alpha_console.cc 2544701Sgblack@eecs.umich.edu dev/baddev.cc 2554688Sgblack@eecs.umich.edu dev/simconsole.cc 2564688Sgblack@eecs.umich.edu dev/disk_image.cc 2574688Sgblack@eecs.umich.edu dev/dma.cc 2584688Sgblack@eecs.umich.edu dev/etherbus.cc 2594688Sgblack@eecs.umich.edu dev/etherdump.cc 2604688Sgblack@eecs.umich.edu dev/etherint.cc 2614688Sgblack@eecs.umich.edu dev/etherlink.cc 2624519Sgblack@eecs.umich.edu dev/etherpkt.cc 2634519Sgblack@eecs.umich.edu dev/ethertap.cc 2644560Sgblack@eecs.umich.edu dev/ide_ctrl.cc 2654539Sgblack@eecs.umich.edu dev/ide_disk.cc 2664688Sgblack@eecs.umich.edu dev/io_device.cc 2674519Sgblack@eecs.umich.edu dev/ns_gige.cc 2684519Sgblack@eecs.umich.edu dev/etherdev.cc 2694519Sgblack@eecs.umich.edu dev/pciconfigall.cc 2704519Sgblack@eecs.umich.edu dev/pcidev.cc 2714519Sgblack@eecs.umich.edu dev/scsi.cc 2724519Sgblack@eecs.umich.edu dev/scsi_ctrl.cc 2734539Sgblack@eecs.umich.edu dev/scsi_disk.cc 2744519Sgblack@eecs.umich.edu dev/scsi_none.cc 2754528Sgblack@eecs.umich.edu dev/simple_disk.cc 2764688Sgblack@eecs.umich.edu dev/tlaser_clock.cc 2774701Sgblack@eecs.umich.edu dev/tlaser_ipi.cc 2784519Sgblack@eecs.umich.edu dev/tlaser_mbox.cc 2794519Sgblack@eecs.umich.edu dev/tlaser_mc146818.cc 2804560Sgblack@eecs.umich.edu dev/tlaser_node.cc 2814688Sgblack@eecs.umich.edu dev/tlaser_pcia.cc 2824701Sgblack@eecs.umich.edu dev/tlaser_pcidev.cc 2834688Sgblack@eecs.umich.edu dev/tlaser_serial.cc 2844688Sgblack@eecs.umich.edu dev/turbolaser.cc 2854688Sgblack@eecs.umich.edu dev/tsunami.cc 2864688Sgblack@eecs.umich.edu dev/tsunami_cchip.cc 2874688Sgblack@eecs.umich.edu dev/tsunami_fake.cc 2884688Sgblack@eecs.umich.edu dev/tsunami_io.cc 2894688Sgblack@eecs.umich.edu dev/tsunami_pchip.cc 2904519Sgblack@eecs.umich.edu dev/uart.cc 2914519Sgblack@eecs.umich.edu 2924560Sgblack@eecs.umich.edu kern/kernel_binning.cc 2934539Sgblack@eecs.umich.edu kern/kernel_stats.cc 2944688Sgblack@eecs.umich.edu kern/system_events.cc 2954519Sgblack@eecs.umich.edu kern/linux/linux_events.cc 2964519Sgblack@eecs.umich.edu kern/linux/linux_syscalls.cc 2974519Sgblack@eecs.umich.edu kern/linux/linux_system.cc 2984519Sgblack@eecs.umich.edu kern/linux/printk.cc 2994519Sgblack@eecs.umich.edu kern/tru64/dump_mbuf.cc 3004519Sgblack@eecs.umich.edu kern/tru64/printf.cc 3014539Sgblack@eecs.umich.edu kern/tru64/tru64_events.cc 3024519Sgblack@eecs.umich.edu kern/tru64/tru64_syscalls.cc 3034519Sgblack@eecs.umich.edu kern/tru64/tru64_system.cc 3044519Sgblack@eecs.umich.edu 3054519Sgblack@eecs.umich.edu mem/functional_mem/memory_control.cc 3064519Sgblack@eecs.umich.edu mem/functional_mem/physical_memory.cc 3074519Sgblack@eecs.umich.edu dev/platform.cc 3084519Sgblack@eecs.umich.edu 3094519Sgblack@eecs.umich.edu sim/system.cc 3104519Sgblack@eecs.umich.edu ''') 3114519Sgblack@eecs.umich.edu 3124688Sgblack@eecs.umich.edufull_system_obj_desc_files = Split(''' 3134951Sgblack@eecs.umich.edu arch/alpha/AlphaDTB.od 3144519Sgblack@eecs.umich.edu arch/alpha/AlphaITB.od 3154519Sgblack@eecs.umich.edu arch/alpha/AlphaTLB.od 3164519Sgblack@eecs.umich.edu dev/AlphaConsole.od 3174528Sgblack@eecs.umich.edu dev/ConsoleListener.od 3184595Sgblack@eecs.umich.edu dev/CowDiskImage.od 3194612Sgblack@eecs.umich.edu dev/DiskImage.od 3204612Sgblack@eecs.umich.edu dev/DmaDevice.od 3214688Sgblack@eecs.umich.edu dev/DmaEngine.od 3224708Sgblack@eecs.umich.edu dev/EtherBus.od 3234708Sgblack@eecs.umich.edu dev/EtherDev.od 3244951Sgblack@eecs.umich.edu dev/EtherDevInt.od 3254951Sgblack@eecs.umich.edu dev/EtherDump.od 3264951Sgblack@eecs.umich.edu dev/EtherInt.od 3274951Sgblack@eecs.umich.edu dev/EtherLink.od 3284951Sgblack@eecs.umich.edu dev/EtherTap.od 3294951Sgblack@eecs.umich.edu dev/PioDevice.od 3304951Sgblack@eecs.umich.edu dev/RawDiskImage.od 3314951Sgblack@eecs.umich.edu dev/ScsiController.od 3324595Sgblack@eecs.umich.edu dev/ScsiDevice.od 3334595Sgblack@eecs.umich.edu dev/ScsiDisk.od 3344688Sgblack@eecs.umich.edu dev/SimConsole.od 3354798Sgblack@eecs.umich.edu dev/SimpleDisk.od 3364823Sgblack@eecs.umich.edu dev/TlaserClock.od 3374798Sgblack@eecs.umich.edu dev/TlaserIpi.od 3384823Sgblack@eecs.umich.edu dev/TlaserMBox.od 3394798Sgblack@eecs.umich.edu dev/TlaserMC146818.od 3404798Sgblack@eecs.umich.edu dev/TlaserNode.od 3414798Sgblack@eecs.umich.edu dev/TlaserPciDev.od 3424823Sgblack@eecs.umich.edu dev/TlaserPcia.od 3434798Sgblack@eecs.umich.edu dev/TlaserSerial.od 3444798Sgblack@eecs.umich.edu dev/TlaserUart.od 3454798Sgblack@eecs.umich.edu dev/Turbolaser.od 3464798Sgblack@eecs.umich.edu kern/tru64/Tru64System.od 3474688Sgblack@eecs.umich.edu sim/System.od 3484809Sgblack@eecs.umich.edu ''') 3494823Sgblack@eecs.umich.edu 3504823Sgblack@eecs.umich.edu# Syscall emulation (non-full-system) sources 3514809Sgblack@eecs.umich.edusyscall_emulation_sources = Split(''' 3524809Sgblack@eecs.umich.edu arch/alpha/alpha_common_syscall_emul.cc 3534823Sgblack@eecs.umich.edu arch/alpha/alpha_linux_process.cc 3544809Sgblack@eecs.umich.edu arch/alpha/alpha_tru64_process.cc 3554809Sgblack@eecs.umich.edu cpu/memtest/memtest.cc 3564688Sgblack@eecs.umich.edu cpu/trace/trace_cpu.cc 3574688Sgblack@eecs.umich.edu eio/eio.cc 3584688Sgblack@eecs.umich.edu eio/exolex.cc 3594798Sgblack@eecs.umich.edu eio/libexo.cc 3605028Sgblack@eecs.umich.edu sim/process.cc 3614519Sgblack@eecs.umich.edu sim/syscall_emul.cc 3624519Sgblack@eecs.umich.edu ''') 3634519Sgblack@eecs.umich.edu 3644519Sgblack@eecs.umich.edusyscall_emulation_obj_desc_files = Split(''' 3654519Sgblack@eecs.umich.edu cpu/memtest/MemTest.od 3664519Sgblack@eecs.umich.edu eio/EioProcess.od 3674519Sgblack@eecs.umich.edu sim/LiveProcess.od 3684823Sgblack@eecs.umich.edu sim/Process.od 3694809Sgblack@eecs.umich.edu ''') 3704519Sgblack@eecs.umich.edu 3714688Sgblack@eecs.umich.edu# Set up complete list of sources based on configuration. 3724688Sgblack@eecs.umich.edusources = base_sources 3734688Sgblack@eecs.umich.eduobj_desc_files = base_obj_desc_files 3744688Sgblack@eecs.umich.edu 3754688Sgblack@eecs.umich.eduif env['FULL_SYSTEM']: 3764688Sgblack@eecs.umich.edu sources += full_system_sources 3774823Sgblack@eecs.umich.edu obj_desc_files += full_system_obj_desc_files 3784688Sgblack@eecs.umich.eduelse: 3794688Sgblack@eecs.umich.edu sources += syscall_emulation_sources 3804519Sgblack@eecs.umich.edu obj_desc_files += syscall_emulation_obj_desc_files 3814688Sgblack@eecs.umich.edu 3824688Sgblack@eecs.umich.eduextra_libraries = [] 3834798Sgblack@eecs.umich.eduif env['USE_MYSQL']: 3844798Sgblack@eecs.umich.edu sources += mysql_sources 3854798Sgblack@eecs.umich.edu env.Append(CPPDEFINES = 'USE_MYSQL') 3864798Sgblack@eecs.umich.edu env.Append(CPPPATH=['/usr/local/include/mysql', '/usr/include/mysql']) 3874519Sgblack@eecs.umich.edu env.Append(LIBS=['z']) 3884688Sgblack@eecs.umich.edu if sys.platform.lower().startswith('linux'): 3894519Sgblack@eecs.umich.edu extra_libraries.append('/usr/lib/mysql/libmysqlclient.a') 3904714Sgblack@eecs.umich.edu else: 3914809Sgblack@eecs.umich.edu env.Append(LIBS=['mysql']) 3924809Sgblack@eecs.umich.edu env.Append(LIBPATH=['/usr/local/lib/mysql/']) 3934809Sgblack@eecs.umich.edu 3944688Sgblack@eecs.umich.edu################################################### 3955028Sgblack@eecs.umich.edu# 3965028Sgblack@eecs.umich.edu# Special build rules. 3975028Sgblack@eecs.umich.edu# 3985028Sgblack@eecs.umich.edu################################################### 3995028Sgblack@eecs.umich.edu 4005028Sgblack@eecs.umich.edu# base/traceflags.{cc,hh} are generated from base/traceflags.py. 4015028Sgblack@eecs.umich.edu# $TARGET.base will expand to "<build-dir>/base/traceflags". 4025028Sgblack@eecs.umich.eduenv.Command(Split('base/traceflags.hh base/traceflags.cc'), 4034519Sgblack@eecs.umich.edu 'base/traceflags.py', 4045028Sgblack@eecs.umich.edu 'python $SOURCE $TARGET.base') 4054519Sgblack@eecs.umich.edu 4065028Sgblack@eecs.umich.edu# several files are generated from arch/$TARGET_ISA/isa_desc. 4075028Sgblack@eecs.umich.eduenv.Command(Split('''arch/alpha/decoder.cc 4085028Sgblack@eecs.umich.edu arch/alpha/decoder.hh 4095028Sgblack@eecs.umich.edu arch/alpha/fast_cpu_exec.cc 4105028Sgblack@eecs.umich.edu arch/alpha/simple_cpu_exec.cc 4114688Sgblack@eecs.umich.edu arch/alpha/full_cpu_exec.cc'''), 4124592Sgblack@eecs.umich.edu Split('''arch/alpha/isa_desc 4134708Sgblack@eecs.umich.edu arch/isa_parser.py'''), 4144592Sgblack@eecs.umich.edu '$SRCDIR/arch/isa_parser.py $SOURCE $TARGET.dir arch/alpha') 4154592Sgblack@eecs.umich.edu 4164592Sgblack@eecs.umich.edu 4174592Sgblack@eecs.umich.edu# 'targetarch' is a symlink to arch/$TARGET_ISA. 4184592Sgblack@eecs.umich.edudef link_targetarch(target, source, env): 4194592Sgblack@eecs.umich.edu link_target = str(target[0]) 4204592Sgblack@eecs.umich.edu link_source = env.subst('$SRCDIR/arch/$TARGET_ISA') 4214823Sgblack@eecs.umich.edu if not os.path.isdir(link_target): 4224809Sgblack@eecs.umich.edu print "symlinking", link_source, "to", link_target 4234592Sgblack@eecs.umich.edu try: 4244592Sgblack@eecs.umich.edu os.symlink(link_source, link_target) 4254688Sgblack@eecs.umich.edu except OSError, desc: 4264688Sgblack@eecs.umich.edu print "Error creating symlink %s: %s" % (link_target, desc) 4274701Sgblack@eecs.umich.edu sys.exit(-1) 4284701Sgblack@eecs.umich.edu 4294688Sgblack@eecs.umich.edu# Tell SCons to use the link_targetarch function to make 'targetarch' 4304688Sgblack@eecs.umich.eduenv.Command('targetarch', None, link_targetarch) 4314688Sgblack@eecs.umich.edu 4324714Sgblack@eecs.umich.edu 4334714Sgblack@eecs.umich.edu# libelf build is described in its own SConscript file. 4344714Sgblack@eecs.umich.edu# SConscript-local is the per-config build, which just copies some 4354688Sgblack@eecs.umich.edu# header files into a place where they can be found. 4364688Sgblack@eecs.umich.eduSConscript('libelf/SConscript-local', exports = 'env', duplicate=0) 4374708Sgblack@eecs.umich.edu 4384708Sgblack@eecs.umich.eduSConscript('sim/pyconfig/SConscript', exports = ['env', 'obj_desc_files'], 4394701Sgblack@eecs.umich.edu duplicate=0) 4404701Sgblack@eecs.umich.edu 4414592Sgblack@eecs.umich.edu 4424688Sgblack@eecs.umich.edu# This function adds the specified sources to the given build 4434592Sgblack@eecs.umich.edu# environment, and returns a list of all the corresponding SCons 4444951Sgblack@eecs.umich.edu# Object nodes (including an extra one for date.cc). We explicitly 4454951Sgblack@eecs.umich.edu# add the Object nodes so we can set up special dependencies for 4464951Sgblack@eecs.umich.edu# targetarch and date.cc. 4474951Sgblack@eecs.umich.edudef make_objs(sources, env): 4484951Sgblack@eecs.umich.edu objs = [env.Object(s) for s in sources] 4494592Sgblack@eecs.umich.edu # make all objects depend on the targetarch link so it gets made first. 4504592Sgblack@eecs.umich.edu env.Depends(objs, 'targetarch') 4514592Sgblack@eecs.umich.edu # make date.cc depend on all other objects so it always gets 4524592Sgblack@eecs.umich.edu # recompiled whenever anything else does 4534592Sgblack@eecs.umich.edu date_obj = env.Object('base/date.cc') 4544592Sgblack@eecs.umich.edu env.Depends(date_obj, objs) 4554592Sgblack@eecs.umich.edu objs.append(date_obj) 4564951Sgblack@eecs.umich.edu objs.extend(extra_libraries) 4574951Sgblack@eecs.umich.edu return objs 4584701Sgblack@eecs.umich.edu 4594701Sgblack@eecs.umich.edu################################################### 4604592Sgblack@eecs.umich.edu# 4614688Sgblack@eecs.umich.edu# Define binaries. Each different build type (debug, opt, etc.) gets 4624688Sgblack@eecs.umich.edu# a slightly different build environment. 4634714Sgblack@eecs.umich.edu# 4644592Sgblack@eecs.umich.edu################################################### 4654950Sgblack@eecs.umich.edu 4664595Sgblack@eecs.umich.edu# Include file paths are rooted in this directory. SCons will 4674595Sgblack@eecs.umich.edu# automatically expand '.' to refer to both the source directory and 4684809Sgblack@eecs.umich.edu# the corresponding build directory to pick up generated include 4694595Sgblack@eecs.umich.edu# files. 4704595Sgblack@eecs.umich.eduenv.Append(CPPPATH='.') 4714951Sgblack@eecs.umich.edu 4724951Sgblack@eecs.umich.edu# Debug binary 4734951Sgblack@eecs.umich.edudebug = env.Copy(OBJSUFFIX='.do') 4744951Sgblack@eecs.umich.edudebug.Append(CCFLAGS=Split('-g -gstabs+ -O0')) 4754951Sgblack@eecs.umich.edudebug.Append(CPPDEFINES='DEBUG') 4764951Sgblack@eecs.umich.edudebug.Program(target = 'm5.debug', source = make_objs(sources, debug)) 4774595Sgblack@eecs.umich.edu 4784688Sgblack@eecs.umich.edu# Optimized binary 4794688Sgblack@eecs.umich.eduopt = env.Copy() 4804951Sgblack@eecs.umich.eduopt.Append(CCFLAGS=Split('-g -O5')) 4814951Sgblack@eecs.umich.eduopt.Program(target = 'm5.opt', source = make_objs(sources, opt)) 4824951Sgblack@eecs.umich.edu 4834951Sgblack@eecs.umich.edu# "Fast" binary 4844951Sgblack@eecs.umich.edufast = env.Copy(OBJSUFFIX='.fo') 4854951Sgblack@eecs.umich.edufast.Append(CCFLAGS=Split('-O5')) 4864951Sgblack@eecs.umich.edufast.Append(CPPDEFINES='NDEBUG') 4874951Sgblack@eecs.umich.edufast.Program(target = 'm5.fast.unstripped', source = make_objs(sources, fast)) 4884951Sgblack@eecs.umich.edufast.Command(target = 'm5.fast', source = 'm5.fast.unstripped', 4894951Sgblack@eecs.umich.edu action = 'strip $SOURCE -o $TARGET') 4904951Sgblack@eecs.umich.edu 4914951Sgblack@eecs.umich.edu# Profiled binary 4924951Sgblack@eecs.umich.eduprof = env.Copy(OBJSUFFIX='.po') 4934951Sgblack@eecs.umich.eduprof.Append(CCFLAGS=Split('-O5 -g -pg'), LINKFLAGS='-pg') 4944951Sgblack@eecs.umich.eduprof.Program(target = 'm5.prof', source = make_objs(sources, prof)) 4954951Sgblack@eecs.umich.edu