The existing scripts were including pthread code and QT code at the same time, and also insisting on an having a set of architecture specific source files for whatever the current architecture is. This change selects using either QT or pthreads based on the host architecture, distributes accumulating source files, list source files explicitly (to avoid including redundant coroutine libraries) and makes scons insist on an architecture specific QT implementation only if QT is being used. It also defines a preprocessor symbol which tells some headers whether or not pthreads are being used, and also clones the scons environment to avoid leaking flags into the main environment used to compile gem5 itself. If the host architecture isn't supported by systemc, a warning will be printed, and the various build products and SConscript files will be skipped over. Change-Id: I1a40123a11e49e02922a054f093246cf197087bf Reviewed-on: https://gem5-review.googlesource.com/3461 Reviewed-by: Matthias Jung <jungma@eit.uni-kl.de> Reviewed-by: Christian Menard <christian.menard@tu-dresden.de> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com>
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])