Commit graph

79 commits

Author SHA1 Message Date
Nathan Binkert
312fbb1b48 scons: clean up the main SConstruct file more.
Add some features to read_command so it works a little bit better
Clean up the mercurial checks.
Filter the user environment and only pick out the useful stuff.
2009-02-11 16:58:51 -08:00
Nathan Binkert
dd6ea8797f scons: Require SCons version 0.98.1
This allows me to clean things up so we are up to date with respect to
deprecated features.  There are many features scheduled for permanent failure
in scons 2.0 and 0.98.1 provides the most compatability for that.  It
also paves the way for some nice new features that I will add soon
2009-02-09 20:10:14 -08:00
Clint Smullen
3087be945d Output: Include gzstream package to allow automatically-gzipped output
The gzstream package provides an ostream-interface for writing gzipped files.
The package comes from:
    http://www.cs.unc.edu/Research/compgeom/gzstream/
And is distributed under the LGPL license. Both the license and version
information has been preservered, though all other files in the package have
been purged. Minor modifications to the code have been made. The output module
detects when a filename ends in .gz and constructs an ogzstream object instead
of an ofstream object. This works for both the create(...) and find(...)
commands. Additionally, since gzstream objects needs to be closed to ensure
proper file termination, I have the output deconstructor deleting all ostream's
that it manages on behalf of find(...). At the moment, the only output file
that I know this functionality works for is stats, i.e. by specifying
"--stats-file=m5stats.txt.gz" on the command line.
2008-11-15 23:42:11 -05:00
Nathan Binkert
4d64d7664c SCons: Allow top level directory of EXTRAS able to contain SConscripts.
The current EXTRAS will fail if the top level directory pointed to by EXTRAS
has a SConscript file in it.  We allow this by including the directory name
of the EXTRA in the build directory which prevents a clash between
src/SConscript and extra/SConscript. Maintain compatibility with older uses
of EXTRAS by adding a -I for each top level extra directory.
2008-11-10 11:51:18 -08:00
Ali Saidi
aadae0b06e BATCH: Run as, ar, and ranlib with BATCH_CMD so that they execute on the batch hosts, not local host. 2008-10-26 14:45:47 -04:00
Ali Saidi
9affd7adc6 Scons: Update compare_versions() to ignore trailing charecters after an int. This is a fix for a mysql version number that includes a (E.g. 5.0.51a) 2008-10-08 18:34:19 -04:00
Nathan Binkert
d2f172ab8d gcc: Version 4.3 adds some warnings that we're turning off.
We just can't deal with right now.
2008-09-27 21:03:50 -07:00
Nathan Binkert
196213e355 We're searching for g++ incorrectly 2008-09-19 09:42:55 -07:00
Nathan Binkert
ede89c2d54 libm5: Create a libm5 static library for embedding m5.
This should allow m5 to be more easily embedded into other simulators.
The m5 binary adds a simple main function which then calls into the m5
libarary to start the simulation. In order to make this work
correctly, it was necessary embed python code directly into the
library instead of the zipfile hack.  This is because you can't just
append the zipfile to the end of a library the way you can a binary.
As a result, Python files that are part of the m5 simulator are now
compile, marshalled, compressed, and then inserted into the library's
data section with a certain symbol name.  Additionally, a new Importer
was needed to allow python to get at the embedded python code.

Small additional changes include:
- Get rid of the PYTHONHOME stuff since I don't think anyone ever used
it, and it just confuses things.  Easy enough to add back if I'm wrong.
- Create a few new functions that are key to initializing and running
the simulator: initSignals, initM5Python, m5Main.

The original code for creating libm5 was inspired by a patch Michael
Adler, though the code here was done by me.
2008-08-03 18:19:54 -07:00
Ali Saidi
ed27c4c521 SCons: Manually specifying header only directories with Dir() works around the problem
--HG--
extra : convert_revision : d9713228d934cf4a45114a972603b8bca2bd27d3
2008-04-08 11:08:26 -04:00
Ali Saidi
bee4d454e8 SCons: Make BATCH options global sticky so libelf is built appropriately.
--HG--
extra : convert_revision : 4bca5c31b8421305d41aac072696964b39d7ff16
2008-04-07 23:40:24 -04:00
Ali Saidi
d9d79cebb9 SCons: Add check for SCons version since the latest are broken.
--HG--
extra : convert_revision : bb0ea1221214e4e34d4223e345956c3febce3dc9
2008-04-07 23:40:23 -04:00
Steve Reinhardt
627592c2f2 Add FAST_ALLOC_DEBUG and FAST_ALLOC_STATS as SConstruct options.
--HG--
extra : convert_revision : 56a7f646f2ac87019c78ba7fa62c5f4bdc00ba44
2008-03-24 01:08:02 -04:00
Steve Reinhardt
2f7421b12b EXTRAS now points to src instead of needing 'src' subdir.
--HG--
extra : convert_revision : 8e7e4516ace8c7852eeea3c479bfd567839a8061
2008-02-11 08:04:01 -08:00
Steve Reinhardt
476a2ee950 Wait to set BUILD_DIR until *after* env is copied.
--HG--
extra : convert_revision : 03153e7aaa1fb2a435900eab08a98ec1a6ce62db
2008-02-11 07:47:44 -08:00
Steve Reinhardt
b96631e1a0 Cleaned up os.path imports a bit.
--HG--
extra : convert_revision : ee75bf9abd249ab053e804739cc50972475cd5b6
2008-02-05 17:43:45 -08:00
Steve Reinhardt
d725ff450d Make EXTRAS work for SConsopts too.
Requires pushing source files down into 'src' subdir relative
to directory listed in EXTRAS.

--HG--
extra : convert_revision : ca04adc3e24c60bd3e7b63ca5770b31333d76729
2008-02-05 17:40:08 -08:00
Ali Saidi
fed9ee52fc Compiling: Make sure that libelf is also compiled for 64bit on OS X.
--HG--
extra : convert_revision : 9d4f7064e0aa4b6cc6a5bcf0f6fb5289047cd143
2007-11-19 18:23:43 -05:00
Steve Reinhardt
785eb13190 Make EXTRAS work for relative directories.
Also print a little feedback when processing EXTRAS.

--HG--
extra : convert_revision : 9cb324b0d5bc60a3c98af6495f16415b529e4af2
2007-11-16 20:10:33 -08:00
Ali Saidi
c01421a82d Compiling: If possible compile a 64 bit binary on Mac OS X.
--HG--
extra : convert_revision : 23d7c3744bfb20adaa31c999e0478e9055b4f657
2007-11-08 17:45:58 -05:00
Steve Reinhardt
67b46d02d4 SConstruct: fix scons null conf object problem
so that "scons --help" works again.

--HG--
extra : convert_revision : 317d52480a44339d8a77ce61f1c5e58cd9d1dd01
2007-11-01 14:28:59 -07:00
Steve Reinhardt
514236c314 SConstruct: undo half of last changeset; looked innocuous but wasn't.
--HG--
extra : convert_revision : 237da629f9e4e8f9151fcf3c47ea2ef72918356a
2007-10-31 00:55:32 -07:00
Steve Reinhardt
ffdd67308a SConstruct: Fix env Dir/String problem
--HG--
extra : convert_revision : 6c5b6e9541030774bc44933f021fec51fb3cb227
2007-10-31 00:44:51 -07:00
Ali Saidi
ce219738b9 Style: fix IGNORE_STYLE so it isn't required on the command line.
--HG--
extra : convert_revision : 42ff16a2ae0316cc4b70ade961a50d5d4a5eb950
2007-08-12 22:44:14 -04:00
Nathan Binkert
b92594dd90 style: If IGNORE_STYLE=True is set on the scons command line, ignore style.
Use this in the regress script to avoid issues with the checker.

--HG--
extra : convert_revision : 562b6a6d73dc46e412d00ba2588af2793335274e
2007-08-12 09:56:05 -07:00
Nathan Binkert
c27e23f2e8 style: Check/Fix whitespace on SCons files
--HG--
extra : convert_revision : 46e6b2dd8e1984cbab0ea24c94760794734c0f95
2007-07-28 16:49:20 -07:00
Nathan Binkert
cda354b070 scons: make things work when EXTRAS is not defined.
--HG--
extra : convert_revision : 83562b55ec099e609c64cd42eb47a8481e4e85e7
2007-07-26 22:45:33 -07:00
Nathan Binkert
19c01e82b1 Add a new SCons option called EXTRAS that allows you to include stuff in
the build process that is outside of the main M5 tree.

--HG--
extra : convert_revision : 6edc4fbc58240f83b59c7b5707c0390cdb85d9ec
2007-07-25 18:21:11 -07:00
Steve Reinhardt
03730edc45 Merge Gabe's changes with mine.
--HG--
extra : convert_revision : f50ed42e7acb3f11e610fd6976eaa8df0c6ba2ab
2007-07-22 10:40:45 -04:00
Nathan Binkert
4b5ba96d38 Add code to turn the style stuff into a mercurial hook.
Nag the user during compile if they have an hg cloned copy of M5, have
mercurial installed, but don't have the style hook enabled.

--HG--
extra : convert_revision : 6bcbb67f1a3fcd36db7d3ef16a9ff19680f126f2
2007-07-21 22:33:08 -07:00
Steve Reinhardt
658eeee507 Handle broken swig version that prints version info on stderr.
--HG--
extra : convert_revision : 83021779c40972fa56893d21713c6115cd481bc4
2007-07-14 21:35:26 -04:00
Nathan Binkert
cd46796d5c Add the -templatereduce option to swig to prepare for more templates.
remove the old scanner and replace it with ours instead of just adding ours,
this fixes some issues with dependency tracking.

--HG--
extra : convert_revision : 925d42ad024deaea48a243067d0ea9542aeba324
2007-06-10 13:54:59 -07:00
Ali Saidi
0193476ea7 Fix compiling on Solaris since Nate's libelf change
SConstruct:
    export env after we've set CC/CXX
ext/libelf/SConscript:
    pull in the CC/CXX variables from env. Use gm4 if it exists
ext/libelf/elf_begin.c:
ext/libelf/libelf_allocate.c:
    include errno.h instead of sys/errno.h
ext/libelf/elf_common.h:
    use the more standard uintX_t
ext/libelf/elf_strptr.c:
ext/libelf/elf_update.c:
    include sysmacros.h on Solaris for roundup()

--HG--
extra : convert_revision : ea1aab834029399c445dfa4c9f78febf2c3d8f0c
2007-05-30 17:08:12 -04:00
Nathan Binkert
1aef5c06a3 Rework the way SCons recurses into subdirectories, making it
automatic.  The point is that now a subdirectory can be added
to the build process just by creating a SConscript file in it.
The process has two passes.  On the first pass, all subdirs
of the root of the tree are searched for SConsopts files.
These files contain any command line options that ought to be
added for a particular subdirectory.  On the second pass,
all subdirs of the src directory are searched for SConscript
files.  These files describe how to build any given subdirectory.
I have added a Source() function.  Any file (relative to the
directory in which the SConscript resides) passed to that
function is added to the build.  Clean up everything to take
advantage of Source().
function is added to the list of files to be built.

--HG--
extra : convert_revision : 103f6b490d2eb224436688c89cdc015211c4fd30
2007-03-10 23:00:54 -08:00
Gabe Black
10871b7342 Add build hooks for x86.
--HG--
extra : convert_revision : 438eb74f14e6ea60bab5012110f3946c9213786e
2007-03-03 16:01:48 +00:00
Ali Saidi
f9a341f8e7 I missed a couple of things
--HG--
extra : convert_revision : 2fa44718e381ff743fa1cf12f4db2221dca87e4c
2007-01-27 15:47:18 -05:00
Ali Saidi
02bd40d552 While I'm waiting for legion to run make m5 compile with a few more compilers
SConstruct:
src/SConscript:
    Add flags for Intel CC while i'm at it
src/base/compiler.hh:
    the _Pragma stuff needst to be called this way unless someone happens to have a cleaner way
src/base/cprintf_formats.hh:
    add std:: where appropriate
src/base/statistics.hh:
    use this->map since icc was getting confused about std::map vs the locally defined map
src/cpu/static_inst.hh:
    Add some more dummy returns where needed
src/mem/packet.hh:
    add more dummy returns where needed
src/sim/host.hh:
    use limits to come up with max tick

--HG--
extra : convert_revision : 08e9f7898b29fb9d063136529afb9b6abceab60c
2007-01-27 15:38:04 -05:00
Ali Saidi
63fdabf191 make our code a little more standards compliant
pretty close to compiling w/ suns compiler

briefly:
add dummy return after panic()/fatal()
split out flags by compiler vendor
include cstring and cmath where appropriate
use std namespace for string ops

SConstruct:
    Add code to detect compiler and choose cflags based on detected compiler
    Fix zlib check to work with suncc
src/SConscript:
    split out flags by compiler vendor
src/arch/sparc/isa/decoder.isa:
    use correct namespace for sqrt
src/arch/sparc/isa/formats/basic.isa:
    add dummy return around panic
src/arch/sparc/isa/formats/integerop.isa:
    use correct namespace for stringops
src/arch/sparc/isa/includes.isa:
    include cstring and cmath where appropriate
src/arch/sparc/isa_traits.hh:
    remove dangling comma
src/arch/sparc/system.cc:
    dummy return to make sun cc front end happy
src/arch/sparc/tlb.cc:
src/base/compression/lzss_compression.cc:
    use std namespace for string ops
src/arch/sparc/utility.hh:
    no reason to say something is unsigned unsigned int
src/base/compression/null_compression.hh:
    dummy returns to for suncc front end
src/base/cprintf.hh:
    use standard variadic argument syntax instead of gnuc specefic renaming
src/base/hashmap.hh:
    don't need to define hash for suncc
src/base/hostinfo.cc:
    need stdio.h for sprintf
src/base/loader/object_file.cc:
    munmap is in std namespace not null
src/base/misc.hh:
    use M5 generic noreturn macros
    use standard variadic macro __VA_ARGS__
src/base/pollevent.cc:
    we need file.h for file flags
src/base/random.cc:
    mess with include files to make suncc happy
src/base/remote_gdb.cc:
    malloc memory for function instead of having a non-constant in an array size
src/base/statistics.hh:
    use std namespace for floor
src/base/stats/text.cc:
    include math.h for rint (cmath won't work)
src/base/time.cc:
    use suncc version of ctime_r
src/base/time.hh:
    change macro to work with both gcc and suncc
src/base/timebuf.hh:
    include cstring from memset and use std::
src/base/trace.hh:
    change variadic macros to be normal format
src/cpu/SConscript:
    add dummy returns where appropriate
src/cpu/activity.cc:
    include cstring for memset
src/cpu/exetrace.hh:
    include cstring fro memcpy
src/cpu/simple/base.hh:
    add dummy return for panic
src/dev/baddev.cc:
src/dev/pciconfigall.cc:
src/dev/platform.cc:
src/dev/sparc/t1000.cc:
    add dummy return where appropriate
src/dev/ide_atareg.h:
    make define work for both gnuc and suncc
src/dev/io_device.hh:
    add dummy returns where approirate
src/dev/pcidev.hh:
src/mem/cache/cache_impl.hh:
src/mem/cache/miss/blocking_buffer.cc:
src/mem/cache/tags/lru.hh:
src/mem/cache/tags/split.hh:
src/mem/cache/tags/split_lifo.hh:
src/mem/cache/tags/split_lru.hh:
src/mem/dram.cc:
src/mem/packet.cc:
src/mem/port.cc:
    include cstring for string ops
src/dev/sparc/mm_disk.cc:
    add dummy return where appropriate
    include cstring for string ops
src/mem/cache/miss/blocking_buffer.hh:
src/mem/port.hh:
    Add dummy return where appropriate
src/mem/cache/tags/iic.cc:
    cast hastSets to double for log() call
src/mem/physical.cc:
    cast pmemAddr to char* for munmap
src/sim/byteswap.hh:
    make define work for suncc and gnuc

--HG--
extra : convert_revision : ef8a1f1064e43b6c39838a85c01aee4f795497bd
2007-01-26 18:48:51 -05:00
Steve Reinhardt
51e3688701 Better handling of scons -u targets.
--HG--
extra : convert_revision : 7bf0688a1c83d8385b77a59a1c75040e9624c0ae
2006-12-04 09:09:36 -08:00
Steve Reinhardt
6b9903f426 SConstruct:
Couple minor fixes.

SConstruct:
    Couple minor fixes.

--HG--
extra : convert_revision : 25f3c12570287334c2cbd1cf9b8227043a57e7d1
2006-12-04 08:59:53 -08:00
Steve Reinhardt
6ae75ac958 import os.path.join as joinpath
--HG--
extra : convert_revision : 200612675e49908b9ff9c965aede35a657241391
2006-12-04 08:55:06 -08:00
Kevin Lim
610064c98a Add in O3CPU to default CPU list.
--HG--
extra : convert_revision : 4aaaae058cb763580ea0b9019d4a9346938121d4
2006-11-29 11:50:03 -05:00
Ali Saidi
ef5b842247 Parse CC/CXX early so that we use the correct compiler for testing dependencies/versions/libraries/etc
--HG--
extra : convert_revision : b34ee03e44b35df30b746c4c570316db75d6ffe5
2006-11-13 13:26:36 -05:00
Ali Saidi
cb172d0332 Get SPARC to the point that it starts running. Add ability to load the ROM bin files, cleanup lockstep printing a bit
Since we don't have a platform yet, you need to comment out the default responder stuff in Bus.py to make it work.

SConstruct:
    Add TARGET_ISA to the list of environment variables that end up in the build_env for python
configs/common/FSConfig.py:
    add a simple SPARC system to being testing with, you'll need to change makeLinuxAlphaSystem to makeSparcSystem in fs.py for now
src/SConscript:
    add a raw file object, at least until we get more info about how to compile openboot properly
src/arch/sparc/system.cc:
src/arch/sparc/system.hh:
    add parameters for ROM files (OBP/Reset/Hypervisor), a ROM, load files into ROM
src/base/loader/object_file.cc:
src/base/loader/object_file.hh:
    add option to try raw when nothing works
src/cpu/exetrace.cc:
    cleanup lockstep printing a little bit
src/cpu/m5legion_interface.h:
    change the instruction to be 32 bits because it is
src/mem/physical.cc:
    fix assert that doesn't work if memory starts somewhere above 0
src/python/m5/objects/BaseCPU.py:
    Add if statement to choose between sparc tlbs and alpha tlbs
src/python/m5/objects/System.py:
    Add a sparc system that sets the rom addresses correctly
src/python/m5/params.py:
    add the ability to add Addr() together

--HG--
extra : convert_revision : bbbd8a56134f2dda2728091f740e2f7119b0c4af
2006-11-09 18:22:46 -05:00
Nathan Binkert
f4aa4e43c4 Factor out all of the encumbered stuff into separate SConscript
files so the directories can easily be deleted.
Remove the FullCPU from the ALL_CPU_LIST and only add it if
it exists.

--HG--
extra : convert_revision : b16f56bb92a0063803c5099732dc289fe4363768
2006-11-09 08:43:35 -08:00
Gabe Black
eb4ef3ad76 Made kern a switching header file directory.
SConstruct:
    Put the code to make a switching header directory into a function so they are easy to make.
src/arch/SConscript:
    Replace switching header code with the new function call.
src/kern/SConscript:
    Created a new switching header directory in kern, and moved the declaration of some source files here.

--HG--
rename : src/kern/kernel_stats.cc => src/kern/base_kernel_stats.cc
rename : src/kern/kernel_stats.hh => src/kern/base_kernel_stats.hh
extra : convert_revision : 98f5320a5ade567c3e4f67fef123dfb0c5122545
2006-11-07 05:33:21 -05:00
Ali Saidi
430622c173 replace NULL with 0.... Why isn't NULL defined by default on Mac OS X I don't know
--HG--
extra : convert_revision : b60403445bd4e855732fd4e6753068abd90ecc9d
2006-11-06 10:15:27 -05:00
Ali Saidi
21cf4a46b9 fixes so that M5 will compile under solaris
SConstruct:
    Add check to see if we need to include libsocket
src/arch/sparc/floatregfile.cc:
src/arch/sparc/intregfile.cc:
    use memset rather than bzero and include the appropriate headerfile
src/base/pollevent.cc:
    If we're compling under solaris we need sys/file.h
src/base/random.cc:
src/base/random.hh:
    solaris doesn't have random(), so use rint with the correct rounding mode
    if we're compiling on solaris
src/base/stats/flags.hh:
    u_int32_t??
src/base/time.hh:
    grab the timersub() define from freebsd since it doesn't exist in solaris
src/cpu/inst_seq.hh:
    we don't need to include stdint here
src/sim/byteswap.hh:
    the method to detect endianness on Solaris is a little more complex...

--HG--
extra : convert_revision : 6b7db0e900e7bccfc250d65c125065f27280dda1
2006-11-04 21:41:01 -05:00
Nathan Binkert
6c6b78126a Construct a correct value of PYTHONHOME from the interpreter
running SCons, make it into a sticky option that can be
overridden at build time, and set it up before the interpreter
is started.  Also, fix the code that turns sticky options into
config/*.hh so that it works with types other than bool.

--HG--
extra : convert_revision : 602398b35d4da4e813f78865678ed348fdea7270
2006-10-20 11:37:59 -07:00
Steve Reinhardt
85436fd413 Move Python setup into Configure section so we can test whether the
setup is correct and provide meeaningful error messages when it's not.
Also fix for building on Cygwin where python lib is in /bin and not /lib.

--HG--
extra : convert_revision : 7a29ba17463de60c72b3d8b04e4c4f81fc64bf61
2006-10-01 01:42:18 -04:00