about summary refs log tree commit diff homepage
diff options
context:
space:
mode:
-rw-r--r--lib/Basic/CMakeLists.txt15
-rw-r--r--lib/Core/CMakeLists.txt25
-rw-r--r--lib/Expr/CMakeLists.txt6
-rw-r--r--lib/Module/CMakeLists.txt15
-rw-r--r--lib/Solver/CMakeLists.txt13
-rw-r--r--lib/Support/CMakeLists.txt6
-rw-r--r--tools/kleaver/CMakeLists.txt7
-rw-r--r--tools/klee/CMakeLists.txt28
8 files changed, 86 insertions, 29 deletions
diff --git a/lib/Basic/CMakeLists.txt b/lib/Basic/CMakeLists.txt
index 13f76d42..988a564e 100644
--- a/lib/Basic/CMakeLists.txt
+++ b/lib/Basic/CMakeLists.txt
@@ -12,3 +12,18 @@ klee_add_component(kleeBasic
 	KTest.cpp
 	Statistics.cpp
 )
+set(LLVM_COMPONENTS
+  support
+)
+
+klee_get_llvm_libs(LLVM_LIBS ${LLVM_COMPONENTS})
+target_link_libraries(kleeBasic PUBLIC ${LLVM_LIBS})
+
+target_link_libraries(kleeBasic PRIVATE
+  # FIXME: THIS IS STUPID.
+  # `ConstructSolverChain.cpp` should be in
+  # `kleaverSolver` not in in `kleeBasic`.
+  # We are creating a circular dependency because
+  # of this because `kleaverSolver` depends on `kleeBasic`.
+  kleaverSolver
+)
diff --git a/lib/Core/CMakeLists.txt b/lib/Core/CMakeLists.txt
index 05e2cffa..79c529d0 100644
--- a/lib/Core/CMakeLists.txt
+++ b/lib/Core/CMakeLists.txt
@@ -27,3 +27,28 @@ klee_add_component(kleeCore
 	TimingSolver.cpp
 	UserSearcher.cpp
 )
+
+# TODO: Work out what the correct LLVM components are for
+# kleeCore.
+set(LLVM_COMPONENTS
+  core
+  support
+)
+
+if ("${LLVM_PACKAGE_VERSION}" VERSION_EQUAL "3.6" OR
+    "${LLVM_PACKAGE_VERSION}" VERSION_GREATER "3.6")
+  list(APPEND LLVM_COMPONENTS mcjit executionengine native)
+else()
+  list(APPEND LLVM_COMPONENTS jit engine)
+endif()
+
+
+klee_get_llvm_libs(LLVM_LIBS ${LLVM_COMPONENTS})
+target_link_libraries(kleeCore PUBLIC ${LLVM_LIBS})
+target_link_libraries(kleeCore PRIVATE
+  kleeBasic
+  kleeModule
+  kleaverSolver
+  kleaverExpr
+  kleeSupport
+)
diff --git a/lib/Expr/CMakeLists.txt b/lib/Expr/CMakeLists.txt
index 6ea77544..c7dbb8b7 100644
--- a/lib/Expr/CMakeLists.txt
+++ b/lib/Expr/CMakeLists.txt
@@ -21,3 +21,9 @@ klee_add_component(kleaverExpr
 	Parser.cpp
 	Updates.cpp
 )
+
+set(LLVM_COMPONENTS
+  support
+)
+klee_get_llvm_libs(LLVM_LIBS ${LLVM_COMPONENTS})
+target_link_libraries(kleaverExpr PUBLIC ${LLVM_LIBS})
diff --git a/lib/Module/CMakeLists.txt b/lib/Module/CMakeLists.txt
index a952ed17..4d993047 100644
--- a/lib/Module/CMakeLists.txt
+++ b/lib/Module/CMakeLists.txt
@@ -18,3 +18,18 @@ klee_add_component(kleeModule
 	PhiCleaner.cpp
 	RaiseAsm.cpp
 )
+
+set(LLVM_COMPONENTS
+  bitreader
+  bitwriter
+  ipo
+  linker
+  support
+)
+
+if ("${LLVM_PACKAGE_VERSION}" VERSION_EQUAL "3.3" OR
+    "${LLVM_PACKAGE_VERSION}" VERSION_GREATER "3.3")
+  list(APPEND LLVM_COMPONENTS irreader)
+endif()
+klee_get_llvm_libs(LLVM_LIBS ${LLVM_COMPONENTS})
+target_link_libraries(kleeModule PUBLIC ${LLVM_LIBS})
diff --git a/lib/Solver/CMakeLists.txt b/lib/Solver/CMakeLists.txt
index 8add4ad6..7864b2de 100644
--- a/lib/Solver/CMakeLists.txt
+++ b/lib/Solver/CMakeLists.txt
@@ -29,4 +29,15 @@ klee_add_component(kleaverSolver
 	Z3Solver.cpp
 )
 
-target_link_libraries(kleaverSolver PRIVATE ${KLEE_SOLVER_LIBRARIES})
+set(LLVM_COMPONENTS
+  support
+)
+klee_get_llvm_libs(LLVM_LIBS ${LLVM_COMPONENTS})
+target_link_libraries(kleaverSolver PUBLIC ${LLVM_LIBS})
+
+target_link_libraries(kleaverSolver PRIVATE
+  kleeBasic
+  kleaverExpr
+  kleeSupport
+  ${KLEE_SOLVER_LIBRARIES})
+
diff --git a/lib/Support/CMakeLists.txt b/lib/Support/CMakeLists.txt
index 4bf7ea7d..0e76062a 100644
--- a/lib/Support/CMakeLists.txt
+++ b/lib/Support/CMakeLists.txt
@@ -18,3 +18,9 @@ klee_add_component(kleeSupport
 )
 
 target_link_libraries(kleeSupport PRIVATE ${ZLIB_LIBRARIES})
+
+set(LLVM_COMPONENTS
+  support
+)
+klee_get_llvm_libs(LLVM_LIBS ${LLVM_COMPONENTS})
+target_link_libraries(kleeSupport PUBLIC ${LLVM_LIBS})
diff --git a/tools/kleaver/CMakeLists.txt b/tools/kleaver/CMakeLists.txt
index befbcc6e..54452fff 100644
--- a/tools/kleaver/CMakeLists.txt
+++ b/tools/kleaver/CMakeLists.txt
@@ -10,9 +10,10 @@ add_executable(kleaver
 	main.cpp
 )
 
-klee_get_llvm_libs(LLVM_LIBS support)
-set(KLEE_LIBS kleeBasic kleaverSolver kleaverExpr kleeSupport)
+set(KLEE_LIBS
+  kleaverSolver
+)
 
-target_link_libraries(kleaver ${KLEE_LIBS} ${LLVM_LIBS})
+target_link_libraries(kleaver ${KLEE_LIBS})
 
 install(TARGETS kleaver RUNTIME DESTINATION bin)
diff --git a/tools/klee/CMakeLists.txt b/tools/klee/CMakeLists.txt
index 1f9fe63f..9c8c2192 100644
--- a/tools/klee/CMakeLists.txt
+++ b/tools/klee/CMakeLists.txt
@@ -10,33 +10,11 @@ add_executable(klee
 	main.cpp
 )
 
-# FIXME: This shouldn't be done here. Instead the KLEE libraries
-# should declare their LLVM dependencies.
-set(LLVM_COMPONENTS
-	bitreader
-	bitwriter
-	ipo
-	linker
-	support
+set(KLEE_LIBS
+  kleeCore
 )
 
-if ("${LLVM_PACKAGE_VERSION}" VERSION_EQUAL "3.6" OR
-    "${LLVM_PACKAGE_VERSION}" VERSION_GREATER "3.6")
-  list(APPEND LLVM_COMPONENTS mcjit executionengine native)
-else()
-  list(APPEND LLVM_COMPONENTS jit engine)
-endif()
-
-if ("${LLVM_PACKAGE_VERSION}" VERSION_EQUAL "3.3" OR
-    "${LLVM_PACKAGE_VERSION}" VERSION_GREATER "3.3")
-  list(APPEND LLVM_COMPONENTS irreader)
-endif()
-
-klee_get_llvm_libs(LLVM_LIBS ${LLVM_COMPONENTS})
-
-set(KLEE_LIBS kleeCore kleeBasic kleeModule kleaverSolver kleaverExpr kleeSupport)
-
-target_link_libraries(klee ${KLEE_LIBS} ${LLVM_LIBS})
+target_link_libraries(klee ${KLEE_LIBS})
 
 install(TARGETS klee RUNTIME DESTINATION bin)