For PR723:
1. Don't force debug builds to have assertion checking turned on always.
   Let the default (on) be taken, or overridden by the command line
2. Create two new BuildModes based on assertion checking: Release+Assert
   and Debug-Assert.
3. Ensure that when building a distribution we get a release build with
   assertions enabled, regardless of the tree's configuration.
4. (unrelated) Fix library name generation for llvm-config usage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27488 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Makefile.rules b/Makefile.rules
index affd0fb..c122540 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -219,17 +219,21 @@
     C.Flags   := -g
     LD.Flags  := -g 
     KEEP_SYMBOLS := 1
-    # Assertions default to ON for debug builds.
-    ENABLE_ASSERTIONS := 1
   endif
 endif
 
-# If this is a debug build or if ENABLE_ASSERTIONS=1 is specified on the make
-# command line, enable assertions.
+# If ENABLE_ASSERTIONS=1 is specified (make command line or configured),
+# then enable assertions by defining the appropriate preprocessor symbols.
 ifdef ENABLE_ASSERTIONS
+  ifdef ENABLE_OPTIMIZED
+  BuildMode := $(BuildMode)+Asserts
+  endif
   CXX.Flags += -D_DEBUG
   C.Flags   += -D_DEBUG
 else
+  ifndef ENABLE_OPTIMIZED
+  BuildMode := $(BuildMode)-Asserts
+  endif
   CXX.Flags += -DNDEBUG
   C.Flags   += -DNDEBUG
 endif
@@ -580,10 +584,9 @@
 #---------------------------------------------------------
 ifeq ($(firstword $(LLVMLIBS)),config)
 LLVM_CONFIG := $(LLVM_SRC_ROOT)/utils/llvm-config/llvm-config 
-LLVMLIBS := $(shell $(LLVM_CONFIG) $(wordlist 2,9999,$(LLVMLIBS)))
-LLVMLIBS := $(patsubst $(PROJ_libdir)/%,%,$(LLVMLIBS))
+LLVMLIBS := $(shell $(LLVM_CONFIG) --libnames $(wordlist 2,9999,$(LLVMLIBS)))
+LLVMLIBS := $(patsubst lib%.a,%.a,$(LLVMLIBS))
 LLVMLIBS := $(patsubst %.o,%,$(LLVMLIBS))
-LLVMLIBS := $(patsubst -l%,%.a,$(LLVMLIBS))
 endif
 
 ifeq ($(LLVMLIBS),JIT)
@@ -1529,7 +1532,7 @@
 	  $(EchoCmd) Removing old $(DistDir) ; \
 	  $(RM) -rf $(DistDir); \
 	  $(EchoCmd) Making 'all' to verify build ; \
-	  $(MAKE) all ; \
+	  $(MAKE) ENABLE_OPTIMIZED=1 ENABLE_ASSERTIONS=1 all ; \
 	fi
 	$(Echo) Building Distribution Directory $(DistDir)
 	$(Verb) $(MKDIR) $(DistDir) 
@@ -1590,8 +1593,8 @@
 	  if test "$$subdir" \!= "." ; then \
 	    new_distdir="$(DistDir)/$$subdir" ; \
 	    test -d "$$new_distdir" || $(MKDIR) "$$new_distdir" || exit 1; \
-	    ( cd $$subdir && $(MAKE) DistDir="$$new_distdir" distdir ) || \
-	    exit 1; \
+	    ( cd $$subdir && $(MAKE) ENABLE_OPTIMIZED=1 ENABLE_ASSERTIONS=1 \
+	      DistDir="$$new_distdir" distdir ) || exit 1; \
 	  fi; \
 	done
 	$(Verb) if test "$(DistDir)" = "$(TopDistDir)" ; then \