llvm-project/lldb/cmake/modules/AddLLDB.cmake

79 lines
2.6 KiB
CMake
Raw Normal View History

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;OBJECT"
""
""
${ARGN})
llvm_process_sources(srcs ${PARAM_UNPARSED_ARGUMENTS})
if (MSVC_IDE OR XCODE)
string(REGEX MATCHALL "/[^/]+" split_path ${CMAKE_CURRENT_SOURCE_DIR})
list(GET split_path -1 dir)
file(GLOB_RECURSE headers
../../include/lldb${dir}/*.h)
set(srcs ${srcs} ${headers})
endif()
if (PARAM_MODULE)
set(libkind MODULE)
elseif (PARAM_SHARED)
set(libkind SHARED)
elseif (PARAM_STATIC)
set(libkind STATIC)
elseif (PARAM_OBJECT)
set(libkind OBJECT)
else ()
# library type unspecified - controlled by BUILD_SHARED_LIBS
unset(libkind)
endif()
#PIC not needed on Win
if (NOT MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
endif()
if (PARAM_OBJECT)
add_library(${name} ${libkind} ${srcs})
else()
llvm_add_library(${name} ${libkind} ${srcs})
if (PARAM_STATIC)
set(lldb_library_keyword ${cmake_2_8_12_INTERFACE})
else ()
set(lldb_library_keyword ${cmake_2_8_12_PUBLIC})
endif ()
if(LLDB_USED_LIBS)
# The Darwin linker doesn't understand --start-group/--end-group.
if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
target_link_libraries(${name} ${lldb_library_keyword}
-Wl,--start-group ${LLDB_USED_LIBS} -Wl,--end-group)
else()
target_link_libraries(${name} ${lldb_library_keyword} ${LLDB_USED_LIBS})
endif()
endif()
target_link_libraries(${name} ${lldb_library_keyword} ${CLANG_USED_LIBS})
target_link_libraries(${name} ${lldb_library_keyword} ${LLVM_USED_LIBS})
llvm_config(${name} ${LLVM_LINK_COMPONENTS})
target_link_libraries(${name} ${lldb_library_keyword} ${LLVM_COMMON_LIBS})
install(TARGETS ${name}
LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
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
# headers without negatively impacting much of anything.
add_dependencies(${name} libclang)
set_target_properties(${name} PROPERTIES FOLDER "lldb libraries")
endmacro(add_lldb_library)
macro(add_lldb_executable name)
add_llvm_executable(${name} ${ARGN})
set_target_properties(${name} PROPERTIES FOLDER "lldb executables")
endmacro(add_lldb_executable)