Overhauled llvm/clang docs builds. Closes PR6613.

NOTE: 2nd part changeset for cfe trunk to follow.

*** PRE-PATCH ISSUES ADDRESSED

- clang api docs fail build from objdir
- clang/llvm api docs collide in install PREFIX/
- clang/llvm main docs collide in install
- clang/llvm main docs have full of hard coded destination
  assumptions and make use of absolute root in static html files;
  namely CommandGuide tools hard codes a website destination
  for cross references and some html cross references assume
  website root paths

*** IMPROVEMENTS

- bumped Doxygen from 1.4.x -> 1.6.3
- splits llvm/clang docs into 'main' and 'api' (doxygen) build trees
- provide consistent, reliable doc builds for both main+api docs
- support buid vs. install vs. website intentions
- support objdir builds
- document targets with 'make help'
- correct clean and uninstall operations
- use recursive dir delete only where absolutely necessary
- added call function fn.RMRF which safeguards against botched 'rm -rf';
  if any target (or any variable is evaluated) which attempts
  to remove any dirs which match a hard-coded 'safelist', a verbose
  error will be printed and make will error-stop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103213 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/docs/api/api.css b/docs/api/api.css
new file mode 100644
index 0000000..bcc4853
--- /dev/null
+++ b/docs/api/api.css
@@ -0,0 +1,319 @@
+* {
+  margin: 0px;
+  padding: 0px;
+}
+
+body {
+  padding: 1.0em 2.0em;
+}
+
+body, table {
+  font-family: Arial, Helvetica, sans-serif;
+  font-size: 13px;
+  background-color: #FFFFFF;
+  color: #000000;
+}
+
+a {
+  color: #3C7AA0;
+  text-decoration: none;
+  font-weight: bold;
+}
+a:hover {
+  color: #53A9E8;
+}
+a.anchor {
+  color: #000000;
+}
+
+h1 {
+  font-size: 200%;
+  text-align: center;
+}
+h2 {
+  font-size: 140%;
+}
+h3 {
+  font-size: 120%;
+}
+
+h2, h3 {
+  border-bottom: 2px solid;
+  margin-top: 2em;
+}
+
+h1, h2, h3 {
+  margin-bottom: 0.5em;
+}
+
+h3.version {
+  border: none;
+  margin-top: 0;
+  text-align: center;
+}
+
+hr {
+  display: none;
+}
+
+div.header {
+}
+div.header div.title {
+  text-align: center;
+  font-size: xx-large;
+  font-weight: bold;
+}
+
+div.footer {
+  padding-top: 2em;
+}
+div.footer div {
+  padding-top: 0.5em;
+  border-top: 2px solid #000000;
+}
+div.footer div p {
+  text-align: right;
+  font-size: x-small;
+}
+
+div.navigation {
+  font-size: 9pt;
+}
+div.navigation div.tabs {
+  padding-top: 0.5em;
+  padding-bottom: 0.5em;
+  border-bottom: 2px solid #000000;
+}
+div.navigation div.tabs ul {
+}
+div.navigation div.tabs ul li {
+  display: inline;
+  line-height: 200%;
+}
+div.navigation div.tabs ul li a {
+  background-color: #183F66;
+  color: #EEEEEE;
+  border: 1px solid gray;
+  border: none;
+  padding: 0.25em 1.0em;
+}
+div.navigation div.tabs ul li a {
+  background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#3C7AA0), to(#183F66));
+  background: -moz-linear-gradient(top, #3C7AA0, #183F66);
+  -webkit-border-radius: 1.0em;
+  -moz-border-radius: 1.0em;
+  -webkit-box-shadow: 0px 1px 2px #777777;
+  -moz-box-shadow: #777777 0px 1px 2px;
+}
+div.navigation div.tabs ul li a:hover {
+  background-color: #2E76CF;
+  background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#53A9E8), to(#2E76CF));
+  background: -moz-linear-gradient(top, #53A9E8, #2E76CF);
+  text-shadow: 0px 0px 2px #2F2F2F;
+}
+div.navigation div.tabs ul li.current a {
+  color: #F0A000;
+}
+div.navigation div.tabs ul li.current a:hover {
+}
+
+div.navigation div.navpath {
+  padding-top: 0.5em;
+  padding-bottom: 0.5em;
+  padding-left: 1.0em;
+  border-bottom: 2px solid #000000;
+}
+
+div.contents {
+  padding: 1.0em 0.0em;
+}
+
+div.contents p {
+  margin: 1em 0em;
+}
+
+div.contents dl,
+div.contents ul {
+  margin-top: 1em;
+  margin-bottom: 1em;
+  padding-left: 2.0em;
+  list-style-type: none;
+}
+
+div.contents dl ul,
+div.contents ul ul {
+  margin-top: 0em;
+  margin-bottom: 0em;
+}
+
+div.center {
+  text-align:center;
+}
+
+div.dynheader {
+  padding-top: 1.0em;
+  padding-bottom: 1.0em;
+}
+
+table {
+  table-layout: auto;
+  border-spacing: 0;
+  border-collapse: collapse;
+  margin-top: 1.0em;
+  border-bottom: 1px solid #999999;
+}
+
+table h2 {
+  border-top: 1px solid #999999;
+  border-bottom: none;
+  padding: 0.2em 8px;
+  margin: 0;
+  background: #181E29;
+  color: #FFFFFF;
+  text-shadow: 0px 0px 2px #000000;
+  background: -webkit-gradient(linear, 0% 0%, 100% 0%, from(#181E29), to(#868CA8));
+  background: -moz-linear-gradient(left, #181E29, #868CA8);
+}
+
+td.indexkey, td.indexvalue {
+  background-color: #F0F1F2;
+  border: 1px solid;
+  padding: 0.4em 0.5em;
+}
+
+td.memTemplParams, td.memItemLeft, td.memItemRight {
+  border-top: 1px solid #999999;
+}
+td.memTemplParams, td.memTemplItemLeft, td.memTemplItemRight, td.memItemLeft, td.memItemRight, td.mdescLeft, td.mdescRight {
+  background-color: #F0F1F2;
+}
+td.memItemLeft, td.mdescLeft {
+  padding-left: 0.5em;
+  padding-left: 0.2em;
+  border-right: 1px solid #dddddd;
+}
+td.memItemRight, td.mdescRight {
+  padding-right: 0.5em;
+  padding-left: 0.2em;
+}
+
+td div.groupHeader {
+  border-top: 1px solid #999999;
+  padding: 0.2em 8px;
+}
+
+td.memItemLeft, td.memItemRight,
+td.mdescLeft, td.mdescRight {
+  padding-top: 0.2em;
+  padding-bottom: 0.2em;
+}
+
+tr.memlist {
+  background-color: #F0F1F2;
+}
+tr.memlist td {
+  border: 1px solid #999999;
+  padding: 0.2em 0.5em;
+}
+
+div.memitem {
+  border: 1px solid #999999;
+  margin-top: 1.0em;
+  margin-bottom: 1.0em;
+  -webkit-border-radius: 0.5em;
+  -webkit-box-shadow: 3px 3px 6px #777777;
+  -moz-border-radius: 0.5em;
+  -moz-box-shadow: black 3px 3px 3px;
+}
+div.memitem div.memproto {
+  background-color: #E3E4E5;
+  padding: 0.25em 0.5em;
+  -webkit-border-top-left-radius: 0.5em;
+  -webkit-border-top-right-radius: 0.5em;
+  -moz-border-radius-topleft: 0.5em;
+  -moz-border-radius-topright: 0.5em;
+}
+div.memitem div.memproto td code {
+  color: #AA0000;
+}
+div.memitem div.memproto td.paramname code {
+  color: #000000;
+}
+div.memitem div.memdoc {
+  background-color: #F0F1F2;
+  padding: 0.25em 0.5em;
+  -webkit-border-bottom-left-radius: 0.5em;
+  -webkit-border-bottom-right-radius: 0.5em;
+  -moz-border-radius-bottomleft: 0.5em;
+  -moz-border-radius-bottomright: 0.5em;
+}
+div.memitem div.memdoc table {
+  background-color: #F0F1F2;
+  border: none;
+}
+
+table.memname {
+  border: none;
+  background-color: #E3E4E5;
+  margin: 0;
+  padding: 0;
+}
+td.paramtype {
+  padding-left: 0.5em;
+}
+td.paramname {
+  padding-right: 0.5em;
+}
+
+pre.fragment {
+  background-color: #F5F5F5;
+  border: 1px solid #999999;
+  margin: 1em;
+  padding: 0.5em;
+  font-family: monospace, fixed;
+  font-size: 8pt;
+  overflow: auto;
+  word-wrap: break-word;
+}
+pre.fragment span.keyword {
+  color: #008000
+}
+pre.fragment span.keywordtype {
+  color: #604020
+}
+pre.fragment span.keywordflow {
+  color: #e08000
+}
+pre.fragment span.comment {
+  color: #800000
+}
+pre.fragment span.preprocessor {
+  color: #806020
+}
+pre.fragment span.stringliteral {
+  color: #002080
+}
+pre.fragment span.charliteral {
+  color: #008080
+}
+pre.fragment span.vhdldigit { 
+  color: #ff00ff 
+}
+pre.fragment span.vhdlchar { 
+  color: #000000 
+}
+pre.fragment span.vhdlkeyword { 
+  color: #700070 
+}
+pre.fragment span.vhdllogic { 
+  color: #ff0000 
+}
+
+div.contents div.intro div.logo {
+  background: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 400, from(#F0A000), to(rgba(24,63,102,0.8)));
+  background: -moz-radial-gradient(50% 50%, farthest-side, #F0A000, rgba(24,63,102,0.8));
+}
+
+div.contents div.dynheader {
+  padding: 0.25em 0.0em;
+}