Revert "CMake: Update to use standard CMake dependency tracking facilities instead"

This reverts commit r113631

Conflicts:

	CMakeLists.txt
	lib/CodeGen/CMakeLists.txt

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113817 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5577e31..854174c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -107,7 +107,6 @@
     set_target_properties(${name} PROPERTIES COMPILE_FLAGS ${cflag})
   endif(MSVC)
   install(TARGETS ${name}
-    EXPORT LLVM
     LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
     ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
 endmacro(add_clang_library)
diff --git a/examples/PrintFunctionNames/CMakeLists.txt b/examples/PrintFunctionNames/CMakeLists.txt
index cea15bf..5ea75db 100644
--- a/examples/PrintFunctionNames/CMakeLists.txt
+++ b/examples/PrintFunctionNames/CMakeLists.txt
@@ -2,16 +2,7 @@
 
 set(LLVM_NO_RTTI 1)
 
-add_clang_library(PrintFunctionNames
-  PrintFunctionNames.cpp
-  )
-
-target_link_libraries(PrintFunctionNames
-  clangAST
-  clangFrontend
-  clangBasic
-  )
-
+add_clang_library(PrintFunctionNames PrintFunctionNames.cpp)
 
 set_target_properties(PrintFunctionNames
   PROPERTIES
diff --git a/examples/clang-interpreter/CMakeLists.txt b/examples/clang-interpreter/CMakeLists.txt
index c008743..73f28bb 100644
--- a/examples/clang-interpreter/CMakeLists.txt
+++ b/examples/clang-interpreter/CMakeLists.txt
@@ -1,24 +1,34 @@
 set(LLVM_NO_RTTI 1)
 
+set(LLVM_USED_LIBS
+    clangFrontend
+    clangSerialization
+    clangDriver
+    clangCodeGen
+    clangSema
+    clangChecker
+    clangIndex
+    clangAnalysis
+    clangRewrite
+    clangAST
+    clangParse
+    clangLex
+    clangBasic
+    )
+
+set(LLVM_LINK_COMPONENTS
+    jit
+    interpreter
+    nativecodegen
+    asmparser
+    bitreader
+    bitwriter
+    codegen
+    ipo
+    selectiondag
+  )
+
 add_clang_executable(clang-interpreter
   main.cpp
   )
-
-add_llvm_link_components(clang-interpreter jit interpreter nativecodegen)
-target_link_libraries(clang-interpreter
-  clangFrontend
-  clangSerialization
-  clangDriver
-  clangCodeGen
-  clangSema
-  clangChecker
-  clangIndex
-  clangAnalysis
-  clangRewrite
-  clangAST
-  clangParse
-  clangLex
-  clangBasic
-  )
-
 add_dependencies(clang-interpreter clang-headers)
diff --git a/examples/wpa/CMakeLists.txt b/examples/wpa/CMakeLists.txt
index b7d85cb..13e4298 100644
--- a/examples/wpa/CMakeLists.txt
+++ b/examples/wpa/CMakeLists.txt
@@ -1,10 +1,6 @@
 set(LLVM_NO_RTTI 1)
 
-add_clang_executable(clang-wpa
-  clang-wpa.cpp
-  )
-
-target_link_libraries(clang-wpa
+set(LLVM_USED_LIBS
   clangIndex
   clangFrontend
   clangDriver
@@ -16,9 +12,15 @@
   clangAST
   clangParse
   clangLex
-  clangBasic
+  clangBasic)
+
+set( LLVM_LINK_COMPONENTS
+  bitreader
+  mc
+  core
   )
 
-add_dependencies(clang-wpa
-  clang-headers
+add_clang_executable(clang-wpa
+  clang-wpa.cpp
   )
+add_dependencies(clang-wpa clang-headers)
diff --git a/lib/AST/CMakeLists.txt b/lib/AST/CMakeLists.txt
index 9d2ee4f..f56e6c4 100644
--- a/lib/AST/CMakeLists.txt
+++ b/lib/AST/CMakeLists.txt
@@ -1,5 +1,7 @@
 set(LLVM_NO_RTTI 1)
 
+set(LLVM_USED_LIBS clangBasic)
+
 add_clang_library(clangAST
   APValue.cpp
   ASTConsumer.cpp
@@ -42,16 +44,5 @@
   TypePrinter.cpp
   )
 
-target_link_libraries(clangAST
-  clangBasic
-  )
-
-add_dependencies(clangAST
-  ClangARMNeon
-  ClangAttrClasses
-  ClangAttrList
-  ClangAttrImpl
-  ClangDiagnosticAST
-  ClangDeclNodes
-  ClangStmtNodes
-  )
+add_dependencies(clangAST ClangARMNeon ClangAttrClasses ClangAttrList 
+                 ClangAttrImpl ClangDiagnosticAST ClangDeclNodes ClangStmtNodes)
diff --git a/lib/Analysis/CMakeLists.txt b/lib/Analysis/CMakeLists.txt
index f05bbed..a2cfcfc 100644
--- a/lib/Analysis/CMakeLists.txt
+++ b/lib/Analysis/CMakeLists.txt
@@ -1,5 +1,7 @@
 set(LLVM_NO_RTTI 1)
 
+set(LLVM_USED_LIBS clangBasic clangAST clangIndex)
+
 add_clang_library(clangAnalysis
   AnalysisContext.cpp
   CFG.cpp
@@ -13,16 +15,5 @@
   UninitializedValues.cpp
   )
 
-target_link_libraries(clangAnalysis
-  clangBasic
-  clangAST
-  clangIndex
-  )
-
-add_dependencies(clangAnalysis
-  ClangAttrClasses
-  ClangAttrList
-  ClangDiagnosticAnalysis
-  ClangDeclNodes
-  ClangStmtNodes
-  )
+add_dependencies(clangAnalysis ClangAttrClasses ClangAttrList
+                 ClangDiagnosticAnalysis ClangDeclNodes ClangStmtNodes)
diff --git a/lib/Basic/CMakeLists.txt b/lib/Basic/CMakeLists.txt
index d0ee682..87bf834 100644
--- a/lib/Basic/CMakeLists.txt
+++ b/lib/Basic/CMakeLists.txt
@@ -14,10 +14,6 @@
   Version.cpp
   )
 
-target_link_libraries(clangBasic
-  LLVMMC
-  )
-
 # Determine Subversion revision.
 # FIXME: This only gets updated when CMake is run, so this revision number
 # may be out-of-date!
@@ -28,17 +24,16 @@
     PROPERTIES COMPILE_DEFINITIONS "SVN_REVISION=\"${CLANG_WC_REVISION}\"")
 endif()
 
-add_dependencies(clangBasic
-  ClangARMNeon
-  ClangAttrList
-  ClangDiagnosticAnalysis
-  ClangDiagnosticAST
-  ClangDiagnosticCommon
-  ClangDiagnosticDriver
-  ClangDiagnosticFrontend
-  ClangDiagnosticGroups
-  ClangDiagnosticLex
-  ClangDiagnosticParse
-  ClangDiagnosticSema
-  )
-
+add_dependencies(clangBasic 
+                 ClangARMNeon
+                 ClangAttrList
+                 ClangDiagnosticAnalysis
+                 ClangDiagnosticAST
+                 ClangDiagnosticCommon
+                 ClangDiagnosticDriver
+                 ClangDiagnosticFrontend
+                 ClangDiagnosticGroups
+                 ClangDiagnosticLex
+                 ClangDiagnosticParse
+                 ClangDiagnosticSema)
+                 
diff --git a/lib/Checker/CMakeLists.txt b/lib/Checker/CMakeLists.txt
index e4c9a80..e69808e 100644
--- a/lib/Checker/CMakeLists.txt
+++ b/lib/Checker/CMakeLists.txt
@@ -1,5 +1,7 @@
 set(LLVM_NO_RTTI 1)
 
+set(LLVM_USED_LIBS clangBasic clangLex clangAST clangFrontend clangRewrite)
+
 add_clang_library(clangChecker
   AdjustedReturnValueChecker.cpp
   AggExprVisitor.cpp
@@ -82,17 +84,5 @@
   ValueManager.cpp
   )
 
-target_link_libraries(clangChecker
-  clangBasic
-  clangLex
-  clangAST
-  clangFrontend
-  clangRewrite
-  )
-
-add_dependencies(clangChecker
-  ClangAttrClasses
-  ClangAttrList
-  ClangDeclNodes
-  ClangStmtNodes
-  )
+add_dependencies(clangChecker ClangAttrClasses ClangAttrList ClangDeclNodes
+                 ClangStmtNodes)
diff --git a/lib/CodeGen/CMakeLists.txt b/lib/CodeGen/CMakeLists.txt
index 3729c6a..1767a7d 100644
--- a/lib/CodeGen/CMakeLists.txt
+++ b/lib/CodeGen/CMakeLists.txt
@@ -1,5 +1,7 @@
 set(LLVM_NO_RTTI 1)
 
+set(LLVM_USED_LIBS clangBasic clangAST clangFrontend)
+
 add_clang_library(clangCodeGen
   BackendUtil.cpp
   CGBlocks.cpp
@@ -37,19 +39,5 @@
   TargetInfo.cpp
   )
 
-target_link_libraries(clangCodeGen
-  LLVMCore
-  LLVMAsmParser
-  LLVMBitReader
-  LLVMBitWriter
-  LLVMipo
-  )
-
-add_dependencies(clangCodeGen
-  ClangARMNeon
-  ClangAttrClasses
-  ClangAttrList
-  ClangDeclNodes
-  ClangStmtNodes
-  ClangDiagnosticFrontend
-  )
+add_dependencies(clangCodeGen ClangAttrClasses ClangAttrList ClangDeclNodes
+                 ClangStmtNodes)
diff --git a/lib/Driver/CMakeLists.txt b/lib/Driver/CMakeLists.txt
index 9558c91..9d41b55 100644
--- a/lib/Driver/CMakeLists.txt
+++ b/lib/Driver/CMakeLists.txt
@@ -1,5 +1,7 @@
 set(LLVM_NO_RTTI 1)
 
+set(LLVM_USED_LIBS clangBasic clangAST clangParse)
+
 add_clang_library(clangDriver
   Action.cpp
   Arg.cpp
@@ -21,16 +23,5 @@
   Types.cpp
   )
 
-target_link_libraries(clangDriver
-  clangBasic
-  clangAST
-  clangParse
-  )
-
-add_dependencies(clangDriver
-  ClangAttrList
-  ClangDiagnosticDriver
-  ClangDriverOptions
-  ClangCC1Options
-  ClangCC1AsOptions
-  )
+add_dependencies(clangDriver ClangAttrList ClangDiagnosticDriver
+                 ClangDriverOptions ClangCC1Options ClangCC1AsOptions)
diff --git a/lib/Frontend/CMakeLists.txt b/lib/Frontend/CMakeLists.txt
index 6d7d728..ca8fbcf 100644
--- a/lib/Frontend/CMakeLists.txt
+++ b/lib/Frontend/CMakeLists.txt
@@ -1,5 +1,14 @@
 set(LLVM_NO_RTTI 1)
 
+set( LLVM_USED_LIBS
+  clangDriver
+  clangParse
+  clangSema
+  clangAST
+  clangLex
+  clangBasic
+  )
+
 add_clang_library(clangFrontend
   ASTConsumers.cpp
   ASTMerge.cpp
@@ -27,17 +36,6 @@
   Warnings.cpp
   )
 
-target_link_libraries(clangFrontend
-  LLVMCore
-
-  clangDriver
-  clangParse
-  clangSema
-  clangAST
-  clangLex
-  clangBasic
-  )
-
 IF(MSVC)
   get_target_property(NON_ANSI_COMPILE_FLAGS clangFrontend COMPILE_FLAGS)
   string(REPLACE /Za
@@ -46,13 +44,12 @@
   set_target_properties(clangFrontend PROPERTIES COMPILE_FLAGS ${NON_ANSI_COMPILE_FLAGS})
 ENDIF(MSVC)
 
-add_dependencies(clangFrontend
+add_dependencies(clangFrontend 
   ClangAttrClasses
   ClangAttrList
   ClangCC1Options
-  ClangDiagnosticFrontend
+  ClangDiagnosticFrontend 
   ClangDiagnosticLex
   ClangDiagnosticSema
   ClangDeclNodes
-  ClangStmtNodes
-  )
+  ClangStmtNodes)
diff --git a/lib/FrontendTool/CMakeLists.txt b/lib/FrontendTool/CMakeLists.txt
index 3790ba7..09d9e34 100644
--- a/lib/FrontendTool/CMakeLists.txt
+++ b/lib/FrontendTool/CMakeLists.txt
@@ -1,13 +1,8 @@
 set(LLVM_NO_RTTI 1)
 
+set(LLVM_USED_LIBS clangDriver clangFrontend clangRewrite clangCodeGen 
+    clangChecker)
+
 add_clang_library(clangFrontendTool
   ExecuteCompilerInvocation.cpp
   )
-
-target_link_libraries(clangFrontendTool
-  clangDriver
-  clangFrontend
-  clangRewrite
-  clangCodeGen
-  clangChecker
-  )
diff --git a/lib/Index/CMakeLists.txt b/lib/Index/CMakeLists.txt
index 7ad106e..bbe9b56 100644
--- a/lib/Index/CMakeLists.txt
+++ b/lib/Index/CMakeLists.txt
@@ -1,5 +1,21 @@
 set(LLVM_NO_RTTI 1)
 
+set(LLVM_USED_LIBS clangBasic clangLex clangAST)
+
+set( LLVM_USED_LIBS
+  clangSerialization
+  clangFrontend
+  clangParse
+  clangSema
+  clangChecker
+  clangAnalysis
+  clangIndex
+  clangRewrite
+  clangAST
+  clangLex
+  clangBasic
+  )
+
 add_clang_library(clangIndex
   ASTLocation.cpp
   Analyzer.cpp
@@ -14,23 +30,5 @@
   SelectorMap.cpp
   )
 
-target_link_libraries(clangIndex
-  clangSerialization
-  clangFrontend
-  clangParse
-  clangSema
-  clangChecker
-  clangAnalysis
-  clangIndex
-  clangRewrite
-  clangAST
-  clangLex
-  clangBasic
-  )
-
-add_dependencies(clangIndex
-  ClangAttrClasses
-  ClangAttrList
-  ClangDeclNodes
-  ClangStmtNodes
-  )
+add_dependencies(clangIndex ClangAttrClasses ClangAttrList
+                 ClangDeclNodes ClangStmtNodes)
diff --git a/lib/Lex/CMakeLists.txt b/lib/Lex/CMakeLists.txt
index 3c23644..0476384 100644
--- a/lib/Lex/CMakeLists.txt
+++ b/lib/Lex/CMakeLists.txt
@@ -2,6 +2,8 @@
 
 # TODO: Add -maltivec when ARCH is PowerPC.
 
+set(LLVM_USED_LIBS clangBasic)
+
 add_clang_library(clangLex
   HeaderMap.cpp
   HeaderSearch.cpp
@@ -24,10 +26,4 @@
   TokenLexer.cpp
   )
 
-target_link_libraries(clangLex
-  clangBasic
-  )
-
-add_dependencies(clangLex
-  ClangDiagnosticLex
-  )
+add_dependencies(clangLex ClangDiagnosticLex)
diff --git a/lib/Parse/CMakeLists.txt b/lib/Parse/CMakeLists.txt
index a84cf51..5b75a66 100644
--- a/lib/Parse/CMakeLists.txt
+++ b/lib/Parse/CMakeLists.txt
@@ -1,5 +1,7 @@
 set(LLVM_NO_RTTI 1)
 
+set(LLVM_USED_LIBS clangBasic clangAST clangLex clangSema)
+
 add_clang_library(clangParse
   ParseAST.cpp
   ParseCXXInlineMethods.cpp
@@ -16,17 +18,4 @@
   Parser.cpp
   )
 
-target_link_libraries(clangParse
-  clangBasic
-  clangAST
-  clangLex
-  clangSema
-  )
-
-add_dependencies(clangParse
-  ClangAttrClasses
-  ClangAttrList
-  ClangDeclNodes
-  ClangDiagnosticParse
-  ClangStmtNodes
-  )
+add_dependencies(clangParse ClangAttrClasses ClangAttrList ClangDeclNodes ClangDiagnosticParse ClangStmtNodes)
diff --git a/lib/Rewrite/CMakeLists.txt b/lib/Rewrite/CMakeLists.txt
index 0f2c6f2..853a9c0 100644
--- a/lib/Rewrite/CMakeLists.txt
+++ b/lib/Rewrite/CMakeLists.txt
@@ -1,5 +1,7 @@
 set(LLVM_NO_RTTI 1)
 
+set(LLVM_USED_LIBS clangBasic clangAST clangParse clangFrontend)
+
 add_clang_library(clangRewrite
   DeltaTree.cpp
   FixItRewriter.cpp
@@ -14,16 +16,8 @@
   TokenRewriter.cpp
   )
 
-target_link_libraries(clangRewrite
-  clangBasic
-  clangAST
-  clangParse
-  clangFrontend
-  )
-
 add_dependencies(clangRewrite
   ClangAttrClasses
   ClangAttrList
   ClangDeclNodes
-  ClangStmtNodes
-  )
+  ClangStmtNodes)
diff --git a/lib/Sema/CMakeLists.txt b/lib/Sema/CMakeLists.txt
index d3a5261..c220e90 100644
--- a/lib/Sema/CMakeLists.txt
+++ b/lib/Sema/CMakeLists.txt
@@ -1,5 +1,7 @@
 set(LLVM_NO_RTTI 1)
 
+set(LLVM_USED_LIBS clangBasic clangAST clangLex clangAnalysis)
+
 add_clang_library(clangSema
   AnalysisBasedWarnings.cpp
   AttributeList.cpp
@@ -35,15 +37,5 @@
   TargetAttributesSema.cpp
   )
 
-target_link_libraries(clangSema
-  clangAnalysis
-  )
-
-add_dependencies(clangSema
-  ClangARMNeon
-  ClangAttrClasses
-  ClangAttrList
-  ClangDiagnosticSema
-  ClangDeclNodes
-  ClangStmtNodes
-  )
+add_dependencies(clangSema ClangARMNeon ClangAttrClasses ClangAttrList 
+                 ClangDiagnosticSema ClangDeclNodes ClangStmtNodes)
diff --git a/lib/Serialization/CMakeLists.txt b/lib/Serialization/CMakeLists.txt
index f1bf1f9..a378218 100644
--- a/lib/Serialization/CMakeLists.txt
+++ b/lib/Serialization/CMakeLists.txt
@@ -1,5 +1,7 @@
 set(LLVM_NO_RTTI 1)
 
+set(LLVM_USED_LIBS clangFrontend)
+
 add_clang_library(clangSerialization
   GeneratePCH.cpp
   ASTCommon.cpp
@@ -11,10 +13,6 @@
   ASTWriterStmt.cpp
   )
 
-target_link_libraries(clangSerialization
-  clangFrontend
-  )
-
 add_dependencies(clangSerialization
   ClangAttrClasses
   ClangAttrList
@@ -24,5 +22,4 @@
   ClangDiagnosticLex
   ClangDiagnosticSema
   ClangDeclNodes
-  ClangStmtNodes
-  )
+  ClangStmtNodes)
diff --git a/tools/c-index-test/CMakeLists.txt b/tools/c-index-test/CMakeLists.txt
index 149b70a..0cda6c4 100644
--- a/tools/c-index-test/CMakeLists.txt
+++ b/tools/c-index-test/CMakeLists.txt
@@ -1,11 +1,15 @@
 set(LLVM_NO_RTTI 1)
 
-add_clang_executable(c-index-test
-  c-index-test.c
+set(LLVM_USED_LIBS libclang)
+
+set( LLVM_LINK_COMPONENTS
+  bitreader
+  mc
+  core
   )
 
-target_link_libraries(c-index-test
-  libclang
+add_clang_executable(c-index-test
+  c-index-test.c
   )
 
 set_target_properties(c-index-test
diff --git a/tools/driver/CMakeLists.txt b/tools/driver/CMakeLists.txt
index 8529700..ec6e9c6 100644
--- a/tools/driver/CMakeLists.txt
+++ b/tools/driver/CMakeLists.txt
@@ -1,20 +1,6 @@
 set(LLVM_NO_RTTI 1)
 
-add_clang_executable(clang
-  driver.cpp
-  cc1_main.cpp
-  cc1as_main.cpp
-  )
-
-add_llvm_link_components(clang all)
-target_link_libraries(clang
-  LLVMAsmParser
-  LLVMBitReader
-  LLVMBitWriter
-  LLVMCodeGen
-  LLVMipo
-  LLVMSelectionDAG
-
+set( LLVM_USED_LIBS
   clangFrontendTool
   clangFrontend
   clangDriver
@@ -31,6 +17,22 @@
   clangBasic
   )
 
+set( LLVM_LINK_COMPONENTS
+  ${LLVM_TARGETS_TO_BUILD}
+  asmparser
+  bitreader
+  bitwriter
+  codegen
+  ipo
+  selectiondag
+  )
+
+add_clang_executable(clang
+  driver.cpp
+  cc1_main.cpp
+  cc1as_main.cpp
+  )
+
 if(UNIX)
   set(CLANGXX_LINK_OR_COPY create_symlink)
   set(CLANGXX_DESTDIR $ENV{DESTDIR}/)
diff --git a/tools/libclang/CMakeLists.txt b/tools/libclang/CMakeLists.txt
index fc7f41a..9a2a2a6 100644
--- a/tools/libclang/CMakeLists.txt
+++ b/tools/libclang/CMakeLists.txt
@@ -2,6 +2,22 @@
 
 set(LLVM_NO_RTTI 1)
 
+set(LLVM_USED_LIBS
+  clangFrontend
+  clangDriver
+  clangSerialization
+  clangIndex
+  clangSema
+  clangAST
+  clangLex
+  clangBasic)
+
+set( LLVM_LINK_COMPONENTS
+  bitreader
+  mc
+  core
+  )
+
 add_clang_library(libclang
   CIndex.cpp
   CIndexCXX.cpp
@@ -13,34 +29,19 @@
   CXCursor.cpp
   CXType.cpp
   ../../include/clang-c/Index.h
-  )
-
-target_link_libraries(libclang
-  LLVMBitReader
-  LLVMMC
-  LLVMCore
-
-  clangFrontend
-  clangDriver
-  clangSerialization
-  clangIndex
-  clangSema
-  clangAST
-  clangLex
-  clangBasic
-  )
+)
 
 if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
   # dylib versioning information
   # FIXME: Is there a more CMake-ish way to handle this?
-  set(LIBCLANG_VERSION 1
+  set(LIBCLANG_VERSION 1 
       CACHE STRING "Version number of the libclang library")
   set(LIBCLANG_SUBVERSION 0
       CACHE STRING "Minor version number of the libclang library")
-  set(LIBCLANG_LINK_FLAGS
+  set(LIBCLANG_LINK_FLAGS 
       "-Wl,-current_version -Wl,${LIBCLANG_VERSION}.${LIBCLANG_SUBVERSION} -Wl,-compatibility_version -Wl,1")
 
-  set(LIBCLANG_LINK_FLAGS
+  set(LIBCLANG_LINK_FLAGS 
       "${LIBCLANG_LINK_FLAGS} -Wl,-dead_strip -Wl,-seg1addr -Wl,0xE0000000")
 
   set_target_properties(libclang