Hi all,

I've just trying to build the latest lldb/llvm with
BUILD_SHARED_LIBS/DEBUG On linux:
- llvm: 1f22900
- lldb: 942b4a2
- ld: 2.24.51 (binutils for debian)

And got some errors about undefined references, for most of additional
libraries, that exist in lldbCore mostly.
And then I came with the patch [ADD_LLDB_LIBRARY.PATCH], but even after
this patch lldb didn't built successfully for me, and the reason was in
inter-libs dependencies, and here is the cmake error message after I add
tried to resolve them:
CMake Error: The inter-target dependency graph contains the following strongly 
connected component (cycle):
  "lldbTarget" of type SHARED_LIBRARY
    depends on "lldbCore" (weak)
  "lldbCore" of type SHARED_LIBRARY
    depends on "lldbTarget" (weak)
At least one of these targets is not a STATIC_LIBRARY.  Cyclic dependencies are 
allowed only among static libraries.

Indeed:
- lldbCore depends from lldbTarget
- lldbTarget depends from lldbCore

So after this I came with another patch, that just allows undefined
references in object files [CMAKE_SHARED_LINKER_FLAGS.PATCH].
But it is a bit hackish, and so if somebody have ideas/existing solution
for this problem please post here.

Cheers,
Azat.
>From 942b4a2201c52baf8d93ef7c2ced09aa04344c62 Mon Sep 17 00:00:00 2001
From: Azat Khuzhin <a3at.m...@gmail.com>
Date: Mon, 23 Feb 2015 06:00:04 -0500
Subject: [PATCH] Don't add -Wl,-z,defs for lldb, because of inter-libs
 dependencies

---
 CMakeLists.txt |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index efc866d..3095db4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -235,6 +235,8 @@ else ()
   set(cmake_2_8_12_PUBLIC PUBLIC)
 endif ()
 
+string(REPLACE "-Wl,-z,defs" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
+
 macro(add_lldb_library name)
   # only supported parameters to this macro are the optional 
   # MODULE;SHARED;STATIC library type and source files
-- 
1.7.10.4

>From d40bfd96e44a07712fff3bb4e56713c2573a0ddb Mon Sep 17 00:00:00 2001
From: Azat Khuzhin <a3at.m...@gmail.com>
Date: Mon, 23 Feb 2015 05:17:33 -0500
Subject: [PATCH] Autoadd lldbCore for most of additional libs

---
 CMakeLists.txt               |   13 ++++++++++---
 source/API/CMakeLists.txt    |    2 ++
 source/CMakeLists.txt        |    5 +++--
 source/Core/CMakeLists.txt   |    2 ++
 source/Host/CMakeLists.txt   |    2 +-
 source/Target/CMakeLists.txt |    2 ++
 6 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index efc866d..387deea 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -239,9 +239,9 @@ macro(add_lldb_library name)
   # only supported parameters to this macro are the optional 
   # MODULE;SHARED;STATIC library type and source files
   cmake_parse_arguments(PARAM
-    "MODULE;SHARED;STATIC"
-    ""
-    ""
+    "MODULE;SHARED;STATIC;NOCORE" # options
+    "" # one value
+    "LIBS" # multi value
     ${ARGN})
   llvm_process_sources(srcs ${PARAM_UNPARSED_ARGUMENTS})
   
@@ -294,6 +294,13 @@ macro(add_lldb_library name)
   if (LLVM_COMMON_DEPENDS)
     add_dependencies(${name} ${LLVM_COMMON_DEPENDS})
   endif()
+  if (NOT PARAM_NOCORE AND NOT "${name}" STREQUAL "lldbCore")
+    message(STATUS "Autoadd lldbCore for ${name}")
+    set(PARAM_LIBS ${PARAM_LIBS} lldbCore)
+  endif()
+  if (NOT "${PARAM_LIBS}" STREQUAL "")
+    target_link_libraries(${name} ${PARAM_LIBS})
+  endif()
 
   # Hack: only some LLDB libraries depend on the clang autogenerated headers,
   # but it is simple enough to make all of LLDB depend on some of those
diff --git a/source/API/CMakeLists.txt b/source/API/CMakeLists.txt
index 65ce88e..5a285fe 100644
--- a/source/API/CMakeLists.txt
+++ b/source/API/CMakeLists.txt
@@ -62,4 +62,6 @@ add_lldb_library(lldbAPI
   SBVariablesOptions.cpp
   SBWatchpoint.cpp
   SBUnixSignals.cpp
+
+  LIBS lldbCore
   )
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index 0259176..cd88eeb 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -25,17 +25,17 @@ include_directories(
   )
 endif ()
 
+add_subdirectory(Target)
+add_subdirectory(Core)
 add_subdirectory(API)
 add_subdirectory(Breakpoint)
 add_subdirectory(Commands)
-add_subdirectory(Core)
 add_subdirectory(DataFormatters)
 add_subdirectory(Expression)
 add_subdirectory(Host)
 add_subdirectory(Interpreter)
 add_subdirectory(Plugins)
 add_subdirectory(Symbol)
-add_subdirectory(Target)
 add_subdirectory(Utility)
 
 include(../cmake/LLDBDependencies.cmake)
@@ -45,6 +45,7 @@ add_lldb_library(liblldb SHARED
   lldb-log.cpp
   ${LLDB_WRAP_PYTHON}
   ${LLDB_VERS_GENERATED_FILE}
+  NOCORE
   )
 
 if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
diff --git a/source/Core/CMakeLists.txt b/source/Core/CMakeLists.txt
index b2069a0..2ccce8d 100644
--- a/source/Core/CMakeLists.txt
+++ b/source/Core/CMakeLists.txt
@@ -72,5 +72,7 @@ add_lldb_library(lldbCore
   ValueObjectSyntheticFilter.cpp
   ValueObjectVariable.cpp
   VMRange.cpp
+
+  LIBS lldbTarget lldbHost
   )
 
diff --git a/source/Host/CMakeLists.txt b/source/Host/CMakeLists.txt
index cdc79bc..bf17029 100644
--- a/source/Host/CMakeLists.txt
+++ b/source/Host/CMakeLists.txt
@@ -125,4 +125,4 @@ else()
   endif()
 endif()
 
-add_lldb_library(lldbHost ${HOST_SOURCES})
+add_lldb_library(lldbHost ${HOST_SOURCES} NOCORE)
diff --git a/source/Target/CMakeLists.txt b/source/Target/CMakeLists.txt
index d34aa92..c28638a 100644
--- a/source/Target/CMakeLists.txt
+++ b/source/Target/CMakeLists.txt
@@ -56,4 +56,6 @@ add_lldb_library(lldbTarget
   ThreadSpec.cpp
   UnixSignals.cpp
   UnwindAssembly.cpp
+
+  NOCORE
   )
-- 
1.7.10.4

_______________________________________________
lldb-dev mailing list
lldb-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to