Telling scons to build build/${BUILD_OPTS}/unittests.${VARIANT} will
get it to build and run all googletest based unit tests under the
${BUILD_OPTS} build options (ARM, ALPHA, X86, etc.), and compiled with
the flags, etc., for the ${VARIANT} variant (ie. opt, debug, etc.).
This will make it easy to run the unit tests without having to actually
know where they are, what tests are available, etc.
This target is called unittests* and not something based on gtest or
googletest since it's my intention for all unit tests to be based on
googletest, making the distinction unnecessary. Since the target is
essentially part of the external interface for scons, I wanted to name
it something general so it'll be less likely that we have to change it.
Change-Id: I8fdec768d821974309c92a2ce4c96dce7df24fa5
Reviewed-on: https://gem5-review.googlesource.com/6282
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>
gtest_env = new_env.Clone()
gtest_env.Append(LIBS=gtest_env['GTEST_LIBS'])
gtest_env.Append(CPPFLAGS=gtest_env['GTEST_CPPFLAGS'])
+ gtests = []
for test in GTest.all:
test_sources = Source.all.with_tag(str(test.target))
test_objs = [ s.static(gtest_env) for s in test_sources ]
- gtest_env.Program(test.dir.File('%s.%s' % (test.target, label)),
- test_objs)
+ gtests.append(gtest_env.Program(
+ test.dir.File('%s.%s' % (test.target, label)), test_objs))
+
+ gtest_target = Dir(new_env['BUILDDIR']).File('unittests.%s' % label)
+ AlwaysBuild(Command(gtest_target, gtests, gtests))
progname = exename
if strip: