[llvm] r320413 - [cmake] Pass TARGETS_TO_BUILD through to host tools build
Don Hinton via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 11 12:05:25 PST 2017
Thanks for fixing this -- I wasn't aware of $<SEMICOLON>.
On Mon, Dec 11, 2017 at 11:53 AM, Justin Bogner via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: bogner
> Date: Mon Dec 11 11:53:23 2017
> New Revision: 320413
>
> URL: http://llvm.org/viewvc/llvm-project?rev=320413&view=rev
> Log:
> [cmake] Pass TARGETS_TO_BUILD through to host tools build
>
> In r319620, the host build was changed to use Native for
> TARGETS_TO_BUILD because passing semicolons through add_custom_command
> is surprisingly difficult. However, Native really doesn't make any
> sense here, and it only works because we don't technically do any
> codegen in the host tools so pretty well anything will "work".
>
> The problem here is that passing something other than the correct
> value is very fragile - as evidence note how the llvm-config in the
> host tools acts differently than the target one now, and misreports
> the targets to build. Similarly, if there is any logic conditional on
> the targets in tablegen (now or in the future), it will do the wrong
> thing.
>
> To fix this, we need to escape the semicolons in the targets string
> and pass it through to the child cmake invocation.
>
> Modified:
> llvm/trunk/cmake/modules/CrossCompile.cmake
>
> Modified: llvm/trunk/cmake/modules/CrossCompile.cmake
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/
> modules/CrossCompile.cmake?rev=320413&r1=320412&r2=320413&view=diff
> ============================================================
> ==================
> --- llvm/trunk/cmake/modules/CrossCompile.cmake (original)
> +++ llvm/trunk/cmake/modules/CrossCompile.cmake Mon Dec 11 11:53:23 2017
> @@ -36,11 +36,16 @@ function(llvm_create_cross_target_intern
> add_custom_target(CREATE_LLVM_${target_name}
> DEPENDS ${LLVM_${target_name}_BUILD})
>
> + # Escape semicolons in the targets list so that cmake doesn't expand
> + # them to spaces.
> + string(REPLACE ";" "$<SEMICOLON>" targets_to_build_arg
> + "${LLVM_TARGETS_TO_BUILD}")
> +
> add_custom_command(OUTPUT ${LLVM_${target_name}_BUILD}/CMakeCache.txt
> COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}"
> ${CROSS_TOOLCHAIN_FLAGS_${target_name}} ${CMAKE_SOURCE_DIR}
> -DLLVM_TARGET_IS_CROSSCOMPILE_HOST=TRUE
> - -DLLVM_TARGETS_TO_BUILD=Native
> + -DLLVM_TARGETS_TO_BUILD="${targets_to_build_arg}"
> ${build_type_flags} ${linker_flag} ${external_clang_dir}
> WORKING_DIRECTORY ${LLVM_${target_name}_BUILD}
> DEPENDS CREATE_LLVM_${target_name}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171211/ee700b23/attachment.html>
More information about the llvm-commits
mailing list