Author: cbieneman Date: Thu Dec 15 16:01:17 2016 New Revision: 289879 URL: http://llvm.org/viewvc/llvm-project?rev=289879&view=rev Log: [CMake] Refactor LLDB libraries and tools to be components
In LLVM's CMake we have a convention that components have both a build and an install target. Making LLDB follow this convention will allow LLDB to take advantage of the LLVM_DISTRIBUTION_COMPONENTS build option from LLVM. Modified: lldb/trunk/cmake/modules/AddLLDB.cmake lldb/trunk/cmake/modules/LLDBConfig.cmake lldb/trunk/tools/argdumper/CMakeLists.txt lldb/trunk/tools/darwin-debug/CMakeLists.txt lldb/trunk/tools/debugserver/source/MacOSX/CMakeLists.txt lldb/trunk/tools/driver/CMakeLists.txt lldb/trunk/tools/lldb-mi/CMakeLists.txt lldb/trunk/tools/lldb-server/CMakeLists.txt Modified: lldb/trunk/cmake/modules/AddLLDB.cmake URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/cmake/modules/AddLLDB.cmake?rev=289879&r1=289878&r2=289879&view=diff ============================================================================== --- lldb/trunk/cmake/modules/AddLLDB.cmake (original) +++ lldb/trunk/cmake/modules/AddLLDB.cmake Thu Dec 15 16:01:17 2016 @@ -17,7 +17,7 @@ function(lldb_link_common_libs name targ endif() endfunction(lldb_link_common_libs) -macro(add_lldb_library name) +function(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 @@ -80,14 +80,23 @@ macro(add_lldb_library name) set(out_dir ${LLDB_FRAMEWORK_INSTALL_DIR}) endif() install(TARGETS ${name} + COMPONENT ${name} RUNTIME DESTINATION bin LIBRARY DESTINATION ${out_dir} ARCHIVE DESTINATION ${out_dir}) else() install(TARGETS ${name} + COMPONENT ${name} LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}) endif() + if (NOT CMAKE_CONFIGURATION_TYPES) + add_custom_target(install-${name} + DEPENDS ${name} + COMMAND "${CMAKE_COMMAND}" + -DCMAKE_INSTALL_COMPONENT=${name} + -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + endif() endif() endif() @@ -100,14 +109,15 @@ macro(add_lldb_library name) endif() set_target_properties(${name} PROPERTIES FOLDER "lldb libraries") -endmacro(add_lldb_library) +endfunction(add_lldb_library) -macro(add_lldb_executable name) - cmake_parse_arguments(ARG "INCLUDE_IN_FRAMEWORK" "" "" ${ARGN}) +function(add_lldb_executable name) + cmake_parse_arguments(ARG "INCLUDE_IN_FRAMEWORK;GENERATE_INSTALL" "" "" ${ARGN}) add_llvm_executable(${name} ${ARG_UNPARSED_ARGUMENTS}) set_target_properties(${name} PROPERTIES FOLDER "lldb executables") + set(install_dir bin) if(LLDB_BUILD_FRAMEWORK) if(ARG_INCLUDE_IN_FRAMEWORK) string(REGEX REPLACE "[^/]+" ".." _dots ${LLDB_FRAMEWORK_INSTALL_DIR}) @@ -115,16 +125,34 @@ macro(add_lldb_executable name) RUNTIME_OUTPUT_DIRECTORY $<TARGET_FILE_DIR:liblldb>/Resources BUILD_WITH_INSTALL_RPATH On INSTALL_RPATH "@loader_path/../../../../${_dots}/${LLDB_FRAMEWORK_INSTALL_DIR}") - - add_llvm_tool_symlink(${name} ${name} ARG_ALWAYS_GENERATE - OUTPUT_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR}) else() set_target_properties(${name} PROPERTIES BUILD_WITH_INSTALL_RPATH On INSTALL_RPATH "@loader_path/../${LLDB_FRAMEWORK_INSTALL_DIR}") + if(ARG_GENERATE_INSTALL) + install(TARGETS ${name} + COMPONENT ${name} + RUNTIME DESTINATION ${install_dir}) + if (NOT CMAKE_CONFIGURATION_TYPES) + add_custom_target(install-${name} + DEPENDS ${name} + COMMAND "${CMAKE_COMMAND}" + -DCMAKE_INSTALL_COMPONENT=${name} + -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + endif() + endif() endif() endif() -endmacro(add_lldb_executable) + + if(ARG_INCLUDE_IN_FRAMEWORK AND LLDB_BUILD_FRAMEWORK) + add_llvm_tool_symlink(${name} ${name} ALWAYS_GENERATE SKIP_INSTALL + OUTPUT_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR}) + endif() +endfunction(add_lldb_executable) + +function(add_lldb_tool name) + add_lldb_executable(${name} GENERATE_INSTALL ${ARGN}) +endfunction() # Support appending linker flags to an existing target. # This will preserve the existing linker flags on the Modified: lldb/trunk/cmake/modules/LLDBConfig.cmake URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/cmake/modules/LLDBConfig.cmake?rev=289879&r1=289878&r2=289879&view=diff ============================================================================== --- lldb/trunk/cmake/modules/LLDBConfig.cmake (original) +++ lldb/trunk/cmake/modules/LLDBConfig.cmake Thu Dec 15 16:01:17 2016 @@ -275,6 +275,7 @@ include_directories(BEFORE if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) install(DIRECTORY include/ + COMPONENT lldb_headers DESTINATION include FILES_MATCHING PATTERN "*.h" Modified: lldb/trunk/tools/argdumper/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/argdumper/CMakeLists.txt?rev=289879&r1=289878&r2=289879&view=diff ============================================================================== --- lldb/trunk/tools/argdumper/CMakeLists.txt (original) +++ lldb/trunk/tools/argdumper/CMakeLists.txt Thu Dec 15 16:01:17 2016 @@ -1,6 +1,6 @@ include(${LLDB_PROJECT_ROOT}/cmake/LLDBDependencies.cmake) -add_lldb_executable(lldb-argdumper INCLUDE_IN_FRAMEWORK +add_lldb_tool(lldb-argdumper INCLUDE_IN_FRAMEWORK argdumper.cpp ) @@ -11,6 +11,3 @@ else() endif() llvm_config(lldb-argdumper ${LLVM_LINK_COMPONENTS}) - -install(TARGETS lldb-argdumper - RUNTIME DESTINATION bin) Modified: lldb/trunk/tools/darwin-debug/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/darwin-debug/CMakeLists.txt?rev=289879&r1=289878&r2=289879&view=diff ============================================================================== --- lldb/trunk/tools/darwin-debug/CMakeLists.txt (original) +++ lldb/trunk/tools/darwin-debug/CMakeLists.txt Thu Dec 15 16:01:17 2016 @@ -1,6 +1,3 @@ -add_lldb_executable(darwin-debug INCLUDE_IN_FRAMEWORK +add_lldb_tool(darwin-debug INCLUDE_IN_FRAMEWORK darwin-debug.cpp ) - -install(TARGETS darwin-debug - RUNTIME DESTINATION bin) Modified: lldb/trunk/tools/debugserver/source/MacOSX/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/MacOSX/CMakeLists.txt?rev=289879&r1=289878&r2=289879&view=diff ============================================================================== --- lldb/trunk/tools/debugserver/source/MacOSX/CMakeLists.txt (original) +++ lldb/trunk/tools/debugserver/source/MacOSX/CMakeLists.txt Thu Dec 15 16:01:17 2016 @@ -36,7 +36,7 @@ set(DEBUGSERVER_USED_LIBS lldbDebugserverMacOSX_DarwinLog ) -add_lldb_executable(debugserver INCLUDE_IN_FRAMEWORK +add_lldb_tool(debugserver INCLUDE_IN_FRAMEWORK HasAVX.s CFBundle.cpp CFString.cpp @@ -78,7 +78,3 @@ if (NOT ("${LLDB_CODESIGN_IDENTITY}" STR WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin ) endif() - -install(TARGETS debugserver - RUNTIME DESTINATION bin - ) Modified: lldb/trunk/tools/driver/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/driver/CMakeLists.txt?rev=289879&r1=289878&r2=289879&view=diff ============================================================================== --- lldb/trunk/tools/driver/CMakeLists.txt (original) +++ lldb/trunk/tools/driver/CMakeLists.txt Thu Dec 15 16:01:17 2016 @@ -1,6 +1,6 @@ include(${LLDB_PROJECT_ROOT}/cmake/LLDBDependencies.cmake) -add_lldb_executable(lldb +add_lldb_tool(lldb Driver.cpp Platform.cpp ) @@ -32,5 +32,3 @@ endif() set_target_properties(lldb PROPERTIES VERSION ${LLDB_VERSION}) -install(TARGETS lldb - RUNTIME DESTINATION bin) Modified: lldb/trunk/tools/lldb-mi/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-mi/CMakeLists.txt?rev=289879&r1=289878&r2=289879&view=diff ============================================================================== --- lldb/trunk/tools/lldb-mi/CMakeLists.txt (original) +++ lldb/trunk/tools/lldb-mi/CMakeLists.txt Thu Dec 15 16:01:17 2016 @@ -84,7 +84,7 @@ endif () # We need to include the llvm components we depend on manually, as liblldb does # not re-export those. set(LLVM_LINK_COMPONENTS Support) -add_lldb_executable(lldb-mi ${LLDB_MI_SOURCES}) +add_lldb_tool(lldb-mi ${LLDB_MI_SOURCES}) target_link_libraries(lldb-mi liblldb) if (HAVE_LIBPTHREAD) @@ -92,6 +92,3 @@ if (HAVE_LIBPTHREAD) endif () set_target_properties(lldb-mi PROPERTIES VERSION ${LLDB_VERSION}) - -install(TARGETS lldb-mi - RUNTIME DESTINATION bin) Modified: lldb/trunk/tools/lldb-server/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-server/CMakeLists.txt?rev=289879&r1=289878&r2=289879&view=diff ============================================================================== --- lldb/trunk/tools/lldb-server/CMakeLists.txt (original) +++ lldb/trunk/tools/lldb-server/CMakeLists.txt Thu Dec 15 16:01:17 2016 @@ -165,7 +165,7 @@ set(LLVM_LINK_COMPONENTS target ) -add_lldb_executable(lldb-server INCLUDE_IN_FRAMEWORK +add_lldb_tool(lldb-server INCLUDE_IN_FRAMEWORK Acceptor.cpp lldb-gdbserver.cpp lldb-platform.cpp @@ -188,6 +188,3 @@ llvm_config(lldb-server ${LLVM_LINK_COMP target_link_libraries(lldb-server ${LLDB_SYSTEM_LIBS}) set_target_properties(lldb-server PROPERTIES VERSION ${LLDB_VERSION}) - -install(TARGETS lldb-server - RUNTIME DESTINATION bin) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits