Modify the unittests Makefiles so that they don't rebuild parts of LLVM just to
run the tests. Most of this was stolen from the llvm/test Makefiles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61648 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Makefile b/Makefile
index 5987b88..d453330 100644
--- a/Makefile
+++ b/Makefile
@@ -116,7 +116,6 @@
 tools-only: all
 libs-only: all
 install-libs: install
-unittests: all
 
 #------------------------------------------------------------------------
 # Make sure the generated headers are up-to-date. This must be kept in
@@ -185,7 +184,7 @@
 	$(SVN) $(SVN-UPDATE-OPTIONS) update $(LLVM_SRC_ROOT)
 	@ $(SVN) status $(LLVM_SRC_ROOT) | $(SUB-SVN-DIRS) | xargs $(SVN) $(SVN-UPDATE-OPTIONS) update
 
-happiness: update all check
+happiness: update all check unittests
 
 .PHONY: srpm rpm update happiness
 
diff --git a/Makefile.rules b/Makefile.rules
index 3c9bb5e..313f559 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -22,9 +22,9 @@
 RecursiveTargets := all clean clean-all install uninstall install-bytecode
 LocalTargets     := all-local clean-local clean-all-local check-local \
                     install-local printvars uninstall-local \
-		    install-bytecode-local
+		    install-bytecode-local unittests
 TopLevelTargets  := check dist dist-check dist-clean dist-gzip dist-bzip2 \
-                    dist-zip
+                    dist-zip unittests
 UserTargets      := $(RecursiveTargets) $(LocalTargets) $(TopLevelTargets)
 InternalTargets  := preconditions distdir dist-hook
 
@@ -1416,6 +1416,22 @@
 	fi
 
 ###############################################################################
+# UNITTESTS: Running the unittests test suite
+###############################################################################
+
+unittests::
+	$(Verb) if test -d "$(PROJ_OBJ_ROOT)/unittests" ; then \
+	  if test -f "$(PROJ_OBJ_ROOT)/unittests/Makefile" ; then \
+	    $(EchoCmd) Running unittests test suite ; \
+	    $(MAKE) -C $(PROJ_OBJ_ROOT)/unittests ; \
+	  else \
+	    $(EchoCmd) No Makefile in unittests directory ; \
+	  fi ; \
+	else \
+	  $(EchoCmd) No unittests directory ; \
+	fi
+
+###############################################################################
 # DISTRIBUTION: Handle construction of a distribution tarball
 ###############################################################################
 
@@ -1503,6 +1519,7 @@
 	    --srcdir=../$(DistName) $(DIST_CHECK_CONFIG_OPTIONS) && \
 	  $(MAKE) all && \
 	  $(MAKE) check && \
+	  $(MAKE) unittests && \
 	  $(MAKE) install && \
 	  $(MAKE) uninstall && \
 	  $(MAKE) dist-clean && \
diff --git a/autoconf/configure.ac b/autoconf/configure.ac
index 2054548..c9bd8f2 100644
--- a/autoconf/configure.ac
+++ b/autoconf/configure.ac
@@ -1029,6 +1029,7 @@
 AC_CONFIG_MAKEFILE(runtime/Makefile)
 AC_CONFIG_MAKEFILE(test/Makefile)
 AC_CONFIG_MAKEFILE(test/Makefile.tests)
+AC_CONFIG_MAKEFILE(unittests/Makefile)
 AC_CONFIG_MAKEFILE(tools/Makefile)
 AC_CONFIG_MAKEFILE(utils/Makefile)
 AC_CONFIG_MAKEFILE(projects/Makefile)
diff --git a/unittests/Makefile b/unittests/Makefile
index 33f3c8e..d96df4f 100644
--- a/unittests/Makefile
+++ b/unittests/Makefile
@@ -8,6 +8,7 @@
 ##===----------------------------------------------------------------------===##
 
 LEVEL = ..
+
 include $(LEVEL)/Makefile.config
 
 LIBRARYNAME = UnitTestMain
@@ -20,4 +21,4 @@
 include $(LEVEL)/Makefile.common
 
 clean::
-	$(RM) -f *Tests
+	$(Verb) $(RM) -f *Tests