[compiler-rt] r217523 - Make compiler-rt tests work with relocatable SDKs on OS X
Alexander Potapenko
glider at google.com
Thu Sep 11 02:18:59 PDT 2014
Apparently this broke `make check-asan` on Darwin.
I'll check whether the problem can be fixed easily or revert otherwise.
On Wed, Sep 10, 2014 at 9:23 PM, Kuba Brecka <kuba.brecka at gmail.com> wrote:
> Author: kuba.brecka
> Date: Wed Sep 10 12:23:58 2014
> New Revision: 217523
>
> URL: http://llvm.org/viewvc/llvm-project?rev=217523&view=rev
> Log:
> Make compiler-rt tests work with relocatable SDKs on OS X
>
> Reviewed at http://reviews.llvm.org/D4047
>
>
> Modified:
> compiler-rt/trunk/cmake/Modules/CompilerRTCompile.cmake
> compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt
>
> Modified: compiler-rt/trunk/cmake/Modules/CompilerRTCompile.cmake
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/cmake/Modules/CompilerRTCompile.cmake?rev=217523&r1=217522&r2=217523&view=diff
> ==============================================================================
> --- compiler-rt/trunk/cmake/Modules/CompilerRTCompile.cmake (original)
> +++ compiler-rt/trunk/cmake/Modules/CompilerRTCompile.cmake Wed Sep 10 12:23:58 2014
> @@ -11,6 +11,9 @@ macro(clang_compile object_file source)
> if(NOT COMPILER_RT_STANDALONE_BUILD)
> list(APPEND SOURCE_DEPS clang)
> endif()
> + if (TARGET CompilerRTUnitTestCheckCxx)
> + list(APPEND SOURCE_DEPS CompilerRTUnitTestCheckCxx)
> + endif()
> string(REGEX MATCH "[.](cc|cpp)$" is_cxx ${source_rpath})
> if(is_cxx)
> string(REPLACE " " ";" global_flags "${CMAKE_CXX_FLAGS}")
> @@ -36,3 +39,41 @@ macro(clang_compile object_file source)
> MAIN_DEPENDENCY ${source}
> DEPENDS ${SOURCE_DEPS})
> endmacro()
> +
> +# On Darwin, there are no system-wide C++ headers and the just-built clang is
> +# therefore not able to compile C++ files unless they are copied/symlinked into
> +# ${LLVM_BINARY_DIR}/include/c++
> +# The just-built clang is used to build compiler-rt unit tests. Let's detect
> +# this before we try to build the tests and print out a suggestion how to fix
> +# it.
> +# On other platforms, this is currently not an issue.
> +macro(clang_compiler_add_cxx_check)
> + if (APPLE)
> + set(CMD
> + "echo '#include <iostream>' | ${COMPILER_RT_TEST_COMPILER} -E -x c++ - > /dev/null"
> + "if [ $? != 0 ] "
> + " then echo"
> + " echo 'Your just-built clang cannot find C++ headers, which are needed to build and run compiler-rt tests.'"
> + " echo 'You should copy or symlink your system C++ headers into ${LLVM_BINARY_DIR}/include/c++'"
> + " if [ -d $(dirname $(dirname $(xcrun -f clang)))/include/c++ ]"
> + " then echo 'e.g. with:'"
> + " echo ' cp -r' $(dirname $(dirname $(xcrun -f clang)))/include/c++ '${LLVM_BINARY_DIR}/include/'"
> + " elif [ -d $(dirname $(dirname $(xcrun -f clang)))/lib/c++ ]"
> + " then echo 'e.g. with:'"
> + " echo ' cp -r' $(dirname $(dirname $(xcrun -f clang)))/lib/c++ '${LLVM_BINARY_DIR}/include/'"
> + " fi"
> + " echo 'This can also be fixed by checking out the libcxx project from llvm.org and installing the headers'"
> + " echo 'into your build directory:'"
> + " echo ' cd ${LLVM_SOURCE_DIR}/projects && svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx'"
> + " echo ' cd ${LLVM_BINARY_DIR} && make -C ${LLVM_SOURCE_DIR}/projects/libcxx installheaders HEADER_DIR=${LLVM_BINARY_DIR}/include'"
> + " echo"
> + " false"
> + "fi"
> + )
> + add_custom_target(CompilerRTUnitTestCheckCxx
> + COMMAND bash -c "${CMD}"
> + COMMENT "Checking that just-built clang can find C++ headers..."
> + DEPENDS clang
> + VERBATIM)
> + endif()
> +endmacro()
>
> Modified: compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt?rev=217523&r1=217522&r2=217523&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt (original)
> +++ compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt Wed Sep 10 12:23:58 2014
> @@ -1,5 +1,7 @@
> include(CompilerRTCompile)
>
> +clang_compiler_add_cxx_check()
> +
> set(SANITIZER_UNITTESTS
> sanitizer_allocator_test.cc
> sanitizer_atomic_test.cc
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
--
Alexander Potapenko
Software Engineer
Google Moscow
More information about the llvm-commits
mailing list