SConscript revision 2037
16782SN/A# -*- mode:python -*- 28683SN/A 310973Sdavid.hashe@amd.com# Copyright (c) 2004-2005 The Regents of The University of Michigan 46782SN/A# All rights reserved. 56782SN/A# 66782SN/A# Redistribution and use in source and binary forms, with or without 76782SN/A# modification, are permitted provided that the following conditions are 86782SN/A# met: redistributions of source code must retain the above copyright 96782SN/A# notice, this list of conditions and the following disclaimer; 106782SN/A# redistributions in binary form must reproduce the above copyright 116782SN/A# notice, this list of conditions and the following disclaimer in the 126782SN/A# documentation and/or other materials provided with the distribution; 136782SN/A# neither the name of the copyright holders nor the names of its 146782SN/A# contributors may be used to endorse or promote products derived from 156782SN/A# this software without specific prior written permission. 166782SN/A# 176782SN/A# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 186782SN/A# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 196782SN/A# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 206782SN/A# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 216782SN/A# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 226782SN/A# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 236782SN/A# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 246782SN/A# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 256782SN/A# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 266782SN/A# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 276782SN/A# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 286782SN/A 296782SN/Aimport os 3011793Sbrandon.potter@amd.comimport sys 3111793Sbrandon.potter@amd.comfrom os.path import isdir 327056SN/A 3313449Sgabeblack@google.com# This file defines how to build a particular configuration of M5 348232SN/A# based on variable settings in the 'env' build environment. 358937SN/A 369105SN/A# Import build environment variable from SConstruct. 379104SN/AImport('env') 3814184Sgabeblack@google.com 3911108Sdavid.hashe@amd.com################################################### 4011308Santhony.gutierrez@amd.com# 416782SN/A# Define needed sources. 427055SN/A# 437055SN/A################################################### 447039SN/A 457039SN/A# Base sources used by all configurations. 466782SN/A 477039SN/Abase_sources = Split(''' 487039SN/A base/circlebuf.cc 497039SN/A base/copyright.cc 506782SN/A base/cprintf.cc 516782SN/A base/embedfile.cc 526876SN/A base/fast_alloc.cc 536876SN/A base/fifo_buffer.cc 546782SN/A base/hostinfo.cc 556876SN/A base/hybrid_pred.cc 566782SN/A base/inifile.cc 576782SN/A base/intmath.cc 586876SN/A base/match.cc 599105SN/A base/misc.cc 6010919Sbrandon.potter@amd.com base/output.cc 6110919Sbrandon.potter@amd.com base/pollevent.cc 6210919Sbrandon.potter@amd.com base/range.cc 6310919Sbrandon.potter@amd.com base/random.cc 646782SN/A base/sat_counter.cc 656882SN/A base/socket.cc 666876SN/A base/statistics.cc 6710970Sdavid.hashe@amd.com base/str.cc 6810980Sdavid.hashe@amd.com base/time.cc 697564SN/A base/trace.cc 708653SN/A base/traceflags.cc 719105SN/A base/userinfo.cc 7211308Santhony.gutierrez@amd.com base/compression/lzss_compression.cc 736876SN/A base/loader/aout_object.cc 746876SN/A base/loader/ecoff_object.cc 757039SN/A base/loader/elf_object.cc 767039SN/A base/loader/object_file.cc 776876SN/A base/loader/symtab.cc 7811308Santhony.gutierrez@amd.com base/stats/events.cc 7911308Santhony.gutierrez@amd.com base/stats/statdb.cc 8011308Santhony.gutierrez@amd.com base/stats/visit.cc 8111308Santhony.gutierrez@amd.com base/stats/text.cc 826882SN/A 837056SN/A cpu/base.cc 846882SN/A cpu/base_dyn_inst.cc 857039SN/A cpu/exec_context.cc 8611308Santhony.gutierrez@amd.com cpu/exetrace.cc 8711308Santhony.gutierrez@amd.com cpu/pc_event.cc 886782SN/A cpu/static_inst.cc 896782SN/A cpu/o3/2bit_local_pred.cc 906782SN/A cpu/o3/alpha_dyn_inst.cc 916782SN/A cpu/o3/alpha_cpu.cc 9211308Santhony.gutierrez@amd.com cpu/o3/alpha_cpu_builder.cc 937039SN/A cpu/o3/bpred_unit.cc 947039SN/A cpu/o3/btb.cc 957039SN/A cpu/o3/commit.cc 967039SN/A cpu/o3/decode.cc 977039SN/A cpu/o3/fetch.cc 986783SN/A cpu/o3/free_list.cc 996782SN/A cpu/o3/cpu.cc 1006782SN/A cpu/o3/iew.cc 1016782SN/A cpu/o3/inst_queue.cc 10211061Snilay@cs.wisc.edu cpu/o3/ldstq.cc 10311025Snilay@cs.wisc.edu cpu/o3/mem_dep_unit.cc 1046782SN/A cpu/o3/ras.cc 10511025Snilay@cs.wisc.edu cpu/o3/rename.cc 10611025Snilay@cs.wisc.edu cpu/o3/rename_map.cc 10711025Snilay@cs.wisc.edu cpu/o3/rob.cc 1086782SN/A cpu/o3/sat_counter.cc 1096782SN/A cpu/o3/store_set.cc 1106782SN/A cpu/o3/tournament_pred.cc 1116782SN/A cpu/fast/cpu.cc 1127039SN/A cpu/sampler/sampler.cc 11311061Snilay@cs.wisc.edu cpu/simple/cpu.cc 1146782SN/A cpu/trace/reader/mem_trace_reader.cc 11511025Snilay@cs.wisc.edu cpu/trace/reader/ibm_reader.cc 1167039SN/A cpu/trace/reader/itx_reader.cc 11711168Sandreas.hansson@arm.com cpu/trace/reader/m5_reader.cc 1187039SN/A cpu/trace/opt_cpu.cc 1197039SN/A cpu/trace/trace_cpu.cc 1207039SN/A 1217039SN/A encumbered/cpu/full/bpred.cc 1227039SN/A encumbered/cpu/full/commit.cc 1236782SN/A encumbered/cpu/full/cpu.cc 1246782SN/A encumbered/cpu/full/create_vector.cc 1256782SN/A encumbered/cpu/full/cv_spec_state.cc 1266782SN/A encumbered/cpu/full/dd_queue.cc 1277039SN/A encumbered/cpu/full/dep_link.cc 12811061Snilay@cs.wisc.edu encumbered/cpu/full/dispatch.cc 12911025Snilay@cs.wisc.edu encumbered/cpu/full/dyn_inst.cc 1306782SN/A encumbered/cpu/full/execute.cc 13111025Snilay@cs.wisc.edu encumbered/cpu/full/fetch.cc 1327039SN/A encumbered/cpu/full/floss_reasons.cc 13311168Sandreas.hansson@arm.com encumbered/cpu/full/fu_pool.cc 1347039SN/A encumbered/cpu/full/inst_fifo.cc 1357039SN/A encumbered/cpu/full/instpipe.cc 1367039SN/A encumbered/cpu/full/issue.cc 1376782SN/A encumbered/cpu/full/ls_queue.cc 1386782SN/A encumbered/cpu/full/machine_queue.cc 13910973Sdavid.hashe@amd.com encumbered/cpu/full/pipetrace.cc 14010973Sdavid.hashe@amd.com encumbered/cpu/full/readyq.cc 14110973Sdavid.hashe@amd.com encumbered/cpu/full/reg_info.cc 14211025Snilay@cs.wisc.edu encumbered/cpu/full/rob_station.cc 14310973Sdavid.hashe@amd.com encumbered/cpu/full/spec_memory.cc 14410973Sdavid.hashe@amd.com encumbered/cpu/full/spec_state.cc 14511025Snilay@cs.wisc.edu encumbered/cpu/full/storebuffer.cc 14610973Sdavid.hashe@amd.com encumbered/cpu/full/writeback.cc 14710973Sdavid.hashe@amd.com encumbered/cpu/full/iq/iq_station.cc 14810973Sdavid.hashe@amd.com encumbered/cpu/full/iq/iqueue.cc 14910973Sdavid.hashe@amd.com encumbered/cpu/full/iq/segmented/chain_info.cc 15010973Sdavid.hashe@amd.com encumbered/cpu/full/iq/segmented/chain_wire.cc 15110973Sdavid.hashe@amd.com encumbered/cpu/full/iq/segmented/iq_seg.cc 15210973Sdavid.hashe@amd.com encumbered/cpu/full/iq/segmented/iq_segmented.cc 15310973Sdavid.hashe@amd.com encumbered/cpu/full/iq/segmented/seg_chain.cc 15410973Sdavid.hashe@amd.com encumbered/cpu/full/iq/seznec/iq_seznec.cc 15510973Sdavid.hashe@amd.com encumbered/cpu/full/iq/standard/iq_standard.cc 15610973Sdavid.hashe@amd.com encumbered/mem/functional/main.cc 15710973Sdavid.hashe@amd.com 15810973Sdavid.hashe@amd.com mem/base_hier.cc 15910973Sdavid.hashe@amd.com mem/base_mem.cc 16010973Sdavid.hashe@amd.com mem/hier_params.cc 16110973Sdavid.hashe@amd.com mem/mem_cmd.cc 16211049Snilay@cs.wisc.edu mem/mem_debug.cc 16311049Snilay@cs.wisc.edu mem/mem_req.cc 16411049Snilay@cs.wisc.edu mem/memory_interface.cc 16511049Snilay@cs.wisc.edu mem/bus/base_interface.cc 16611049Snilay@cs.wisc.edu mem/bus/bus.cc 16711118Snilay@cs.wisc.edu mem/bus/bus_bridge.cc 16811061Snilay@cs.wisc.edu mem/bus/bus_bridge_master.cc 16911049Snilay@cs.wisc.edu mem/bus/bus_bridge_slave.cc 17011049Snilay@cs.wisc.edu mem/bus/bus_interface.cc 17111049Snilay@cs.wisc.edu mem/bus/dma_bus_interface.cc 17211049Snilay@cs.wisc.edu mem/bus/dma_interface.cc 17311049Snilay@cs.wisc.edu mem/bus/master_interface.cc 17411049Snilay@cs.wisc.edu mem/bus/slave_interface.cc 17511049Snilay@cs.wisc.edu mem/cache/base_cache.cc 17611049Snilay@cs.wisc.edu mem/cache/cache.cc 17711049Snilay@cs.wisc.edu mem/cache/cache_builder.cc 17811049Snilay@cs.wisc.edu mem/cache/coherence/coherence_protocol.cc 17911049Snilay@cs.wisc.edu mem/cache/coherence/uni_coherence.cc 18011049Snilay@cs.wisc.edu mem/cache/miss/blocking_buffer.cc 18111049Snilay@cs.wisc.edu mem/cache/miss/miss_queue.cc 18211049Snilay@cs.wisc.edu mem/cache/miss/mshr.cc 18311049Snilay@cs.wisc.edu mem/cache/miss/mshr_queue.cc 18411049Snilay@cs.wisc.edu mem/cache/prefetch/base_prefetcher.cc 18511049Snilay@cs.wisc.edu mem/cache/prefetch/prefetcher.cc 18611049Snilay@cs.wisc.edu mem/cache/prefetch/tagged_prefetcher.cc 18711049Snilay@cs.wisc.edu mem/cache/tags/base_tags.cc 18811049Snilay@cs.wisc.edu mem/cache/tags/cache_tags.cc 18911049Snilay@cs.wisc.edu mem/cache/tags/fa_lru.cc 19011049Snilay@cs.wisc.edu mem/cache/tags/iic.cc 19111049Snilay@cs.wisc.edu mem/cache/tags/lru.cc 19211049Snilay@cs.wisc.edu mem/cache/tags/repl/gen.cc 19311049Snilay@cs.wisc.edu mem/cache/tags/repl/repl.cc 19411118Snilay@cs.wisc.edu mem/cache/tags/split.cc 19511061Snilay@cs.wisc.edu mem/cache/tags/split_lru.cc 19611049Snilay@cs.wisc.edu mem/cache/tags/split_lifo.cc 19711049Snilay@cs.wisc.edu mem/functional/functional.cc 19811049Snilay@cs.wisc.edu mem/timing/base_memory.cc 19911049Snilay@cs.wisc.edu mem/timing/memory_builder.cc 20011049Snilay@cs.wisc.edu mem/timing/simple_mem_bank.cc 20111049Snilay@cs.wisc.edu mem/trace/itx_writer.cc 20211049Snilay@cs.wisc.edu mem/trace/mem_trace_writer.cc 20311049Snilay@cs.wisc.edu mem/trace/m5_writer.cc 20411049Snilay@cs.wisc.edu 20511049Snilay@cs.wisc.edu python/pyconfig.cc 20611049Snilay@cs.wisc.edu python/embedded_py.cc 20711049Snilay@cs.wisc.edu 20811049Snilay@cs.wisc.edu sim/builder.cc 20911049Snilay@cs.wisc.edu sim/configfile.cc 21011049Snilay@cs.wisc.edu sim/debug.cc 21111049Snilay@cs.wisc.edu sim/eventq.cc 2126782SN/A sim/main.cc 2137039SN/A sim/param.cc 21411025Snilay@cs.wisc.edu sim/profile.cc 2156782SN/A sim/root.cc 21611025Snilay@cs.wisc.edu sim/serialize.cc 21711061Snilay@cs.wisc.edu sim/sim_events.cc 2187039SN/A sim/sim_exit.cc 2196782SN/A sim/sim_object.cc 2207039SN/A sim/startup.cc 2217039SN/A sim/stat_context.cc 22211118Snilay@cs.wisc.edu sim/stat_control.cc 2237039SN/A sim/trace_context.cc 2247039SN/A ''') 22511118Snilay@cs.wisc.edu# These are now included by the architecture specific SConscript 2267039SN/A# arch/alpha/decoder.cc 2276782SN/A# arch/alpha/alpha_o3_exec.cc 2286782SN/A# arch/alpha/fast_cpu_exec.cc 2296782SN/A# arch/alpha/simple_cpu_exec.cc 2306782SN/A# arch/alpha/full_cpu_exec.cc 2316782SN/A# arch/alpha/faults.cc 2327039SN/A# arch/alpha/isa_traits.cc 23311025Snilay@cs.wisc.edu 2346782SN/A# MySql sources 23511025Snilay@cs.wisc.edumysql_sources = Split(''' 2366782SN/A base/mysql.cc 23711061Snilay@cs.wisc.edu base/stats/mysql.cc 2386782SN/A ''') 2397039SN/A 2407039SN/A# Full-system sources 2417039SN/Afull_system_sources = Split(''' 2427039SN/A base/crc.cc 2437039SN/A base/inet.cc 2447039SN/A base/remote_gdb.cc 2457039SN/A 2467039SN/A cpu/intr_control.cc 2477039SN/A cpu/profile.cc 2487039SN/A 2497039SN/A dev/alpha_console.cc 2506782SN/A dev/baddev.cc 2517039SN/A dev/simconsole.cc 2526782SN/A dev/disk_image.cc 2536782SN/A dev/etherbus.cc 2547839SN/A dev/etherdump.cc 25511086Snilay@cs.wisc.edu dev/etherint.cc 2566782SN/A dev/etherlink.cc 25711025Snilay@cs.wisc.edu dev/etherpkt.cc 2587039SN/A dev/ethertap.cc 2597039SN/A dev/ide_ctrl.cc 26011118Snilay@cs.wisc.edu dev/ide_disk.cc 2616782SN/A dev/io_device.cc 2627039SN/A dev/ns_gige.cc 26311061Snilay@cs.wisc.edu dev/pciconfigall.cc 2647454SN/A dev/pcidev.cc 2657039SN/A dev/pcifake.cc 2667039SN/A dev/pktfifo.cc 26711145Sjthestness@gmail.com dev/platform.cc 26811145Sjthestness@gmail.com dev/sinic.cc 26911145Sjthestness@gmail.com dev/simple_disk.cc 27011145Sjthestness@gmail.com dev/tsunami.cc 27111145Sjthestness@gmail.com dev/tsunami_cchip.cc 27211145Sjthestness@gmail.com dev/isa_fake.cc 27311145Sjthestness@gmail.com dev/tsunami_io.cc 2747039SN/A dev/tsunami_pchip.cc 2757039SN/A dev/uart.cc 2767039SN/A dev/uart8250.cc 2777039SN/A 2787039SN/A kern/kernel_binning.cc 2797839SN/A kern/kernel_stats.cc 2807039SN/A kern/system_events.cc 28111086Snilay@cs.wisc.edu kern/freebsd/freebsd_system.cc 28211086Snilay@cs.wisc.edu kern/linux/linux_syscalls.cc 2836782SN/A kern/linux/linux_system.cc 28410974Sdavid.hashe@amd.com kern/linux/printk.cc 28510974Sdavid.hashe@amd.com kern/tru64/dump_mbuf.cc 28610974Sdavid.hashe@amd.com kern/tru64/printf.cc 2876782SN/A kern/tru64/tru64_events.cc 2887839SN/A kern/tru64/tru64_syscalls.cc 2897039SN/A kern/tru64/tru64_system.cc 2906782SN/A 2917805SN/A mem/functional/memory_control.cc 2926782SN/A mem/functional/physical.cc 2936782SN/A 2947039SN/A sim/system.cc 29511025Snilay@cs.wisc.edu ''') 2966782SN/A 29711025Snilay@cs.wisc.edu# These are now included by the architecture specific SConscript 2987039SN/A# arch/alpha/alpha_memory.cc 29911118Snilay@cs.wisc.edu# arch/alpha/arguments.cc 30011061Snilay@cs.wisc.edu# arch/alpha/ev5.cc 3017039SN/A# arch/alpha/osfpal.cc 3027039SN/A# arch/alpha/pseudo_inst.cc 3037039SN/A# arch/alpha/stacktrace.cc 3047039SN/A# arch/alpha/vtophys.cc 3057039SN/A 3067039SN/A# turbolaser encumbered sources 3076782SN/Aturbolaser_sources = Split(''' 3086782SN/A encumbered/dev/dma.cc 3096782SN/A encumbered/dev/etherdev.cc 31011025Snilay@cs.wisc.edu encumbered/dev/scsi.cc 31111025Snilay@cs.wisc.edu encumbered/dev/scsi_ctrl.cc 3126782SN/A encumbered/dev/scsi_disk.cc 31311025Snilay@cs.wisc.edu encumbered/dev/scsi_none.cc 3147039SN/A encumbered/dev/tlaser_clock.cc 3156782SN/A encumbered/dev/tlaser_ipi.cc 31611061Snilay@cs.wisc.edu encumbered/dev/tlaser_mbox.cc 3177039SN/A encumbered/dev/tlaser_mc146818.cc 3187039SN/A encumbered/dev/tlaser_node.cc 3196782SN/A encumbered/dev/tlaser_pcia.cc 3206782SN/A encumbered/dev/tlaser_pcidev.cc 3216782SN/A encumbered/dev/tlaser_serial.cc 3227839SN/A encumbered/dev/turbolaser.cc 32311025Snilay@cs.wisc.edu encumbered/dev/uart8530.cc 3246782SN/A ''') 32511025Snilay@cs.wisc.edu 32611061Snilay@cs.wisc.edu# Syscall emulation (non-full-system) sources 3277039SN/Asyscall_emulation_sources = Split(''' 32811321Ssteve.reinhardt@amd.com cpu/memtest/memtest.cc 3297839SN/A encumbered/eio/eio.cc 3306782SN/A encumbered/eio/exolex.cc 3316782SN/A encumbered/eio/libexo.cc 3326782SN/A sim/process.cc 3337839SN/A sim/syscall_emul.cc 33411025Snilay@cs.wisc.edu ''') 3356782SN/A 33611025Snilay@cs.wisc.edu# These are now included by the architecture specific SConscript 33711061Snilay@cs.wisc.edu# arch/alpha/alpha_common_syscall_emul.cc 3387039SN/A# arch/alpha/alpha_linux_process.cc 33911321Ssteve.reinhardt@amd.com# arch/alpha/alpha_tru64_process.cc 3407839SN/A 3416782SN/Atargetarch_files = Split(''' 3426782SN/A alpha_linux_process.hh 3436782SN/A alpha_memory.hh 3447039SN/A alpha_tru64_process.hh 34511025Snilay@cs.wisc.edu aout_machdep.h 3466782SN/A arguments.hh 34711061Snilay@cs.wisc.edu ecoff_machdep.h 3488828SN/A ev5.hh 3496782SN/A faults.hh 35011321Ssteve.reinhardt@amd.com isa_fullsys_traits.hh 3519171SN/A isa_traits.hh 3526782SN/A pseudo_inst.hh 3536782SN/A stacktrace.hh 3547039SN/A vptr.hh 35511087Snilay@cs.wisc.edu vtophys.hh 35611087Snilay@cs.wisc.edu ''') 35711087Snilay@cs.wisc.edu# osfpal.hh 35811087Snilay@cs.wisc.edu# byte_swap.hh 35911087Snilay@cs.wisc.edu# alpha_common_syscall_emul.hh 36011087Snilay@cs.wisc.edu 36111087Snilay@cs.wisc.edu# Set up bridging headers to the architecture specific versions 36211087Snilay@cs.wisc.edufor f in targetarch_files: 36311308Santhony.gutierrez@amd.com env.Command('targetarch/' + f, 'arch/%s/%s' % (env['TARGET_ISA'], f), 36411308Santhony.gutierrez@amd.com '''echo '#include "arch/%s/%s"' > $TARGET''' % (env['TARGET_ISA'], f)) 36511308Santhony.gutierrez@amd.com 36611308Santhony.gutierrez@amd.com# Let the target architecture define what sources it needs 36711308Santhony.gutierrez@amd.comarch_source = SConscript('arch/%s/SConscript' % env['TARGET_ISA'], 36811321Ssteve.reinhardt@amd.com build_dir = 'build/%s/' % env['BUILD_DIR'], 36911308Santhony.gutierrez@amd.com exports = 'env', duplicate = False) 37011308Santhony.gutierrez@amd.com 37111308Santhony.gutierrez@amd.com# Add a flag defining what THE_ISA should be for all compilation 37211308Santhony.gutierrez@amd.comenv.Append(CPPDEFINES=[('THE_ISA','%s_ISA' % env['TARGET_ISA'].upper())]) 37311308Santhony.gutierrez@amd.com 37411308Santhony.gutierrez@amd.com# Set up complete list of sources based on configuration. 37511308Santhony.gutierrez@amd.comsources = base_sources + arch_source 37611308Santhony.gutierrez@amd.com 37711308Santhony.gutierrez@amd.comif env['FULL_SYSTEM']: 37811308Santhony.gutierrez@amd.com sources += full_system_sources 37911308Santhony.gutierrez@amd.com if env['ALPHA_TLASER']: 38011308Santhony.gutierrez@amd.com sources += turbolaser_sources 38111308Santhony.gutierrez@amd.comelse: 38211308Santhony.gutierrez@amd.com sources += syscall_emulation_sources 38311308Santhony.gutierrez@amd.com 38411308Santhony.gutierrez@amd.comif env['USE_MYSQL']: 38511321Ssteve.reinhardt@amd.com sources += mysql_sources 38611308Santhony.gutierrez@amd.com 38711308Santhony.gutierrez@amd.comfor opt in env.ExportOptions: 38811308Santhony.gutierrez@amd.com env.ConfigFile(opt) 38911308Santhony.gutierrez@amd.com 39011308Santhony.gutierrez@amd.com################################################### 39111308Santhony.gutierrez@amd.com# 39211308Santhony.gutierrez@amd.com# Add an SCons scanner for ISA files 39311308Santhony.gutierrez@amd.com# 3948683SN/A################################################### 3956782SN/Aimport SCons.Scanner 39611061Snilay@cs.wisc.edu 39711061Snilay@cs.wisc.edudef ISAScan(): 39811061Snilay@cs.wisc.edu return SCons.Scanner.Classic("ISAScan", 3998683SN/A "$ISASUFFIXES", 4007039SN/A "SRCDIR", 4017039SN/A '^[ \t]*##[ \t]*include[ \t]*"([^>"]+)"') 4028683SN/A 4038683SN/Adef ISAPath(env, dir, a=None): 4048683SN/A return (Dir(env['SRCDIR']), Dir('.')) 4058683SN/A 4068683SN/Aiscan = Scanner(function = ISAScan().scan, skeys = [".isa", ".ISA"], 4078683SN/A path_function = ISAPath) 4088683SN/Aenv.Append(SCANNERS = iscan) 4098683SN/A 4108683SN/A 4118683SN/A################################################### 4128683SN/A# 4137039SN/A# Special build rules. 4147039SN/A# 4158683SN/A################################################### 41611025Snilay@cs.wisc.edu 4178683SN/A# base/traceflags.{cc,hh} are generated from base/traceflags.py. 4188683SN/A# $TARGET.base will expand to "<build-dir>/base/traceflags". 4198683SN/Aenv.Command(Split('base/traceflags.hh base/traceflags.cc'), 4208683SN/A 'base/traceflags.py', 4218683SN/A 'python $SOURCE $TARGET.base') 4227039SN/A 4236782SN/A# several files are generated from arch/$TARGET_ISA/isa_desc. 4246782SN/Aenv.Command(Split(''' 4258683SN/A arch/%s/decoder.cc 4268937SN/A arch/%s/decoder.hh 4278683SN/A arch/%s/alpha_o3_exec.cc 42811061Snilay@cs.wisc.edu arch/%s/fast_cpu_exec.cc 4296782SN/A arch/%s/simple_cpu_exec.cc 4306782SN/A arch/%s/full_cpu_exec.cc''' % 4317039SN/A (env['TARGET_ISA'], 4327039SN/A env['TARGET_ISA'], 4336782SN/A env['TARGET_ISA'], 43410080SN/A env['TARGET_ISA'], 4357039SN/A env['TARGET_ISA'], 4367039SN/A env['TARGET_ISA'])), 4377039SN/A Split(''' 4387039SN/A arch/%s/isa/main.isa 4397039SN/A arch/isa_parser.py''' % 4407039SN/A env['TARGET_ISA']), 4417039SN/A '$SRCDIR/arch/isa_parser.py $SOURCE $TARGET.dir arch/%s' % env['TARGET_ISA']) 4427039SN/A 4437039SN/A 4447039SN/A# libelf build is described in its own SConscript file. 4457039SN/A# SConscript-local is the per-config build, which just copies some 4467039SN/A# header files into a place where they can be found. 4476782SN/ASConscript('libelf/SConscript-local', exports = 'env', duplicate=0) 4486782SN/ASConscript('python/SConscript', exports = ['env'], duplicate=0) 4496782SN/A 4507039SN/A# This function adds the specified sources to the given build 4517039SN/A# environment, and returns a list of all the corresponding SCons 4526782SN/A# Object nodes (including an extra one for date.cc). We explicitly 4537039SN/A# add the Object nodes so we can set up special dependencies for 4546782SN/A# date.cc. 4556782SN/Adef make_objs(sources, env): 4567039SN/A objs = [env.Object(s) for s in sources] 45711025Snilay@cs.wisc.edu # make date.cc depend on all other objects so it always gets 4587039SN/A # recompiled whenever anything else does 45911118Snilay@cs.wisc.edu date_obj = env.Object('base/date.cc') 46011025Snilay@cs.wisc.edu env.Depends(date_obj, objs) 46111061Snilay@cs.wisc.edu objs.append(date_obj) 4627039SN/A return objs 4637039SN/A 46411059Snilay@cs.wisc.edu################################################### 4656782SN/A# 4666782SN/A# Define binaries. Each different build type (debug, opt, etc.) gets 4677039SN/A# a slightly different build environment. 46811025Snilay@cs.wisc.edu# 4696782SN/A################################################### 47011118Snilay@cs.wisc.edu 47111025Snilay@cs.wisc.edu# Include file paths are rooted in this directory. SCons will 47211061Snilay@cs.wisc.edu# automatically expand '.' to refer to both the source directory and 4737039SN/A# the corresponding build directory to pick up generated include 4747039SN/A# files. 47511059Snilay@cs.wisc.eduenv.Append(CPPPATH='.') 4766782SN/A 4776782SN/A# Debug binary 4786782SN/AdebugEnv = env.Copy(OBJSUFFIX='.do') 47911025Snilay@cs.wisc.edudebugEnv.Label = 'debug' 4806782SN/AdebugEnv.Append(CCFLAGS=Split('-g -gstabs+ -O0')) 48111025Snilay@cs.wisc.edudebugEnv.Append(CPPDEFINES='DEBUG') 48211061Snilay@cs.wisc.edutlist = debugEnv.Program(target = 'm5.debug', 4837039SN/A source = make_objs(sources, debugEnv)) 4847039SN/AdebugEnv.M5Binary = tlist[0] 48511118Snilay@cs.wisc.edu 4867839SN/A# Optimized binary 48711059Snilay@cs.wisc.eduoptEnv = env.Copy() 4886782SN/AoptEnv.Label = 'opt' 4896782SN/AoptEnv.Append(CCFLAGS=Split('-g -O5')) 4909104SN/Atlist = optEnv.Program(target = 'm5.opt', 4919692SN/A source = make_objs(sources, optEnv)) 4929692SN/AoptEnv.M5Binary = tlist[0] 49311523Sdavid.guillen@arm.com 49411523Sdavid.guillen@arm.com# "Fast" binary 4959692SN/AfastEnv = env.Copy(OBJSUFFIX='.fo') 4969692SN/AfastEnv.Label = 'fast' 4979692SN/AfastEnv.Append(CCFLAGS=Split('-O5')) 4989692SN/AfastEnv.Append(CPPDEFINES='NDEBUG') 4999692SN/AfastEnv.Program(target = 'm5.fast.unstripped', 5009692SN/A source = make_objs(sources, fastEnv)) 5019692SN/Atlist = fastEnv.Command(target = 'm5.fast', 5029692SN/A source = 'm5.fast.unstripped', 5039692SN/A action = 'strip $SOURCE -o $TARGET') 5049692SN/AfastEnv.M5Binary = tlist[0] 5059692SN/A 5069692SN/A# Profiled binary 5079692SN/AprofEnv = env.Copy(OBJSUFFIX='.po') 5089692SN/AprofEnv.Label = 'prof' 5099692SN/AprofEnv.Append(CCFLAGS=Split('-O5 -g -pg'), LINKFLAGS='-pg') 5109692SN/Atlist = profEnv.Program(target = 'm5.prof', 5119692SN/A source = make_objs(sources, profEnv)) 5129692SN/AprofEnv.M5Binary = tlist[0] 5139692SN/A 5149692SN/AenvList = [debugEnv, optEnv, fastEnv, profEnv] 5159692SN/A 5169692SN/AReturn('envList') 5179692SN/A