[llvm] r268048 - cmake: Set LINK_POLLY_INTO_TOOLS to ON (v2)

Justin Bogner via llvm-commits llvm-commits at lists.llvm.org
Sun May 1 13:02:39 PDT 2016


Tobias Grosser via llvm-commits <llvm-commits at lists.llvm.org> writes:
> Author: grosser
> Date: Fri Apr 29 10:07:22 2016
> New Revision: 268048
>
> URL: http://llvm.org/viewvc/llvm-project?rev=268048&view=rev
> Log:
> cmake: Set LINK_POLLY_INTO_TOOLS to ON (v2)
>
> This is the second try. This time we disable this feature if no Polly checkout
> is available. For this to work we need to check if tools/polly is present
> early enough that our decision is known before cmake generates Config/config.h.
>
> With Polly checked into LLVM it was since a long time possible to compile
> clang/opt/bugpoint with Polly support directly linked in, instead of only
> providing Polly as a separate loadable module. This commit switches the
> default from providing Polly as a module to linking Polly into tools, such
> that it becomes unnecessary to load the Polly module when playing with Polly.
> Such configuration has shown a lot more convenient for day-to-day Polly use.
>
> This change does not impact the default behavior of any tool, if Polly is not
> explicitly enabled when calling clang/opt/bugpoint Polly does not affect
> compilation.
>
> This change also does not impact normal LLVM/clang checkouts that do not
> contain Polly.

I'm not totally sure that this works correctly. I'm seeing some weird
behaviour in clean builds, at the very least. It seems like this
*sometimes* fails and tries to link polly into bugpoint even if you
don't have it checked out, but I'm having trouble reproducing so I might
be confused.

> Reviewers: jdoerfert, Meinersbur
>
> Subscribers: pollydev, llvm-commits
>
> Differential Revision: http://reviews.llvm.org/D19711
>
> Modified:
>     llvm/trunk/CMakeLists.txt
>     llvm/trunk/tools/CMakeLists.txt
>
> Modified: llvm/trunk/CMakeLists.txt
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/CMakeLists.txt?rev=268048&r1=268047&r2=268048&view=diff
> ==============================================================================
> --- llvm/trunk/CMakeLists.txt (original)
> +++ llvm/trunk/CMakeLists.txt Fri Apr 29 10:07:22 2016
> @@ -342,7 +342,7 @@ option(LLVM_USE_SPLIT_DWARF
>    "Use -gsplit-dwarf when compiling llvm." OFF)
>  
>  option(WITH_POLLY "Build LLVM with Polly" ON)
> -option(LINK_POLLY_INTO_TOOLS "Static link Polly into tools" OFF)
> +option(LINK_POLLY_INTO_TOOLS "Static link Polly into tools" ON)
>  
>  # Define an option controlling whether we should build for 32-bit on 64-bit
>  # platforms, where supported.
> @@ -393,6 +393,16 @@ option (LLVM_ENABLE_SPHINX "Use Sphinx t
>  option (LLVM_BUILD_EXTERNAL_COMPILER_RT
>    "Build compiler-rt as an external project." OFF)
>  
> +if(WITH_POLLY)
> +  if(NOT EXISTS ${LLVM_MAIN_SRC_DIR}/tools/polly/CMakeLists.txt)
> +    set(WITH_POLLY OFF)
> +  endif()
> +endif(WITH_POLLY)
> +
> +if (NOT WITH_POLLY)
> + set(LINK_POLLY_INTO_TOOLS OFF)

Is this usage of set() correct? IIUC it creates a new non-cached
variable that happens to have the same name as the option above. At the
very least, I see both WITH_POLLY and LINK_POLLY_INTO_TOOLS set to on in
my CMakeCache after configuring with this, despite not having polly
checked out.

I don't really know how option() works compared to set(... CACHED) though.

> +endif (NOT WITH_POLLY)
> +
>  # You can configure which libraries from LLVM you want to include in the
>  # shared library by setting LLVM_DYLIB_COMPONENTS to a semi-colon delimited
>  # list of LLVM components. All component names handled by llvm-config are valid.
> @@ -702,12 +712,6 @@ endforeach()
>  
>  add_subdirectory(projects)
>  
> -if(WITH_POLLY)
> -  if(NOT EXISTS ${LLVM_MAIN_SRC_DIR}/tools/polly/CMakeLists.txt)
> -    set(WITH_POLLY OFF)
> -  endif()
> -endif(WITH_POLLY)
> -
>  if( LLVM_INCLUDE_TOOLS )
>    add_subdirectory(tools)
>  endif()
>
> Modified: llvm/trunk/tools/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/CMakeLists.txt?rev=268048&r1=268047&r2=268048&view=diff
> ==============================================================================
> --- llvm/trunk/tools/CMakeLists.txt (original)
> +++ llvm/trunk/tools/CMakeLists.txt Fri Apr 29 10:07:22 2016
> @@ -16,6 +16,10 @@ if(WITH_POLLY)
>  else()
>    set(LLVM_TOOL_POLLY_BUILD Off)
>  endif()
> +if(NOT LLVM_TOOL_POLL_BUILD)

typo?

> +  MESSAGE(No polly)

This should probably be message(STATUS ...), no?

> +endif()
> +
>  
>  if(NOT LLVM_BUILD_LLVM_DYLIB )
>    set(LLVM_TOOL_LLVM_SHLIB_BUILD Off)
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list