diff options
author | Petr Hosek <phosek@chromium.org> | 2018-06-06 22:10:12 +0000 |
---|---|---|
committer | Petr Hosek <phosek@chromium.org> | 2018-06-06 22:10:12 +0000 |
commit | 3cf6db2d561359936af097dc46b946a637f455d6 (patch) | |
tree | 01c809d2c6195a5ee29e91895f53b3eeca3b3c8b | |
parent | 72fd23c9c598217eae0cf7419091914fc432c6b7 (diff) | |
download | bcm5719-llvm-3cf6db2d561359936af097dc46b946a637f455d6.tar.gz bcm5719-llvm-3cf6db2d561359936af097dc46b946a637f455d6.zip |
[CMake] Passthrough additional flags to custom libcxx CMake build
This is needed when we're cross-compiling compiler-rt.
Differential Revision: https://reviews.llvm.org/D47834
llvm-svn: 334139
-rw-r--r-- | compiler-rt/cmake/Modules/AddCompilerRT.cmake | 38 | ||||
-rw-r--r-- | compiler-rt/lib/fuzzer/CMakeLists.txt | 1 |
2 files changed, 28 insertions, 11 deletions
diff --git a/compiler-rt/cmake/Modules/AddCompilerRT.cmake b/compiler-rt/cmake/Modules/AddCompilerRT.cmake index 2383670a9d9..f1f955cf90d 100644 --- a/compiler-rt/cmake/Modules/AddCompilerRT.cmake +++ b/compiler-rt/cmake/Modules/AddCompilerRT.cmake @@ -474,11 +474,6 @@ macro(add_custom_libcxx name prefix) endif() cmake_parse_arguments(LIBCXX "USE_TOOLCHAIN" "" "DEPS;CFLAGS;CMAKE_ARGS" ${ARGN}) - foreach(flag ${LIBCXX_CFLAGS}) - set(flagstr "${flagstr} ${flag}") - endforeach() - set(LIBCXX_C_FLAGS ${flagstr}) - set(LIBCXX_CXX_FLAGS ${flagstr}) if(LIBCXX_USE_TOOLCHAIN) set(compiler_args -DCMAKE_C_COMPILER=${COMPILER_RT_TEST_COMPILER} @@ -514,9 +509,32 @@ macro(add_custom_libcxx name prefix) add_custom_target(${name}-clobber DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${name}-clobber-stamp) - if(CMAKE_SYSROOT) - set(sysroot_arg -DCMAKE_SYSROOT=${CMAKE_SYSROOT}) - endif() + set(PASSTHROUGH_VARIABLES + CMAKE_C_COMPILER_TARGET + CMAKE_CXX_COMPILER_TARGET + CMAKE_SHARED_LINKER_FLAGS + CMAKE_MODULE_LINKER_FLAGS + CMAKE_EXE_LINKER_FLAGS + CMAKE_INSTALL_PREFIX + CMAKE_MAKE_PROGRAM + CMAKE_LINKER + CMAKE_AR + CMAKE_RANLIB + CMAKE_NM + CMAKE_OBJCOPY + CMAKE_OBJDUMP + CMAKE_STRIP + CMAKE_SYSROOT + CMAKE_SYSTEM_NAME) + foreach(variable ${PASSTHROUGH_VARIABLES}) + if(${variable}) + list(APPEND CMAKE_PASSTHROUGH_VARIABLES -D${variable}=${${variable}}) + endif() + endforeach() + + string(REPLACE ";" " " FLAGS_STRING "${LIBCXX_CFLAGS}") + set(LIBCXX_C_FLAGS "${CMAKE_C_FLAGS} ${FLAGS_STRING}") + set(LIBCXX_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAGS_STRING}") ExternalProject_Add(${name} DEPENDS ${name}-clobber ${LIBCXX_DEPS} @@ -524,13 +542,11 @@ macro(add_custom_libcxx name prefix) SOURCE_DIR ${COMPILER_RT_LIBCXX_PATH} STAMP_DIR ${STAMP_DIR} BINARY_DIR ${BINARY_DIR} - CMAKE_ARGS -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} + CMAKE_ARGS ${CMAKE_PASSTHROUGH_VARIABLES} ${compiler_args} - ${sysroot_arg} -DCMAKE_C_FLAGS=${LIBCXX_C_FLAGS} -DCMAKE_CXX_FLAGS=${LIBCXX_CXX_FLAGS} -DCMAKE_BUILD_TYPE=Release - -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DLLVM_PATH=${LLVM_MAIN_SRC_DIR} -DLLVM_BINARY_DIR=${prefix} -DLLVM_LIBRARY_OUTPUT_INTDIR=${prefix}/lib diff --git a/compiler-rt/lib/fuzzer/CMakeLists.txt b/compiler-rt/lib/fuzzer/CMakeLists.txt index 7ec0dd551d0..2183dce4797 100644 --- a/compiler-rt/lib/fuzzer/CMakeLists.txt +++ b/compiler-rt/lib/fuzzer/CMakeLists.txt @@ -105,6 +105,7 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" AND COMPILER_RT_LIBCXX_PATH) -fvisibility=hidden CMAKE_ARGS -DCMAKE_CXX_COMPILER_WORKS=ON -DLIBCXX_ENABLE_EXCEPTIONS=OFF + -DLIBCXX_ENABLE_SHARED=OFF -DLIBCXX_CXX_ABI=none) target_compile_options(RTfuzzer.${arch} PRIVATE -isystem ${LIBCXX_${arch}_PREFIX}/include/c++/v1) add_dependencies(RTfuzzer.${arch} libcxx_fuzzer_${arch}-build) |