Files
gem5/ext/systemc
Gabe Black 64d1297d86 scons: Move the build of ext/ into the variant dirs.
These are no longer split out and shared in the root build/ directory.
This does result in a small amount of overhead from building redundant
copies of these files, although the overhead is not significant. When
building 7 different variants of gem5, all the ISAs and NULL, the
difference on my machine was:

Before:
real    41m25.372s
user    914m22.266s
sys     41m51.816s

After:
real    42m38.074s
user    921m36.852s
sys     43m2.949s

This is about a 2-3% difference, which is a worse than typical case,
since the overhead scales with the number of variants being built.

The benefit of pulling ext/ into the variant directory is that there can
now be a single config which applies to all files used to build gem5,
and that config is represented by the variant of gem5 being built.

Change-Id: I6f0db97c63a7f3e252e7e351aa862340978e701b
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/56750
Maintainer: Gabe Black <gabe.black@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Gabe Black <gabe.black@gmail.com>
2022-03-11 22:54:16 +00:00
..
2017-05-18 08:36:56 +00:00
2017-05-18 08:36:56 +00:00
2017-05-18 08:36:56 +00:00
2017-05-18 08:36:56 +00:00
2017-05-18 08:36:56 +00:00
2017-05-18 08:36:56 +00:00

Overview

This repository is a redistribution of the Accellera SystemC 2.3.1 library [1]. This distribution replaces Accellera's Autoconf build system with a SCons build system, which is very useful for integration of SystemC in other SCons based projects, e.g., gem5 [2].

The repository contains all the source files from the Accellera distribution, but strips down the boost dependencies. All references to the boost library are replaced by calls to the C++11 STL. This repository also contains the TLM 2.0 protocl checker from Doulos [3].

Build

To build libsystemc-2.3.1.so, simply type scons. Optionally you can specify the number of jobs.

scons -j N

To build and link to SystemC from another SCons project, simply call the SConscript located in src/. Be sure to add -std=c++11 to the CXXFLAGS of your environment and to export the environment as 'env'. In case you build on OS X, you will need to add -undefined dynamic lookup to your LINKFLAGS. This is how a minimal SConstruct for your SystemC project could look:

env = Environment()

env.Append(CXXFLAGS=['-std=c++11'])
if env['PLATFORM'] == 'darwin':
    env.Append(LINKFLAGS=['-undefined', 'dynamic_lookup'])

systemc = env.SConscript('<path_to_systemc>/src/SConscript', exports=['env'])
env.Program('example', ['example.cc', systemc])