|  | #!python | 
|  |  | 
|  | # Copyright (c) 2016, Dresden University of Technology (TU Dresden) | 
|  | # All rights reserved. | 
|  | # | 
|  | # Redistribution and use in source and binary forms, with or without | 
|  | # modification, are permitted provided that the following conditions are | 
|  | # met: | 
|  | # | 
|  | # 1. Redistributions of source code must retain the above copyright notice, | 
|  | #    this list of conditions and the following disclaimer. | 
|  | # | 
|  | # 2. Redistributions in binary form must reproduce the above copyright | 
|  | #    notice, this list of conditions and the following disclaimer in the | 
|  | #    documentation and/or other materials provided with the distribution. | 
|  | # | 
|  | # 3. Neither the name of the copyright holder nor the names of its | 
|  | #    contributors may be used to endorse or promote products derived from | 
|  | #    this software without specific prior written permission. | 
|  | # | 
|  | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | 
|  | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | 
|  | # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 
|  | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER | 
|  | # OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 
|  | # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 
|  | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 
|  | # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | 
|  | # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | 
|  | # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | 
|  | # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
|  | # | 
|  | # Authors: Christian Menard | 
|  |  | 
|  | import os | 
|  | import sys | 
|  |  | 
|  |  | 
|  | gem5_arch = 'ARM' | 
|  | gem5_variant = 'opt' | 
|  | #gem5_variant = 'debug' | 
|  |  | 
|  | gem5_root = Dir('#../..').srcnode().abspath | 
|  |  | 
|  | env = Environment() | 
|  |  | 
|  | #Make the gem5 root available in SConscripts | 
|  | env['GEM5_ROOT'] = gem5_root | 
|  |  | 
|  | shlibsuffix = env['SHLIBSUFFIX'] | 
|  |  | 
|  | # add include dirs | 
|  | env.Append(CPPPATH=[gem5_root + '/build/' + gem5_arch, | 
|  | gem5_root + '/util/systemc', | 
|  | gem5_root + '/ext/systemc/src', | 
|  | '#src', | 
|  | '#examples/common', | 
|  | ]) | 
|  |  | 
|  | env.Append(CXXFLAGS=['-std=c++11', | 
|  | '-DSC_INCLUDE_DYNAMIC_PROCESSES', | 
|  | '-DTRACING_ON', | 
|  | ]) | 
|  |  | 
|  | if gem5_variant == 'debug': | 
|  | env.Append(CXXFLAGS=['-g', '-DDEBUG']) | 
|  |  | 
|  | deps = [] # keep track of all dependencies required for building the binaries | 
|  |  | 
|  | deps += SConscript('src/SConscript', variant_dir='build/tlm', exports='env') | 
|  |  | 
|  | deps += SConscript('examples/common/SConscript', | 
|  | variant_dir='build/examples/common', | 
|  | exports=['env']) | 
|  |  | 
|  | # the SystemC SConscript makes certain assumptions, we need to fulfill these | 
|  | # assumptions before calling the SConscript. | 
|  | main = env | 
|  | sys.path.append(gem5_root + '/src/python') | 
|  | AddOption('--no-colors', dest='use_colors', action='store_false', | 
|  | help="Don't add color to abbreviated scons output") | 
|  |  | 
|  | SConscript(gem5_root + '/ext/systemc/SConscript', | 
|  | variant_dir='build/systemc', | 
|  | exports='main') | 
|  |  | 
|  | # By adding libraries as dependencies instead of using LIBS, we avoid that | 
|  | # the user needs to set the LD_LIBRARY_PATH | 
|  | deps.append(File('build/systemc/libsystemc' + shlibsuffix)) | 
|  | deps.append(File(os.path.join(gem5_root, 'build', gem5_arch, | 
|  | 'libgem5_' + gem5_variant + shlibsuffix))) | 
|  |  | 
|  | ex_master = SConscript('examples/master_port/SConscript', | 
|  | variant_dir='build/examples/master_port', | 
|  | exports=['env', 'deps']) | 
|  |  | 
|  | ex_slave = SConscript('examples/slave_port/SConscript', | 
|  | variant_dir='build/examples/slave_port', | 
|  | exports=['env', 'deps']) | 
|  |  | 
|  | Default(ex_master + ex_slave) |