systemc, scons: Link systemc tests against the shared gem5 library.
authorGabe Black <gabeblack@google.com>
Fri, 8 Jun 2018 03:45:33 +0000 (20:45 -0700)
committerGabe Black <gabeblack@google.com>
Wed, 15 Aug 2018 01:31:28 +0000 (01:31 +0000)
Otherwise, having hundreds of statically linked gem5s takes up a huge
amount of space, and all those repeated linkings brings the mightiest
workstation to its knees with sufficient parallelism, or will take
forever without it.

Change-Id: I4c358b1a50c5e2b0027ac72423f887e24c786b19
Reviewed-on: https://gem5-review.googlesource.com/10959
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/systemc/tests/SConscript

index cc7c476b3418c031479cf661a47dedfd3b1f6ebe..81f122dabd4ce6c0103781471517b91f167b26dc 100644 (file)
@@ -62,10 +62,9 @@ if env['USE_SYSTEMC']:
             }
 
     ext_dir = Dir('..').Dir('ext')
-    class SystemCTestBin(UnitTest):
+    class SystemCTestBin(Executable):
         def __init__(self, test):
-            super(SystemCTestBin, self).__init__(
-                    test.target, *test.sources, main=True)
+            super(SystemCTestBin, self).__init__(test.target, *test.sources)
 
         @classmethod
         def declare_all(cls, env):
@@ -80,6 +79,14 @@ if env['USE_SYSTEMC']:
 
             super(SystemCTestBin, cls).declare_all(env)
 
+        def declare(self, env):
+            sources = list(self.sources)
+            for f in self.filters:
+                sources = Source.all.apply_filter(f)
+            objs = self.srcs_to_objs(env, sources)
+            objs = objs + env['SHARED_LIB'] + env['MAIN_OBJS']
+            return super(SystemCTestBin, self).declare(env, objs)
+
     tests = []
     def new_test(dirname, name):
         test = SystemCTest(dirname, name)