SConscript revision 10130
16757SAli.Saidi@ARM.com# -*- mode:python -*-
26757SAli.Saidi@ARM.com
36757SAli.Saidi@ARM.com# Copyright (c) 2013 ARM Limited
46757SAli.Saidi@ARM.com# All rights reserved.
56757SAli.Saidi@ARM.com#
67090SAli.Saidi@ARM.com# The license below extends only to copyright in the software and shall
77090SAli.Saidi@ARM.com# not be construed as granting a license to any other intellectual
87090SAli.Saidi@ARM.com# property including but not limited to intellectual property relating
97090SAli.Saidi@ARM.com# to a hardware implementation of the functionality of the software
107090SAli.Saidi@ARM.com# licensed hereunder.  You may use the software subject to the license
117090SAli.Saidi@ARM.com# terms below provided that you ensure that this notice is replicated
127090SAli.Saidi@ARM.com# unmodified and in its entirety in all distributions of the software,
137090SAli.Saidi@ARM.com# modified or unmodified, in source code or in binary form.
147090SAli.Saidi@ARM.com#
156757SAli.Saidi@ARM.com# Redistribution and use in source and binary forms, with or without
166757SAli.Saidi@ARM.com# modification, are permitted provided that the following conditions are
176757SAli.Saidi@ARM.com# met: redistributions of source code must retain the above copyright
186757SAli.Saidi@ARM.com# notice, this list of conditions and the following disclaimer;
196757SAli.Saidi@ARM.com# redistributions in binary form must reproduce the above copyright
206757SAli.Saidi@ARM.com# notice, this list of conditions and the following disclaimer in the
216757SAli.Saidi@ARM.com# documentation and/or other materials provided with the distribution;
226757SAli.Saidi@ARM.com# neither the name of the copyright holders nor the names of its
236757SAli.Saidi@ARM.com# contributors may be used to endorse or promote products derived from
246757SAli.Saidi@ARM.com# this software without specific prior written permission.
256757SAli.Saidi@ARM.com#
266757SAli.Saidi@ARM.com# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
276757SAli.Saidi@ARM.com# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
286757SAli.Saidi@ARM.com# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
296757SAli.Saidi@ARM.com# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
306757SAli.Saidi@ARM.com# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
316757SAli.Saidi@ARM.com# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
326757SAli.Saidi@ARM.com# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
336757SAli.Saidi@ARM.com# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
346757SAli.Saidi@ARM.com# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
356757SAli.Saidi@ARM.com# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
366757SAli.Saidi@ARM.com# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
376757SAli.Saidi@ARM.com#
386757SAli.Saidi@ARM.com# Authors: Andreas Hansson
396757SAli.Saidi@ARM.com
406757SAli.Saidi@ARM.comimport os
416757SAli.Saidi@ARM.com
426757SAli.Saidi@ARM.comImport('main')
437584SAli.Saidi@arm.com
446757SAli.Saidi@ARM.com# See if we got a cloned DRAMSim2 repo as a subdirectory and set the
458282SAli.Saidi@ARM.com# HAVE_DRAMSIM flag accordingly
467584SAli.Saidi@arm.comif not os.path.exists(Dir('.').srcnode().abspath + '/DRAMSim2'):
477584SAli.Saidi@arm.com    main['HAVE_DRAMSIM'] = False
487584SAli.Saidi@arm.com    Return()
497584SAli.Saidi@arm.com
507753SWilliam.Wang@arm.com# We have got the folder, so add the library and build the wrappers
517754SWilliam.Wang@arm.commain['HAVE_DRAMSIM'] = True
527584SAli.Saidi@arm.com
537584SAli.Saidi@arm.com# Add the appropriate files. We leave out the trace driven simulator
547584SAli.Saidi@arm.comdram_files = []
557584SAli.Saidi@arm.com
567584SAli.Saidi@arm.comdef DRAMFile(filename):
577753SWilliam.Wang@arm.com    dram_files.append(File('DRAMSim2/' + filename))
587754SWilliam.Wang@arm.com
597695SPrakash.Ramrakhyani@arm.comDRAMFile('AddressMapping.cpp')
60DRAMFile('Bank.cpp')
61DRAMFile('BankState.cpp')
62DRAMFile('BusPacket.cpp')
63DRAMFile('ClockDomain.cpp')
64DRAMFile('CommandQueue.cpp')
65DRAMFile('IniReader.cpp')
66DRAMFile('MemoryController.cpp')
67DRAMFile('MemorySystem.cpp')
68DRAMFile('MultiChannelMemorySystem.cpp')
69DRAMFile('Rank.cpp')
70DRAMFile('SimulatorObject.cpp')
71DRAMFile('Transaction.cpp')
72
73# DRAMSim2 violates some of the warning flags used by gem5, so
74# we explicitly disable them here
75dramenv = main.Clone()
76dramenv.Append(CCFLAGS=['-Wno-unused-value'])
77
78# If we are using clang, there are more flags to disable
79if main['CLANG']:
80    dramenv.Append(CCFLAGS=['-Wno-unused-private-field'])
81
82# Tell DRAMSim2 to not store any data as this is already covered by
83# the wrapper
84dramenv.Append(CCFLAGS=['-DNO_STORAGE'])
85
86dramenv.Library('dramsim2', [dramenv.SharedObject(f) for f in dram_files])
87
88main.Prepend(CPPPATH=Dir('.'))
89main.Append(LIBS=['dramsim2'])
90main.Prepend(LIBPATH=[Dir('.')])
91