Merge zizzer:/bk/newmem
[gem5.git] / src / SConscript
index 260aca25cc04697ef1b5f366801cbd79a7b4abe6..2a61100c135dc4c6104c98a2021f0556e1a953e5 100644 (file)
@@ -30,7 +30,7 @@
 
 import os
 import sys
-from os.path import isdir
+from os.path import isfile, join as joinpath
 
 # This file defines how to build a particular configuration of M5
 # based on variable settings in the 'env' build environment.
@@ -47,6 +47,7 @@ Import('env')
 # Base sources used by all configurations.
 
 base_sources = Split('''
+       base/annotate.cc
        base/circlebuf.cc
        base/cprintf.cc
        base/fast_alloc.cc
@@ -61,6 +62,7 @@ base_sources = Split('''
        base/pollevent.cc
        base/range.cc
        base/random.cc
+       base/remote_gdb.cc
        base/sat_counter.cc
        base/socket.cc
        base/statistics.cc
@@ -73,6 +75,7 @@ base_sources = Split('''
        base/loader/aout_object.cc
        base/loader/ecoff_object.cc
        base/loader/elf_object.cc
+       base/loader/raw_object.cc
        base/loader/object_file.cc
        base/loader/symtab.cc
        base/stats/events.cc
@@ -106,16 +109,15 @@ base_sources = Split('''
         mem/cache/coherence/coherence_protocol.cc
         mem/cache/coherence/uni_coherence.cc
         mem/cache/miss/blocking_buffer.cc
+        mem/cache/miss/miss_buffer.cc
         mem/cache/miss/miss_queue.cc
         mem/cache/miss/mshr.cc
         mem/cache/miss/mshr_queue.cc
         mem/cache/prefetch/base_prefetcher.cc
         mem/cache/prefetch/ghb_prefetcher.cc
-        mem/cache/prefetch/prefetcher.cc
         mem/cache/prefetch/stride_prefetcher.cc
         mem/cache/prefetch/tagged_prefetcher.cc
         mem/cache/tags/base_tags.cc
-        mem/cache/tags/cache_tags.cc
         mem/cache/tags/fa_lru.cc
         mem/cache/tags/iic.cc
         mem/cache/tags/lru.cc
@@ -127,12 +129,17 @@ base_sources = Split('''
 
         mem/cache/cache_builder.cc
 
+        python/swig/init.cc
+        python/swig/debug_wrap.cc
+        python/swig/main_wrap.cc
+        python/swig/event_wrap.cc
+        python/swig/pyevent.cc
+
        sim/builder.cc
        sim/debug.cc
        sim/eventq.cc
        sim/faults.cc
        sim/main.cc
-        python/swig/cc_main_wrap.cc
        sim/param.cc
        sim/root.cc
        sim/serialize.cc
@@ -145,45 +152,6 @@ base_sources = Split('''
        sim/trace_context.cc
         ''')
 
-# Old FullCPU sources
-full_cpu_sources = Split('''
-       encumbered/cpu/full/bpred.cc
-       encumbered/cpu/full/commit.cc
-       encumbered/cpu/full/cpu.cc
-       encumbered/cpu/full/create_vector.cc
-       encumbered/cpu/full/cv_spec_state.cc
-       encumbered/cpu/full/dd_queue.cc
-       encumbered/cpu/full/dep_link.cc
-       encumbered/cpu/full/dispatch.cc
-       encumbered/cpu/full/dyn_inst.cc
-       encumbered/cpu/full/execute.cc
-       encumbered/cpu/full/fetch.cc
-       encumbered/cpu/full/floss_reasons.cc
-       encumbered/cpu/full/fu_pool.cc
-       encumbered/cpu/full/inst_fifo.cc
-       encumbered/cpu/full/instpipe.cc
-       encumbered/cpu/full/issue.cc
-       encumbered/cpu/full/ls_queue.cc
-       encumbered/cpu/full/machine_queue.cc
-        encumbered/cpu/full/pipetrace.cc
-        encumbered/cpu/full/readyq.cc
-        encumbered/cpu/full/reg_info.cc
-        encumbered/cpu/full/rob_station.cc
-        encumbered/cpu/full/spec_memory.cc
-        encumbered/cpu/full/spec_state.cc
-        encumbered/cpu/full/storebuffer.cc
-        encumbered/cpu/full/writeback.cc
-        encumbered/cpu/full/iq/iq_station.cc
-        encumbered/cpu/full/iq/iqueue.cc
-        encumbered/cpu/full/iq/segmented/chain_info.cc
-        encumbered/cpu/full/iq/segmented/chain_wire.cc
-        encumbered/cpu/full/iq/segmented/iq_seg.cc
-        encumbered/cpu/full/iq/segmented/iq_segmented.cc
-        encumbered/cpu/full/iq/segmented/seg_chain.cc
-        encumbered/cpu/full/iq/seznec/iq_seznec.cc
-        encumbered/cpu/full/iq/standard/iq_standard.cc
-        ''')
-
 trace_reader_sources = Split('''
         cpu/trace/reader/mem_trace_reader.cc
         cpu/trace/reader/ibm_reader.cc
@@ -205,53 +173,19 @@ mysql_sources = Split('''
 full_system_sources = Split('''
        base/crc.cc
        base/inet.cc
-       base/remote_gdb.cc
 
        cpu/intr_control.cc
         cpu/profile.cc
 
-       dev/alpha_console.cc
-       dev/baddev.cc
-       dev/disk_image.cc
-       dev/etherbus.cc
-       dev/etherdump.cc
-       dev/etherint.cc
-       dev/etherlink.cc
-       dev/etherpkt.cc
-       dev/ethertap.cc 
-        dev/ide_ctrl.cc
-       dev/ide_disk.cc
-       dev/io_device.cc
-       dev/isa_fake.cc
-       dev/ns_gige.cc
-       dev/pciconfigall.cc
-       dev/pcidev.cc
-       dev/pcifake.cc
-       dev/pktfifo.cc
-       dev/platform.cc
-        dev/simconsole.cc
-       dev/simple_disk.cc
-       dev/tsunami.cc
-       dev/tsunami_cchip.cc
-       dev/tsunami_io.cc
-       dev/tsunami_fake.cc
-       dev/tsunami_pchip.cc
-
        dev/uart.cc
        dev/uart8250.cc
 
-       kern/kernel_stats.cc
-       kern/system_events.cc
-       kern/linux/events.cc
-       kern/linux/linux_syscalls.cc
-       kern/linux/printk.cc
-
         mem/vport.cc
 
        sim/pseudo_inst.cc
         ''')
        #dev/sinic.cc
-
+        #dev/i8254xGBe.cc
 
 if env['TARGET_ISA'] == 'alpha':
     full_system_sources += Split('''
@@ -261,26 +195,6 @@ if env['TARGET_ISA'] == 'alpha':
        kern/tru64/tru64_syscalls.cc
         ''')
 
-# turbolaser encumbered sources
-turbolaser_sources = Split('''
-       encumbered/dev/dma.cc
-       encumbered/dev/etherdev.cc
-       encumbered/dev/scsi.cc
-       encumbered/dev/scsi_ctrl.cc
-       encumbered/dev/scsi_disk.cc
-       encumbered/dev/scsi_none.cc
-       encumbered/dev/tlaser_clock.cc
-       encumbered/dev/tlaser_ipi.cc
-       encumbered/dev/tlaser_mbox.cc
-       encumbered/dev/tlaser_mc146818.cc
-       encumbered/dev/tlaser_node.cc
-       encumbered/dev/tlaser_pcia.cc
-       encumbered/dev/tlaser_pcidev.cc
-       encumbered/dev/tlaser_serial.cc
-       encumbered/dev/turbolaser.cc
-       encumbered/dev/uart8530.cc
-        ''')
-
 # Syscall emulation (non-full-system) sources
 syscall_emulation_sources = Split('''
         mem/translating_port.cc
@@ -294,15 +208,6 @@ syscall_emulation_sources = Split('''
 #        kern/tru64/tru64.cc
 #        ''')
 
-alpha_eio_sources = Split('''
-       encumbered/eio/exolex.cc
-       encumbered/eio/libexo.cc
-       encumbered/eio/eio.cc
-        ''')
-
-if env['TARGET_ISA'] == 'alpha':
-    syscall_emulation_sources += alpha_eio_sources
-    
 memtest_sources = Split('''
        cpu/memtest/memtest.cc
         ''')
@@ -316,22 +221,29 @@ env.Append(CPPPATH=Dir('.'))
 # Add a flag defining what THE_ISA should be for all compilation
 env.Append(CPPDEFINES=[('THE_ISA','%s_ISA' % env['TARGET_ISA'].upper())])
 
-arch_sources = SConscript('arch/SConscript', exports = 'env')
+arch_sources = SConscript(os.path.join('arch', 'SConscript'), exports = 'env')
 
-cpu_sources = SConscript('cpu/SConscript', exports = 'env')
+cpu_sources = SConscript(os.path.join('cpu', 'SConscript'), exports = 'env')
+
+if env['FULL_SYSTEM']:
+    dev_sources = SConscript(os.path.join('dev', 'SConscript'),
+                             exports = 'env')
+    full_system_sources += dev_sources
 
-# This is outside of cpu/SConscript since the source directory isn't
-# underneath 'cpu'.
-if 'FullCPU' in env['CPU_MODELS']:
-    cpu_sources += full_cpu_sources
+    kern_sources = SConscript(os.path.join('kern', 'SConscript'),
+                              exports = 'env')
+    full_system_sources += kern_sources
 
 # Set up complete list of sources based on configuration.
 sources = base_sources + arch_sources + cpu_sources
 
+# encumbered should be last because we're adding to some of the other groups
+if isfile(joinpath(env['SRCDIR'], 'encumbered/SConscript')):
+    sources += SConscript('encumbered/SConscript', exports = 'env')
+
+
 if env['FULL_SYSTEM']:
     sources += full_system_sources
-    if env['ALPHA_TLASER']:
-        sources += turbolaser_sources
 else:
     sources += syscall_emulation_sources
 
@@ -399,22 +311,47 @@ def makeEnv(label, objsfx, strip = False, **kwargs):
     envList.append(newEnv)
 
 # Debug binary
+ccflags = {}
+if env['GCC']:
+    if sys.platform == 'sunos5':
+        ccflags['debug'] = '-gstabs+'
+    else:
+        ccflags['debug'] = '-ggdb3'
+    ccflags['opt'] = '-g -O3'
+    ccflags['fast'] = '-O3'
+    ccflags['prof'] = '-O3 -g -pg'
+elif env['SUNCC']:
+    ccflags['debug'] = '-g0'
+    ccflags['opt'] = '-g -O'
+    ccflags['fast'] = '-fast'
+    ccflags['prof'] = '-fast -g -pg'
+elif env['ICC']:
+    ccflags['debug'] = '-g -O0'
+    ccflags['opt'] = '-g -O'
+    ccflags['fast'] = '-fast'
+    ccflags['prof'] = '-fast -g -pg'
+else:
+    print 'Unknown compiler, please fix compiler options'
+    Exit(1)    
+
 makeEnv('debug', '.do',
-        CCFLAGS = Split('-g3 -gdwarf-2 -O0'),
-        CPPDEFINES = 'DEBUG')
+        CCFLAGS = Split(ccflags['debug']),
+        CPPDEFINES = ['DEBUG', 'TRACING_ON=1'])
 
 # Optimized binary
 makeEnv('opt', '.o',
-        CCFLAGS = Split('-g -O3'))
+        CCFLAGS = Split(ccflags['opt']),
+        CPPDEFINES = ['TRACING_ON=1'])
 
 # "Fast" binary
 makeEnv('fast', '.fo', strip = True,
-        CCFLAGS = Split('-O3'),
-        CPPDEFINES = 'NDEBUG')
+        CCFLAGS = Split(ccflags['fast']),
+        CPPDEFINES = ['NDEBUG', 'TRACING_ON=0'])
 
 # Profiled binary
 makeEnv('prof', '.po',
-        CCFLAGS = Split('-O3 -g -pg'),
+        CCFLAGS = Split(ccflags['prof']),
+        CPPDEFINES = ['NDEBUG', 'TRACING_ON=0'],
         LINKFLAGS = '-pg')
 
 Return('envList')