[llvm] r361513 - [CMake] Copy C++ headers before configuring runtimes build
Chris Bieneman via llvm-commits
llvm-commits at lists.llvm.org
Fri May 24 09:20:33 PDT 2019
HI Mikael,
I see what is going on here. I hadn't anticipated anyone would build compiler-rt without libcxx since compiler-rt depends on libcxx headers. You may have build correctness issues without libcxx being present, but I have pushed r361646 which should resolve your configuration issue.
-Chris
> On May 24, 2019, at 1:14 AM, Mikael Holmén <mikael.holmen at ericsson.com> wrote:
>
> Hi,
>
> When I'm having runtimes/compiler-rt present I get the following with
> this patch (even when including the fix in r361535):
>
> CMake Error at
> /usr/local/share/cmake-3.4/Modules/ExternalProject.cmake:2097
> (get_property):
> get_property could not find TARGET runtime-libcxx-headers. Perhaps
> it has
> not yet been created.
> Call Stack (most recent call first):
> /usr/local/share/cmake-3.4/Modules/ExternalProject.cmake:2433
> (_ep_add_configure_command)
> cmake/modules/LLVMExternalProjectUtils.cmake:217 (ExternalProject_Add)
> runtimes/CMakeLists.txt:412 (llvm_ExternalProject_Add)
> runtimes/CMakeLists.txt:535 (runtime_default_target)
>
>
> CMake Error at
> /usr/local/share/cmake-3.4/Modules/ExternalProject.cmake:2099
> (get_property):
> get_property could not find TARGET runtime-libcxx-headers. Perhaps
> it has
> not yet been created.
> Call Stack (most recent call first):
> /usr/local/share/cmake-3.4/Modules/ExternalProject.cmake:2433
> (_ep_add_configure_command)
> cmake/modules/LLVMExternalProjectUtils.cmake:217 (ExternalProject_Add)
> runtimes/CMakeLists.txt:412 (llvm_ExternalProject_Add)
> runtimes/CMakeLists.txt:535 (runtime_default_target)
>
>
> CMake Error at
> /usr/local/share/cmake-3.4/Modules/ExternalProject.cmake:1169
> (get_property):
> get_property could not find TARGET runtime-libcxx-headers. Perhaps
> it has
> not yet been created.
> Call Stack (most recent call first):
> /usr/local/share/cmake-3.4/Modules/ExternalProject.cmake:1388
> (ExternalProject_Get_Property)
> /usr/local/share/cmake-3.4/Modules/ExternalProject.cmake:2101
> (_ep_get_step_stampfile)
> /usr/local/share/cmake-3.4/Modules/ExternalProject.cmake:2433
> (_ep_add_configure_command)
> cmake/modules/LLVMExternalProjectUtils.cmake:217 (ExternalProject_Add)
> runtimes/CMakeLists.txt:412 (llvm_ExternalProject_Add)
> runtimes/CMakeLists.txt:535 (runtime_default_target)
>
>
> CMake Error at
> /usr/local/share/cmake-3.4/Modules/ExternalProject.cmake:1171 (message):
> External project "runtime-libcxx-headers" has no stamp_dir
> Call Stack (most recent call first):
> /usr/local/share/cmake-3.4/Modules/ExternalProject.cmake:1388
> (ExternalProject_Get_Property)
> /usr/local/share/cmake-3.4/Modules/ExternalProject.cmake:2101
> (_ep_get_step_stampfile)
> /usr/local/share/cmake-3.4/Modules/ExternalProject.cmake:2433
> (_ep_add_configure_command)
> cmake/modules/LLVMExternalProjectUtils.cmake:217 (ExternalProject_Add)
> runtimes/CMakeLists.txt:412 (llvm_ExternalProject_Add)
> runtimes/CMakeLists.txt:535 (runtime_default_target)
>
>
> -- Configuring incomplete, errors occurred!
> See also
> "/data/repo/dev-master/build-all-builtins/CMakeFiles/CMakeOutput.log".
> See also
> "/data/repo/dev-master/build-all-builtins/CMakeFiles/CMakeError.log".
> FAILED: build.ninja
> /usr/local/bin/cmake -H/data/repo/dev-master
> -B/data/repo/dev-master/build-all-builtins
> ninja: error: rebuilding 'build.ninja': subcommand failed
>
>
> -----------
>
>
> I can't see that LLVM_EXTERNAL_LIBCXX_SOURCE_DIR is set anywhere, so
> does that mean runtime-libcxx-headers isn't set either, so that's why it
> fails since there is a dependency towards runtime-libcxx-headers anyway?
>
> If I remove runtime-libcxx-headers from
>
> llvm_ExternalProject_Add(runtimes
> ${CMAKE_CURRENT_SOURCE_DIR}
> DEPENDS ${ARG_DEPENDS} runtime-libcxx-headers
>
> then it compiles.
>
> Any idea?
>
> Regards,
> Mikael
>
> On 5/23/19 7:06 PM, Chris Bieneman via llvm-commits wrote:
>> Author: cbieneman
>> Date: Thu May 23 10:06:46 2019
>> New Revision: 361513
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=361513&view=rev
>> Log:
>> [CMake] Copy C++ headers before configuring runtimes build
>>
>> Summary: On some platforms C++ headers are packaged with the compiler not the sysroot. If you don't copy C++ headers into the build include directory during configuraiton of the outer build the C++ check during the runtime configuration may get inaccurate results.
>>
>> Reviewers: phosek, compnerd, smeenai, EricWF
>>
>> Reviewed By: compnerd
>>
>> Subscribers: EricWF, christof, libcxx-commits, mgorny, llvm-commits
>>
>> Tags: #llvm, #libc
>>
>> Differential Revision: https://reviews.llvm.org/D62155
>>
>> Modified:
>> llvm/trunk/runtimes/CMakeLists.txt
>>
>> Modified: llvm/trunk/runtimes/CMakeLists.txt
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/runtimes/CMakeLists.txt?rev=361513&r1=361512&r2=361513&view=diff
>> ==============================================================================
>> --- llvm/trunk/runtimes/CMakeLists.txt (original)
>> +++ llvm/trunk/runtimes/CMakeLists.txt Thu May 23 10:06:46 2019
>> @@ -4,8 +4,12 @@
>> # should be built with the LLVM toolchain from the build directory. This file is
>> # a first step to formalizing runtime build interfaces.
>>
>> -# In the current state this file only works with compiler-rt, other runtimes
>> -# will work as the runtime build interface standardizes.
>> +# Setting CMake minimum required version should be at the very top of the file
>> +# if this is the entry point.
>> +if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
>> + cmake_minimum_required(VERSION 3.4.3)
>> + project(Runtimes C CXX ASM)
>> +endif()
>>
>> # Find all subdirectories containing CMake projects
>> file(GLOB entries *)
>> @@ -205,6 +209,11 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_
>>
>> else() # if this is included from LLVM's CMake
>> include(LLVMExternalProjectUtils)
>> + if (LLVM_EXTERNAL_LIBCXX_SOURCE_DIR)
>> + set(LIBCXX_HEADER_DIR ${LLVM_INCLUDE_DIR}/c++/v1/)
>> + set(CXX_HEADER_TARGET runtime-libcxx-headers)
>> + add_subdirectory(${LLVM_EXTERNAL_LIBCXX_SOURCE_DIR}/include ${CXX_HEADER_TARGET})
>> + endif()
>>
>> if(NOT LLVM_BUILD_RUNTIMES)
>> set(EXTRA_ARGS EXCLUDE_FROM_ALL)
>> @@ -354,7 +363,7 @@ else() # if this is included from LLVM's
>>
>> llvm_ExternalProject_Add(runtimes
>> ${CMAKE_CURRENT_SOURCE_DIR}
>> - DEPENDS ${ARG_DEPENDS}
>> + DEPENDS ${ARG_DEPENDS} runtime-libcxx-headers
>> # Builtins were built separately above
>> CMAKE_ARGS -DCOMPILER_RT_BUILD_BUILTINS=Off
>> -DLLVM_INCLUDE_TESTS=${LLVM_INCLUDE_TESTS}
>> @@ -445,7 +454,7 @@ else() # if this is included from LLVM's
>>
>> llvm_ExternalProject_Add(runtimes-${name}
>> ${CMAKE_CURRENT_SOURCE_DIR}
>> - DEPENDS ${${name}_deps}
>> + DEPENDS ${${name}_deps} runtime-libcxx-headers
>> # Builtins were built separately above
>> CMAKE_ARGS -DCOMPILER_RT_BUILD_BUILTINS=Off
>> -DLLVM_INCLUDE_TESTS=${LLVM_INCLUDE_TESTS}
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
More information about the llvm-commits
mailing list