[llvm] r241663 - Revert r241621, "[CMake] Cleanup tools/CMakeLists.txt to take advantage of the auto-registration that was already partially working."

Chris Bieneman beanz at apple.com
Wed Jul 8 10:21:16 PDT 2015


Takumi,

I was unaware anyone was using that setting through the CMake command line, and there was a corresponding bug in my change that I can address. The other issue is that my patches renamed all the LLVM_EXTERNAL_*_* settings to LLVM_TOOL_*_* because they apply to both in and out of tree tools.

Is there a reason you use this mechanism? For me to re-land my changes you’ll need to update your bots to use the new setting, or to not rely on this mechanism.

Additionally, your bot doesn’t log its CMake invocation anywhere in the logs that I can see. Can you please update the bot so that it has its CMake invocation logged somewhere on every build so that issues like this can be triaged more easily? Without knowing that you were using the LLVM_EXTERNAL_CLANG_* flags there was no way for me to tell what was going wrong or to reproduce the issue.

Thanks,
-Chris

> On Jul 7, 2015, at 7:35 PM, NAKAMURA Takumi <geek4civic at gmail.com> wrote:
> 
> Author: chapuni
> Date: Tue Jul  7 21:35:43 2015
> New Revision: 241663
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=241663&view=rev
> Log:
> Revert r241621, "[CMake] Cleanup tools/CMakeLists.txt to take advantage of the auto-registration that was already partially working."
> 
> It broke the build that relies on LLVM_EXTERNAL_CLANG_*.
> 
> Modified:
>    llvm/trunk/cmake/modules/AddLLVM.cmake
>    llvm/trunk/tools/CMakeLists.txt
> 
> Modified: llvm/trunk/cmake/modules/AddLLVM.cmake
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/AddLLVM.cmake?rev=241663&r1=241662&r2=241663&view=diff
> ==============================================================================
> --- llvm/trunk/cmake/modules/AddLLVM.cmake (original)
> +++ llvm/trunk/cmake/modules/AddLLVM.cmake Tue Jul  7 21:35:43 2015
> @@ -676,13 +676,6 @@ macro(add_llvm_target target_name)
>   set( CURRENT_LLVM_TARGET LLVM${target_name} )
> endmacro(add_llvm_target)
> 
> -function(canonicalize_tool_name name output)
> -  string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" nameStrip ${name})
> -  string(REPLACE "-" "_" nameUNDERSCORE ${nameStrip})
> -  string(TOUPPER ${nameUNDERSCORE} nameUPPER)
> -  set(${output} "${nameUPPER}" PARENT_SCOPE)
> -endfunction(canonicalize_tool_name)
> -
> # Add external project that may want to be built as part of llvm such as Clang,
> # lld, and Polly. This adds two options. One for the source directory of the
> # project, which defaults to ${CMAKE_CURRENT_SOURCE_DIR}/${name}. Another to
> @@ -693,43 +686,38 @@ macro(add_llvm_external_project name)
>   if("${add_llvm_external_dir}" STREQUAL "")
>     set(add_llvm_external_dir ${name})
>   endif()
> -  canonicalize_tool_name(${name} nameUPPER)
> -  set(LLVM_TOOL_${nameUPPER}_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}"
> +  list(APPEND LLVM_IMPLICIT_PROJECT_IGNORE "${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}")
> +  string(REPLACE "-" "_" nameUNDERSCORE ${name})
> +  string(TOUPPER ${nameUNDERSCORE} nameUPPER)
> +  set(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}"
>       CACHE PATH "Path to ${name} source directory")
> -  if (NOT ${LLVM_TOOL_${nameUPPER}_SOURCE_DIR} STREQUAL ""
> -      AND EXISTS ${LLVM_TOOL_${nameUPPER}_SOURCE_DIR}/CMakeLists.txt)
> -    option(LLVM_TOOL_${nameUPPER}_BUILD
> +  if (NOT ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} STREQUAL ""
> +      AND EXISTS ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}/CMakeLists.txt)
> +    option(LLVM_EXTERNAL_${nameUPPER}_BUILD
>            "Whether to build ${name} as part of LLVM" ON)
> -    if (LLVM_TOOL_${nameUPPER}_BUILD)
> -      add_subdirectory(${LLVM_TOOL_${nameUPPER}_SOURCE_DIR} ${add_llvm_external_dir})
> -      set(LLVM_TOOL_${nameUPPER}_BUILD Off)
> +    if (LLVM_EXTERNAL_${nameUPPER}_BUILD)
> +      add_subdirectory(${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} ${add_llvm_external_dir})
>     endif()
>   endif()
> endmacro(add_llvm_external_project)
> 
> macro(add_llvm_tool_subdirectory name)
> -  set(LLVM_TOOL_${nameUPPER}_BUILD Off)
> +  list(APPEND LLVM_IMPLICIT_PROJECT_IGNORE "${CMAKE_CURRENT_SOURCE_DIR}/${name}")
>   add_subdirectory(${name})
> endmacro(add_llvm_tool_subdirectory)
> 
> -function(create_llvm_tool_options)
> -  file(GLOB sub-dirs "${CMAKE_CURRENT_SOURCE_DIR}/*")
> -  foreach(dir ${sub-dirs})
> -    if(IS_DIRECTORY "${dir}" AND EXISTS "${dir}/CMakeLists.txt")
> -      canonicalize_tool_name(${dir} name)
> -      option(LLVM_TOOL_${name}_BUILD
> -           "Whether to build ${name} as part of LLVM" On)
> -    endif()
> -  endforeach()
> -endfunction(create_llvm_tool_options)
> +macro(ignore_llvm_tool_subdirectory name)
> +  list(APPEND LLVM_IMPLICIT_PROJECT_IGNORE "${CMAKE_CURRENT_SOURCE_DIR}/${name}")
> +endmacro(ignore_llvm_tool_subdirectory)
> 
> -function(add_llvm_implicit_projects)
> +function(add_llvm_implicit_external_projects)
>   set(list_of_implicit_subdirs "")
>   file(GLOB sub-dirs "${CMAKE_CURRENT_SOURCE_DIR}/*")
>   foreach(dir ${sub-dirs})
> -    if(IS_DIRECTORY "${dir}" AND EXISTS "${dir}/CMakeLists.txt")
> -      canonicalize_tool_name(${dir} name)
> -      if (LLVM_TOOL_${name}_BUILD)
> +    if(IS_DIRECTORY "${dir}")
> +      list(FIND LLVM_IMPLICIT_PROJECT_IGNORE "${dir}" tool_subdir_ignore)
> +      if( tool_subdir_ignore EQUAL -1
> +          AND EXISTS "${dir}/CMakeLists.txt")
>         get_filename_component(fn "${dir}" NAME)
>         list(APPEND list_of_implicit_subdirs "${fn}")
>       endif()
> @@ -739,7 +727,7 @@ function(add_llvm_implicit_projects)
>   foreach(external_proj ${list_of_implicit_subdirs})
>     add_llvm_external_project("${external_proj}")
>   endforeach()
> -endfunction(add_llvm_implicit_projects)
> +endfunction(add_llvm_implicit_external_projects)
> 
> # Generic support for adding a unittest.
> function(add_unittest test_suite test_name)
> 
> Modified: llvm/trunk/tools/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/CMakeLists.txt?rev=241663&r1=241662&r2=241663&view=diff
> ==============================================================================
> --- llvm/trunk/tools/CMakeLists.txt (original)
> +++ llvm/trunk/tools/CMakeLists.txt Tue Jul  7 21:35:43 2015
> @@ -1,37 +1,85 @@
> -# This file will recurse into all subdirectories that contain CMakeLists.txt
> -# Setting variables that match the pattern LLVM_TOOL_{NAME}_BUILD to Off will
> -# prevent traversing into a directory.
> -#
> -# The only tools that need to be explicitly added are ones that have explicit
> -# ordering requirements.
> -
> -# Iterates all the subdirectories to create CMake options to enable/disable
> -# traversing each directory.
> -create_llvm_tool_options()
> +add_llvm_tool_subdirectory(llvm-config)
> 
> # Build polly before the tools: the tools link against polly when
> # LINK_POLLY_INTO_TOOLS is set.
> if(WITH_POLLY)
>   add_llvm_external_project(polly)
> +else(WITH_POLLY)
> +  list(APPEND LLVM_IMPLICIT_PROJECT_IGNORE "${LLVM_MAIN_SRC_DIR}/tools/polly")
> +endif(WITH_POLLY)
> +
> +if( LLVM_BUILD_LLVM_DYLIB )
> +  add_llvm_tool_subdirectory(llvm-shlib)
> else()
> -  set(LLVM_TOOL_POLLY_BUILD Off)
> +  ignore_llvm_tool_subdirectory(llvm-shlib)
> endif()
> 
> -if(NOT LLVM_BUILD_LLVM_DYLIB )
> -  set(LLVM_TOOL_LLVM_SHLIB_BUILD Off)
> -endif()
> +add_llvm_tool_subdirectory(opt)
> +add_llvm_tool_subdirectory(llvm-as)
> +add_llvm_tool_subdirectory(llvm-dis)
> +add_llvm_tool_subdirectory(llvm-mc)
> +
> +add_llvm_tool_subdirectory(llc)
> +add_llvm_tool_subdirectory(llvm-ar)
> +add_llvm_tool_subdirectory(llvm-nm)
> +add_llvm_tool_subdirectory(llvm-size)
> +
> +add_llvm_tool_subdirectory(llvm-cov)
> +add_llvm_tool_subdirectory(llvm-profdata)
> +add_llvm_tool_subdirectory(llvm-link)
> +add_llvm_tool_subdirectory(lli)
> +
> +add_llvm_tool_subdirectory(llvm-extract)
> +add_llvm_tool_subdirectory(llvm-diff)
> +add_llvm_tool_subdirectory(macho-dump)
> +add_llvm_tool_subdirectory(llvm-objdump)
> +add_llvm_tool_subdirectory(llvm-readobj)
> +add_llvm_tool_subdirectory(llvm-rtdyld)
> +add_llvm_tool_subdirectory(llvm-dwarfdump)
> +add_llvm_tool_subdirectory(dsymutil)
> +add_llvm_tool_subdirectory(llvm-cxxdump)
> +if( LLVM_USE_INTEL_JITEVENTS )
> +  add_llvm_tool_subdirectory(llvm-jitlistener)
> +else()
> +  ignore_llvm_tool_subdirectory(llvm-jitlistener)
> +endif( LLVM_USE_INTEL_JITEVENTS )
> 
> -if(NOT LLVM_USE_INTEL_JITEVENTS )
> -  set(LLVM_TOOL_LLVM_JITLISTENER_BUILD Off)
> -endif()
> +add_llvm_tool_subdirectory(bugpoint)
> +add_llvm_tool_subdirectory(bugpoint-passes)
> +add_llvm_tool_subdirectory(llvm-bcanalyzer)
> +add_llvm_tool_subdirectory(llvm-stress)
> +add_llvm_tool_subdirectory(llvm-mcmarkup)
> +
> +add_llvm_tool_subdirectory(verify-uselistorder)
> +
> +add_llvm_tool_subdirectory(llvm-symbolizer)
> +
> +add_llvm_tool_subdirectory(llvm-c-test)
> 
> -if(CYGWIN OR NOT LLVM_ENABLE_PIC)
> -  set(LLVM_TOOL_LTO_BUILD Off)
> -  set(LLVM_TOOL_LLVM_LTO_BUILD Off)
> +add_llvm_tool_subdirectory(obj2yaml)
> +add_llvm_tool_subdirectory(yaml2obj)
> +
> +add_llvm_tool_subdirectory(llvm-go)
> +
> +add_llvm_tool_subdirectory(llvm-pdbdump)
> +
> +if(NOT CYGWIN AND LLVM_ENABLE_PIC)
> +  add_llvm_tool_subdirectory(lto)
> +  add_llvm_tool_subdirectory(llvm-lto)
> +else()
> +  ignore_llvm_tool_subdirectory(lto)
> +  ignore_llvm_tool_subdirectory(llvm-lto)
> endif()
> 
> +add_llvm_tool_subdirectory(gold)
> +
> +add_llvm_external_project(clang)
> +add_llvm_external_project(llgo)
> +add_llvm_external_project(lld)
> +add_llvm_external_project(lldb)
> +
> # Automatically add remaining sub-directories containing a 'CMakeLists.txt'
> # file as external projects.
> -add_llvm_implicit_projects()
> +add_llvm_implicit_external_projects()
> 
> set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} PARENT_SCOPE)
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits





More information about the llvm-commits mailing list