This adds a new scons flag --no-duplicate-sources to build without linking source files to the build directory. I find this very helpful when using CLion, since I can now generate a compilation database using `bear scons build/ALL/gem5.debug --no-duplicate-sources` and CLion will now correctly semantically analyze all the files inside src/. It also ensures that clicking on a build warning/error now opens the real source file rather than a symlink. This is not enabled by default since it's possible that certain use cases are not working correctly, but the basic testing I've done so far appears to work just fine. It appears that with this change the `<root>/src` directory is no longer added to `PYTHONPATH` when running `tests/main.py`, so this change depends on https://gem5-review.git.corp.google.com/c/public/gem5/+/68757 Change-Id: Iddc9bf9c8211e68e5432c0a07f5c95f427c1ca16 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/68518 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Bobby Bruce <bbruce@ucdavis.edu> Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
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])