Merge ktlim@zizzer.eecs.umich.edu:/bk/m5
[gem5.git] / SConscript
index 9d3a419648227d021bd0eeee839b6116c0f2fdc9..525a948180b53d390ba0578c29d2ee7493e7955e 100644 (file)
@@ -28,6 +28,7 @@
 
 import os
 import sys
+from os.path import isdir
 
 # This file defines how to build a particular configuration of M5
 # based on variable settings in the 'env' build environment.
@@ -51,10 +52,12 @@ base_sources = Split('''
        arch/alpha/full_cpu_exec.cc
        arch/alpha/faults.cc
        arch/alpha/isa_traits.cc
+        arch/alpha/ooo_cpu_exec.cc
 
        base/circlebuf.cc
        base/copyright.cc
        base/cprintf.cc
+        base/embedfile.cc
        base/fast_alloc.cc
        base/fifo_buffer.cc
        base/hostinfo.cc
@@ -63,6 +66,7 @@ base_sources = Split('''
        base/intmath.cc
        base/match.cc
        base/misc.cc
+       base/output.cc
        base/pollevent.cc
        base/python.cc
        base/range.cc
@@ -112,6 +116,7 @@ base_sources = Split('''
         cpu/beta_cpu/rename.cc
         cpu/beta_cpu/rename_map.cc
         cpu/beta_cpu/rob.cc
+        cpu/beta_cpu/sat_counter.cc
         cpu/beta_cpu/store_set.cc
         cpu/beta_cpu/tournament_pred.cc
        cpu/fast_cpu/fast_cpu.cc
@@ -134,30 +139,34 @@ base_sources = Split('''
        cpu/full_cpu/ls_queue.cc
        cpu/full_cpu/machine_queue.cc
         cpu/full_cpu/pc_sample_profile.cc
-       cpu/full_cpu/pipetrace.cc
-       cpu/full_cpu/readyq.cc
-       cpu/full_cpu/reg_info.cc
-       cpu/full_cpu/rob_station.cc
-       cpu/full_cpu/spec_memory.cc
-       cpu/full_cpu/spec_state.cc
-       cpu/full_cpu/storebuffer.cc
-       cpu/full_cpu/writeback.cc
-       cpu/full_cpu/iq/iq_station.cc
-       cpu/full_cpu/iq/iqueue.cc
-       cpu/full_cpu/iq/segmented/chain_info.cc
-       cpu/full_cpu/iq/segmented/chain_wire.cc
-       cpu/full_cpu/iq/segmented/iq_seg.cc
-       cpu/full_cpu/iq/segmented/iq_segmented.cc
-       cpu/full_cpu/iq/segmented/seg_chain.cc
-       cpu/full_cpu/iq/seznec/iq_seznec.cc
-       cpu/full_cpu/iq/standard/iq_standard.cc
-       cpu/sampling_cpu/sampling_cpu.cc
-       cpu/simple_cpu/simple_cpu.cc
-       cpu/inorder_cpu/inorder_cpu.cc
-       cpu/trace/reader/mem_trace_reader.cc
-       cpu/trace/reader/ibm_reader.cc
-       cpu/trace/reader/itx_reader.cc
-       cpu/trace/reader/m5_reader.cc
+        cpu/full_cpu/pipetrace.cc
+        cpu/full_cpu/readyq.cc
+        cpu/full_cpu/reg_info.cc
+        cpu/full_cpu/rob_station.cc
+        cpu/full_cpu/spec_memory.cc
+        cpu/full_cpu/spec_state.cc
+        cpu/full_cpu/storebuffer.cc
+        cpu/full_cpu/writeback.cc
+        cpu/full_cpu/iq/iq_station.cc
+        cpu/full_cpu/iq/iqueue.cc
+        cpu/full_cpu/iq/segmented/chain_info.cc
+        cpu/full_cpu/iq/segmented/chain_wire.cc
+        cpu/full_cpu/iq/segmented/iq_seg.cc
+        cpu/full_cpu/iq/segmented/iq_segmented.cc
+        cpu/full_cpu/iq/segmented/seg_chain.cc
+        cpu/full_cpu/iq/seznec/iq_seznec.cc
+        cpu/full_cpu/iq/standard/iq_standard.cc
+        cpu/inorder_cpu/inorder_cpu.cc
+        cpu/ooo_cpu/ea_list.cc
+        cpu/ooo_cpu/ooo_cpu.cc
+        cpu/ooo_cpu/ooo_dyn_inst.cc
+        cpu/ooo_cpu/ooo_sim_obj.cc
+        cpu/sampling_cpu/sampling_cpu.cc
+        cpu/simple_cpu/simple_cpu.cc
+        cpu/trace/reader/mem_trace_reader.cc
+        cpu/trace/reader/ibm_reader.cc
+        cpu/trace/reader/itx_reader.cc
+        cpu/trace/reader/m5_reader.cc
 
        mem/base_hier.cc
        mem/base_mem.cc
@@ -185,6 +194,11 @@ base_sources = Split('''
        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
@@ -204,6 +218,9 @@ base_sources = Split('''
        mem/trace/mem_trace_writer.cc
        mem/trace/m5_writer.cc
 
+        python/pyconfig.cc
+        python/embedded_py.cc
+
        sim/builder.cc
        sim/configfile.cc
        sim/debug.cc
@@ -220,43 +237,8 @@ base_sources = Split('''
        sim/stat_control.cc
        sim/trace_context.cc
        sim/universe.cc
-        sim/pyconfig/pyconfig.cc
-        sim/pyconfig/code.cc
-        ''')
-
-base_obj_desc_files = Split('''
-        cpu/full_cpu/iq/segmented/SegmentedIQ.od
-        cpu/full_cpu/iq/seznec/SeznecIQ.od
-        cpu/full_cpu/iq/standard/StandardIQ.od
-        cpu/full_cpu/iq/BaseIQ.od
-        cpu/full_cpu/BranchPred.od
-        cpu/full_cpu/FUDesc.od
-        cpu/full_cpu/FullCPU.od
-        cpu/full_cpu/FuncUnitPool.od
-        cpu/full_cpu/OpDesc.od
-        cpu/full_cpu/PipeTrace.od
-        cpu/sampling_cpu/SamplingCPU.od
-        cpu/simple_cpu/SimpleCPU.od
-        cpu/inorder_cpu/InorderCPU.od
-        cpu/BaseCPU.od
-        cpu/IntrControl.od
-        mem/bus/Bus.od
-        mem/bus/BusBridge.od
-        mem/cache/coherence/CoherenceProtocol.od
-        mem/cache/tags/repl/GenRepl.od
-        mem/cache/tags/repl/Repl.od
-        mem/cache/BaseCache.od
-        mem/functional_mem/FunctionalMemory.od
-        mem/functional_mem/MainMemory.od
-        mem/functional_mem/MemoryController.od
-        mem/functional_mem/PhysicalMemory.od
-        mem/timing_mem/BaseMemory.od
-        mem/BaseHier.od
-        mem/BaseMem.od
-        mem/HierParams.od
         ''')
 
-
 # MySql sources
 mysql_sources = Split('''
        base/mysql.cc
@@ -339,44 +321,6 @@ full_system_sources = Split('''
        sim/system.cc
         ''')
 
-full_system_obj_desc_files = Split('''
-        arch/alpha/AlphaDTB.od
-        arch/alpha/AlphaITB.od
-        arch/alpha/AlphaTLB.od
-        dev/AlphaConsole.od
-        dev/ConsoleListener.od
-        dev/CowDiskImage.od
-        dev/DiskImage.od
-        dev/DmaDevice.od
-        dev/DmaEngine.od
-        dev/EtherBus.od
-        dev/EtherDev.od
-        dev/EtherDevInt.od
-        dev/EtherDump.od
-        dev/EtherInt.od
-        dev/EtherLink.od
-        dev/EtherTap.od
-        dev/PioDevice.od
-        dev/RawDiskImage.od
-        dev/ScsiController.od
-        dev/ScsiDevice.od
-        dev/ScsiDisk.od
-        dev/SimConsole.od
-        dev/SimpleDisk.od
-        dev/TlaserClock.od
-        dev/TlaserIpi.od
-        dev/TlaserMBox.od
-        dev/TlaserMC146818.od
-        dev/TlaserNode.od
-        dev/TlaserPciDev.od
-        dev/TlaserPcia.od
-        dev/TlaserSerial.od
-        dev/TlaserUart.od
-        dev/Turbolaser.od
-        kern/tru64/Tru64System.od
-        sim/System.od
-       ''')
-
 # Syscall emulation (non-full-system) sources
 syscall_emulation_sources = Split('''
        arch/alpha/alpha_common_syscall_emul.cc
@@ -392,13 +336,6 @@ syscall_emulation_sources = Split('''
        sim/syscall_emul.cc
         ''')
 
-syscall_emulation_obj_desc_files = Split('''
-        cpu/memtest/MemTest.od
-        eio/EioProcess.od
-        sim/LiveProcess.od
-        sim/Process.od
-       ''')
-
 targetarch_files = Split('''
         alpha_common_syscall_emul.hh
         alpha_linux_process.hh
@@ -427,29 +364,25 @@ for f in targetarch_files:
 
 # Set up complete list of sources based on configuration.
 sources = base_sources
-obj_desc_files = base_obj_desc_files
 
 if env['FULL_SYSTEM']:
     sources += full_system_sources
-    obj_desc_files += full_system_obj_desc_files
 else:
     sources += syscall_emulation_sources
-    obj_desc_files += syscall_emulation_obj_desc_files
 
 extra_libraries = []
 env.Append(LIBS=['z'])
-if env['USE_MYSQL']:
+if isdir('/usr/lib64/mysql') or isdir('/usr/lib/mysql') or \
+   isdir('/usr/local/lib/mysql'):
+    print 'Compiling with MySQL support!'
+    env.Append(LIBPATH=['/usr/lib64/mysql', '/usr/local/lib/mysql/',
+                        '/usr/lib/mysql'])
+    env.Append(CPPPATH=['/usr/local/include/mysql', '/usr/include/mysql'])
     sources += mysql_sources
     env.Append(CPPDEFINES = 'USE_MYSQL')
     env.Append(CPPDEFINES = 'STATS_BINNING')
-    env.Append(CPPPATH=['/usr/local/include/mysql', '/usr/include/mysql'])
-    if os.path.isdir('/usr/lib64'):
-        env.Append(LIBPATH=['/usr/lib64/mysql'])
-    else:
-        env.Append(LIBPATH=['/usr/lib/mysql/'])
     env.Append(LIBS=['mysqlclient'])
 
-
 ###################################################
 #
 # Special build rules.
@@ -469,7 +402,8 @@ env.Command(Split('''arch/alpha/decoder.cc
                     arch/alpha/fast_cpu_exec.cc
                      arch/alpha/simple_cpu_exec.cc
                      arch/alpha/inorder_cpu_exec.cc
-                     arch/alpha/full_cpu_exec.cc'''),
+                     arch/alpha/full_cpu_exec.cc
+                     arch/alpha/ooo_cpu_exec.cc'''),
             Split('''arch/alpha/isa_desc
                     arch/isa_parser.py'''),
             '$SRCDIR/arch/isa_parser.py $SOURCE $TARGET.dir arch/alpha')
@@ -479,10 +413,8 @@ env.Command(Split('''arch/alpha/decoder.cc
 # SConscript-local is the per-config build, which just copies some
 # header files into a place where they can be found.
 SConscript('libelf/SConscript-local', exports = 'env', duplicate=0)
-
-SConscript('sim/pyconfig/SConscript', exports = ['env', 'obj_desc_files'],
-           duplicate=0)
-
+SConscript('python/SConscript', exports = ['env'], duplicate=0)
+SConscript('simobj/SConscript', exports = 'env', duplicate=0)
 
 # This function adds the specified sources to the given build
 # environment, and returns a list of all the corresponding SCons
@@ -514,7 +446,7 @@ env.Append(CPPPATH='.')
 
 # Debug binary
 debug = env.Copy(OBJSUFFIX='.do')
-debug.Append(CCFLAGS=Split('-g -gstabs+ -O0 -lefence'))
+debug.Append(CCFLAGS=Split('-g -gstabs+ -O0'))
 debug.Append(CPPDEFINES='DEBUG')
 debug.Program(target = 'm5.debug', source = make_objs(sources, debug))