@@ -4,7 +4,7 @@ function(lldb_link_common_libs name targetkind)
44 endif ()
55
66 if (${targetkind} MATCHES "SHARED" )
7- set (LINK_KEYWORD PUBLIC )
7+ set (LINK_KEYWORD PRIVATE )
88 endif ()
99
1010 if (${targetkind} MATCHES "SHARED" OR ${targetkind} MATCHES "EXE" )
@@ -56,32 +56,32 @@ macro(add_lldb_library name)
5656 if (PARAM_OBJECT)
5757 add_library (${name} ${libkind} ${srcs} )
5858 else ()
59- llvm_add_library(${name} ${libkind} DISABLE_LLVM_LINK_LLVM_DYLIB ${srcs} )
60-
61- lldb_link_common_libs(${name} "${libkind} " )
62-
6359 if (PARAM_SHARED)
6460 if (LLDB_LINKER_SUPPORTS_GROUPS)
65- target_link_libraries (${name} PUBLIC
66- -Wl,--start -group ${SWIFT_ALL_LIBS} -Wl,--end -group)
67- target_link_libraries (${name} PUBLIC
68- -Wl,--start -group ${CLANG_ALL_LIBS} -Wl,--end -group)
69- target_link_libraries (${name} PUBLIC
70- -Wl,--start -group ${LLVM_ALL_LIBS} -Wl,--end -group)
61+ llvm_add_library(${name} ${libkind} ${srcs} LINK_LIBS
62+ -Wl,--start -group ${LLDB_USED_LIBS} -Wl,--end -group
63+ -Wl,--start -group ${SWIFT_ALL_LIBS} -Wl,--end -group
64+ -Wl,--start -group ${CLANG_ALL_LIBS} -Wl,--end -group
65+ )
7166 else ()
72- target_link_libraries (${name} PUBLIC ${SWIFT_ALL_LIBS} )
73- target_link_libraries ( ${name} PUBLIC ${CLANG_ALL_LIBS} )
74- target_link_libraries ( ${name} PUBLIC ${LLVM_ALL_LIBS} )
67+ llvm_add_library (${name} ${libkind} ${srcs} LINK_LIBS
68+ ${LLDB_USED_LIBS} ${SWIFT_ALL_LIBS} ${CLANG_ALL_LIBS}
69+ )
7570 endif ()
71+ else ()
72+ llvm_add_library(${name} ${libkind} ${srcs} )
7673 endif ()
77- llvm_config(${name} ${LLVM_LINK_COMPONENTS} ${LLVM_PRIVATE_LINK_COMPONENTS} )
7874
7975 if (${name} STREQUAL "liblldb" )
8076 if (PARAM_SHARED)
77+ set (out_dir lib${LLVM_LIBDIR_SUFFIX} )
78+ if (${name} STREQUAL "liblldb" AND LLDB_BUILD_FRAMEWORK)
79+ set (out_dir ${LLDB_FRAMEWORK_INSTALL_DIR} )
80+ endif ()
8181 install (TARGETS ${name}
8282 RUNTIME DESTINATION bin
83- LIBRARY DESTINATION lib ${LLVM_LIBDIR_SUFFIX }
84- ARCHIVE DESTINATION lib ${LLVM_LIBDIR_SUFFIX } )
83+ LIBRARY DESTINATION ${out_dir }
84+ ARCHIVE DESTINATION ${out_dir } )
8585 else ()
8686 install (TARGETS ${name}
8787 LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
@@ -93,23 +93,39 @@ macro(add_lldb_library name)
9393 # Hack: only some LLDB libraries depend on the clang autogenerated headers,
9494 # but it is simple enough to make all of LLDB depend on some of those
9595 # headers without negatively impacting much of anything.
96- add_dependencies (${name} libclang)
96+ get_property (CLANG_TABLEGEN_TARGETS GLOBAL PROPERTY CLANG_TABLEGEN_TARGETS)
97+ if (CLANG_TABLEGEN_TARGETS)
98+ add_dependencies (${name} ${CLANG_TABLEGEN_TARGETS} )
99+ endif ()
97100
98101 set_target_properties (${name} PROPERTIES FOLDER "lldb libraries" )
99102endmacro (add_lldb_library)
100103
101104macro (add_lldb_executable name )
102- add_llvm_executable(${name} DISABLE_LLVM_LINK_LLVM_DYLIB ${ARGN} )
103- set_target_properties (${name} PROPERTIES FOLDER "lldb executables" )
104- # ELF and Mach-O loaders have different ways of expressing that an rpath
105- # should be relative to the binary being loaded. Mach-O uses @loader_path, and
106- # ELF uses $ORIGIN.
107- if (APPLE )
108- set (rpath_prefix "@loader_path" )
109- else ()
110- set (rpath_prefix "$ORIGIN" )
105+ cmake_parse_arguments (ARG "INCLUDE_IN_FRAMEWORK" "" "" ${ARGN} )
106+ add_llvm_executable(${name} DISABLE_LLVM_LINK_LLVM_DYLIB ${ARG_UNPARSED_ARGUMENTS} )
107+ set_target_properties (${name} PROPERTIES
108+ FOLDER "lldb executables" )
109+
110+ if (LLDB_BUILD_FRAMEWORK)
111+ if (ARG_INCLUDE_IN_FRAMEWORK)
112+ string (REGEX REPLACE "[^/]+" ".." _dots ${LLDB_FRAMEWORK_INSTALL_DIR} )
113+ set_target_properties (${name} PROPERTIES
114+ RUNTIME_OUTPUT_DIRECTORY $<TARGET_FILE_DIR:liblldb>/Resources
115+ BUILD_WITH_INSTALL_RPATH On
116+ INSTALL_RPATH "@loader_path/../../../../${_dots} /${LLDB_FRAMEWORK_INSTALL_DIR} " )
117+
118+ add_llvm_tool_symlink(${name} $<TARGET_FILE:${name} > ARG_ALWAYS_GENERATE)
119+ else ()
120+ set_target_properties (${name} PROPERTIES
121+ BUILD_WITH_INSTALL_RPATH On
122+ INSTALL_RPATH "@loader_path/../${LLDB_FRAMEWORK_INSTALL_DIR} " )
123+ endif ()
111124 endif ()
112- set_target_properties (${name} PROPERTIES INSTALL_RPATH "${rpath_prefix} /../lib" )
125+
126+ # Might need the following in an else clause for above to cover non-Apple
127+ # set(rpath_prefix "$ORIGIN")
128+ # set_target_properties(${name} PROPERTIES INSTALL_RPATH "${rpath_prefix}/../lib")
113129endmacro (add_lldb_executable)
114130
115131# Support appending linker flags to an existing target.
0 commit comments