diff options
| -rw-r--r-- | compiler-rt/CMakeLists.txt | 34 | ||||
| -rw-r--r-- | compiler-rt/lib/CMakeLists.txt | 28 | ||||
| -rw-r--r-- | compiler-rt/lib/asan/CMakeLists.txt | 4 |
3 files changed, 38 insertions, 28 deletions
diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt index 082036002f9..845947c45f1 100644 --- a/compiler-rt/CMakeLists.txt +++ b/compiler-rt/CMakeLists.txt @@ -106,6 +106,40 @@ function(set_target_compile_flags target) set_property(TARGET ${target} PROPERTY COMPILE_FLAGS "${argstring}") endfunction() +# Compute the Clang version from the LLVM version. +# FIXME: We should be able to reuse CLANG_VERSION variable calculated +# in Clang cmake files, instead of copying the rules here. +string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION + ${PACKAGE_VERSION}) +# Setup the paths where compiler-rt runtimes and headers should be stored. +set(LIBCLANG_INSTALL_PATH lib${LLVM_LIBIR_SUFFIX}/clang/${CLANG_VERSION}) +string(TOLOWER ${CMAKE_SYSTEM_NAME} LIBCLANG_OS_DIR) + +# Install compiler-rt headers. +install(DIRECTORY include/ + DESTINATION ${LIBCLANG_INSTALL_PATH}/include + FILES_MATCHING + PATTERN "*.h" + PATTERN ".svn" EXCLUDE + ) + +# Call add_clang_compiler_rt_libraries to make sure that targets are built +# and installed in the directories where Clang driver expects to find them. +macro(add_clang_compiler_rt_libraries) + # Setup output directories so that clang in build tree works. + set_target_properties(${ARGN} PROPERTIES + ARCHIVE_OUTPUT_DIRECTORY + ${LLVM_BINARY_DIR}/lib/clang/${CLANG_VERSION}/lib/${LIBCLANG_OS_DIR} + LIBRARY_OUTPUT_DIRECTORY + ${LLVM_BINARY_DIR}/lib/clang/${CLANG_VERSION}/lib/${LIBCLANG_OS_DIR} + ) + # Add installation command. + install(TARGETS ${ARGN} + ARCHIVE DESTINATION ${LIBCLANG_INSTALL_PATH}/lib/${LIBCLANG_OS_DIR} + LIBRARY DESTINATION ${LIBCLANG_INSTALL_PATH}/lib/${LIBCLANG_OS_DIR} + ) +endmacro(add_clang_compiler_rt_libraries) + # Add the public header's directory to the includes for all of compiler-rt. include_directories(include) diff --git a/compiler-rt/lib/CMakeLists.txt b/compiler-rt/lib/CMakeLists.txt index 4961e2d0c20..1249aa00e7e 100644 --- a/compiler-rt/lib/CMakeLists.txt +++ b/compiler-rt/lib/CMakeLists.txt @@ -1,29 +1,3 @@ -# Compute the Clang version from the LLVM version. -# FIXME: We should be able to reuse CLANG_VERSION variable calculated -# in Clang cmake files, instead of copying the rules here. -string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION - ${PACKAGE_VERSION}) - -# Call add_clang_runtime_static_library(<target_library>) to make -# sure that static <target_library> is built in the directory -# where Clang driver expects to find it. -if (APPLE) - set(CLANG_RUNTIME_LIB_DIR - ${LLVM_BINARY_DIR}/lib/clang/${CLANG_VERSION}/lib/darwin) -elseif (UNIX) - # Assume Linux. - set(CLANG_RUNTIME_LIB_DIR - ${LLVM_BINARY_DIR}/lib/clang/${CLANG_VERSION}/lib/linux) -endif() -function(add_clang_runtime_static_library) - set_target_properties(${ARGN} PROPERTIES - ARCHIVE_OUTPUT_DIRECTORY ${CLANG_RUNTIME_LIB_DIR}) -endfunction() -function(add_clang_runtime_shared_library) - set_target_properties(${ARGN} PROPERTIES - LIBRARY_OUTPUT_DIRECTORY ${CLANG_RUNTIME_LIB_DIR}) -endfunction() - # First, add the subdirectories which contain feature-based runtime libraries # and several convenience helper libraries. add_subdirectory(asan) @@ -178,6 +152,7 @@ if(CAN_TARGET_X86_64) ${GENERIC_SOURCES} ) set_target_properties(clang_rt.x86_64 PROPERTIES COMPILE_FLAGS "-std=c99 ${TARGET_X86_64_CFLAGS}") + add_clang_compiler_rt_libraries(clang_rt.x86_64) endif() if(CAN_TARGET_I386) add_library(clang_rt.i386 STATIC @@ -198,4 +173,5 @@ if(CAN_TARGET_I386) ${GENERIC_SOURCES} ) set_target_properties(clang_rt.i386 PROPERTIES COMPILE_FLAGS "-std=c99 ${TARGET_I386_CFLAGS}") + add_clang_compiler_rt_libraries(clang_rt.i386) endif() diff --git a/compiler-rt/lib/asan/CMakeLists.txt b/compiler-rt/lib/asan/CMakeLists.txt index 82b3e7dbd15..235087f831d 100644 --- a/compiler-rt/lib/asan/CMakeLists.txt +++ b/compiler-rt/lib/asan/CMakeLists.txt @@ -93,7 +93,7 @@ endif() set_property(TARGET ${ASAN_RUNTIME_LIBRARIES} APPEND PROPERTY COMPILE_DEFINITIONS ${ASAN_COMMON_DEFINITIONS}) -add_clang_runtime_static_library(${ASAN_RUNTIME_LIBRARIES}) +add_clang_compiler_rt_libraries(${ASAN_RUNTIME_LIBRARIES}) set(ASAN_DYNAMIC_RUNTIME_LIBRARIES) if(APPLE) @@ -111,7 +111,7 @@ if(APPLE) LINK_FLAGS "-framework Foundation") list(APPEND ASAN_DYNAMIC_RUNTIME_LIBRARIES clang_rt.asan_osx_dynamic) endif() -add_clang_runtime_shared_library(${ASAN_DYNAMIC_RUNTIME_LIBRARIES}) +add_clang_compiler_rt_libraries(${ASAN_DYNAMIC_RUNTIME_LIBRARIES}) if(LLVM_INCLUDE_TESTS) |

