Update prebuilt Clang to r365631c1 from Android.
The version we had was segfaulting.
Bug: 132420445
Change-Id: Icb45a6fe0b4e2166f7895e669df1157cec9fb4e0
diff --git a/linux-x64/clang/lib64/cmake/llvm/AddLLVM.cmake b/linux-x64/clang/lib64/cmake/llvm/AddLLVM.cmake
index 95a88af..0df7031 100644
--- a/linux-x64/clang/lib64/cmake/llvm/AddLLVM.cmake
+++ b/linux-x64/clang/lib64/cmake/llvm/AddLLVM.cmake
@@ -21,6 +21,10 @@
else()
if(LLVM_COMPILER_IS_GCC_COMPATIBLE)
list(APPEND LLVM_COMPILE_FLAGS "-fno-exceptions")
+ if(NOT LLVM_ENABLE_UNWIND_TABLES)
+ list(APPEND LLVM_COMPILE_FLAGS "-fno-unwind-tables")
+ list(APPEND LLVM_COMPILE_FLAGS "-fno-asynchronous-unwind-tables")
+ endif()
elseif(MSVC)
list(APPEND LLVM_COMPILE_DEFINITIONS _HAS_EXCEPTIONS=0)
list(APPEND LLVM_COMPILE_FLAGS "/EHs-c-")
@@ -221,7 +225,8 @@
elseif(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
set_property(TARGET ${target_name} APPEND_STRING PROPERTY
LINK_FLAGS " -Wl,-z -Wl,discard-unused=sections")
- elseif(NOT WIN32 AND NOT LLVM_LINKER_IS_GOLD AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
+ elseif(NOT WIN32 AND NOT LLVM_LINKER_IS_GOLD AND
+ NOT ${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD|AIX")
# Object files are compiled with -ffunction-data-sections.
# Versions of bfd ld < 2.23.1 have a bug in --gc-sections that breaks
# tools that use plugins. Always pass --gc-sections once we require
@@ -229,6 +234,11 @@
set_property(TARGET ${target_name} APPEND_STRING PROPERTY
LINK_FLAGS " -Wl,--gc-sections")
endif()
+ else() #LLVM_NO_DEAD_STRIP
+ if(${CMAKE_SYSTEM_NAME} MATCHES "AIX")
+ set_property(TARGET ${target_name} APPEND_STRING PROPERTY
+ LINK_FLAGS " -Wl,-bnogc")
+ endif()
endif()
endif()
endfunction(add_link_opts)
@@ -380,7 +390,7 @@
function(llvm_add_library name)
cmake_parse_arguments(ARG
"MODULE;SHARED;STATIC;OBJECT;DISABLE_LLVM_LINK_LLVM_DYLIB;SONAME;NO_INSTALL_RPATH"
- "OUTPUT_NAME;PLUGIN_TOOL;ENTITLEMENTS"
+ "OUTPUT_NAME;PLUGIN_TOOL;ENTITLEMENTS;BUNDLE_PATH"
"ADDITIONAL_HEADERS;DEPENDS;LINK_COMPONENTS;LINK_LIBS;OBJLIBS"
${ARGN})
list(APPEND LLVM_COMMON_DEPENDS ${ARG_DEPENDS})
@@ -423,7 +433,12 @@
${ALL_FILES}
)
llvm_update_compile_flags(${obj_name})
- set(ALL_FILES "$<TARGET_OBJECTS:${obj_name}>")
+ if(CMAKE_GENERATOR STREQUAL "Xcode")
+ set(DUMMY_FILE ${CMAKE_CURRENT_BINARY_DIR}/Dummy.c)
+ file(WRITE ${DUMMY_FILE} "// This file intentionally empty\n")
+ set_property(SOURCE ${DUMMY_FILE} APPEND_STRING PROPERTY COMPILE_FLAGS "-Wno-empty-translation-unit")
+ endif()
+ set(ALL_FILES "$<TARGET_OBJECTS:${obj_name}>" ${DUMMY_FILE})
# Do add_dependencies(obj) later due to CMake issue 14747.
list(APPEND objlibs ${obj_name})
@@ -584,7 +599,19 @@
if(ARG_SHARED OR ARG_MODULE)
llvm_externalize_debuginfo(${name})
- llvm_codesign(${name} ENTITLEMENTS ${ARG_ENTITLEMENTS})
+ llvm_codesign(${name} ENTITLEMENTS ${ARG_ENTITLEMENTS} BUNDLE_PATH ${ARG_BUNDLE_PATH})
+ endif()
+ # clang and newer versions of ninja use high-resolutions timestamps,
+ # but older versions of libtool on Darwin don't, so the archive will
+ # often get an older timestamp than the last object that was added
+ # or updated. To fix this, we add a custom command to touch archive
+ # after it's been built so that ninja won't rebuild it unnecessarily
+ # the next time it's run.
+ if(ARG_STATIC AND LLVM_TOUCH_STATIC_LIBRARIES)
+ add_custom_command(TARGET ${name}
+ POST_BUILD
+ COMMAND touch ${LLVM_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${name}${CMAKE_STATIC_LIBRARY_SUFFIX}
+ )
endif()
endfunction()
@@ -597,21 +624,35 @@
set(prefix_option -DCMAKE_INSTALL_PREFIX="${ARG_PREFIX}")
endif()
+ set(file_dependencies)
+ set(target_dependencies)
+ foreach(dependency ${ARG_DEPENDS})
+ if(TARGET ${dependency})
+ list(APPEND target_dependencies ${dependency})
+ else()
+ list(APPEND file_dependencies ${dependency})
+ endif()
+ endforeach()
+
add_custom_target(${target}
- DEPENDS ${ARG_DEPENDS}
+ DEPENDS ${file_dependencies}
COMMAND "${CMAKE_COMMAND}"
${component_option}
${prefix_option}
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
USES_TERMINAL)
add_custom_target(${target}-stripped
- DEPENDS ${ARG_DEPENDS}
+ DEPENDS ${file_dependencies}
COMMAND "${CMAKE_COMMAND}"
${component_option}
${prefix_option}
-DCMAKE_INSTALL_DO_STRIP=1
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
USES_TERMINAL)
+ if(target_dependencies)
+ add_dependencies(${target} ${target_dependencies})
+ add_dependencies(${target}-stripped ${target_dependencies})
+ endif()
endfunction()
macro(add_llvm_library name)
@@ -633,6 +674,7 @@
# config file.
if (NOT ARG_BUILDTREE_ONLY AND NOT ARG_MODULE)
set_property( GLOBAL APPEND PROPERTY LLVM_LIBS ${name} )
+ set(in_llvm_libs YES)
endif()
if (ARG_MODULE AND NOT TARGET ${name})
@@ -643,26 +685,15 @@
elseif(ARG_BUILDTREE_ONLY)
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS_BUILDTREE_ONLY ${name})
else()
- if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "LTO" OR
- ${name} STREQUAL "OptRemarks" OR
+ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR
+ ${name} STREQUAL "LTO" OR
+ ${name} STREQUAL "LLVM-C" OR
+ ${name} STREQUAL "Remarks" OR
(LLVM_LINK_LLVM_DYLIB AND ${name} STREQUAL "LLVM"))
- set(install_dir lib${LLVM_LIBDIR_SUFFIX})
- if(ARG_MODULE OR ARG_SHARED OR BUILD_SHARED_LIBS)
- if(WIN32 OR CYGWIN OR MINGW)
- set(install_type RUNTIME)
- set(install_dir bin)
- else()
- set(install_type LIBRARY)
- endif()
- else()
- set(install_type ARCHIVE)
- endif()
- if (ARG_MODULE)
- set(install_type LIBRARY)
- endif()
-
+ set(export_to_llvmexports)
if(${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
+ (in_llvm_libs AND "llvm-libraries" IN_LIST LLVM_DISTRIBUTION_COMPONENTS) OR
NOT LLVM_DISTRIBUTION_COMPONENTS)
set(export_to_llvmexports EXPORT LLVMExports)
set_property(GLOBAL PROPERTY LLVM_HAS_EXPORTS True)
@@ -670,8 +701,9 @@
install(TARGETS ${name}
${export_to_llvmexports}
- ${install_type} DESTINATION ${install_dir}
- COMPONENT ${name})
+ LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
+ ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
+ RUNTIME DESTINATION bin COMPONENT ${name})
if (NOT LLVM_ENABLE_IDE)
add_llvm_install_targets(install-${name}
@@ -691,7 +723,7 @@
macro(add_llvm_executable name)
cmake_parse_arguments(ARG
"DISABLE_LLVM_LINK_LLVM_DYLIB;IGNORE_EXTERNALIZE_DEBUGINFO;NO_INSTALL_RPATH"
- "ENTITLEMENTS"
+ "ENTITLEMENTS;BUNDLE_PATH"
"DEPENDS"
${ARGN})
@@ -773,7 +805,7 @@
target_link_libraries(${name} PRIVATE ${LLVM_PTHREAD_LIB})
endif()
- llvm_codesign(${name} ENTITLEMENTS ${ARG_ENTITLEMENTS})
+ llvm_codesign(${name} ENTITLEMENTS ${ARG_ENTITLEMENTS} BUNDLE_PATH ${ARG_BUNDLE_PATH})
endmacro(add_llvm_executable name)
function(export_executable_symbols target)
@@ -853,8 +885,12 @@
llvm-ar
llvm-ranlib
llvm-lib
+ llvm-nm
+ llvm-objcopy
llvm-objdump
llvm-rc
+ llvm-profdata
+ llvm-symbolizer
)
endif()
@@ -866,6 +902,7 @@
if ( ${name} IN_LIST LLVM_TOOLCHAIN_TOOLS OR NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
if( LLVM_BUILD_TOOLS )
+ set(export_to_llvmexports)
if(${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
NOT LLVM_DISTRIBUTION_COMPONENTS)
set(export_to_llvmexports EXPORT LLVMExports)
@@ -913,6 +950,7 @@
set_target_properties(${name} PROPERTIES FOLDER "Utils")
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
if (LLVM_INSTALL_UTILS AND LLVM_BUILD_UTILS)
+ set(export_to_llvmexports)
if (${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
NOT LLVM_DISTRIBUTION_COMPONENTS)
set(export_to_llvmexports EXPORT LLVMExports)
@@ -1303,7 +1341,7 @@
set(${base_dir} ${LIT_BASE_DIR} PARENT_SCOPE)
return()
else()
- message(WARN "LLVM_EXTERNAL_LIT set to ${LLVM_EXTERNAL_LIT}, but the path does not exist.")
+ message(WARNING "LLVM_EXTERNAL_LIT set to ${LLVM_EXTERNAL_LIT}, but the path does not exist.")
endif()
endif()
endif()
@@ -1593,14 +1631,21 @@
endif()
endif()
- if(LLVM_EXTERNALIZE_DEBUGINFO_OUTPUT_DIR)
- if(APPLE)
- set(output_name "$<TARGET_FILE_NAME:${name}>.dSYM")
- set(output_path "-o=${LLVM_EXTERNALIZE_DEBUGINFO_OUTPUT_DIR}/${output_name}")
- endif()
- endif()
-
if(APPLE)
+ if(LLVM_EXTERNALIZE_DEBUGINFO_EXTENSION)
+ set(file_ext ${LLVM_EXTERNALIZE_DEBUGINFO_EXTENSION})
+ else()
+ set(file_ext dSYM)
+ endif()
+
+ set(output_name "$<TARGET_FILE_NAME:${name}>.${file_ext}")
+
+ if(LLVM_EXTERNALIZE_DEBUGINFO_OUTPUT_DIR)
+ set(output_path "-o=${LLVM_EXTERNALIZE_DEBUGINFO_OUTPUT_DIR}/${output_name}")
+ else()
+ set(output_path "-o=${output_name}")
+ endif()
+
if(CMAKE_CXX_FLAGS MATCHES "-flto"
OR CMAKE_CXX_FLAGS_${uppercase_CMAKE_BUILD_TYPE} MATCHES "-flto")
@@ -1624,9 +1669,9 @@
endif()
endfunction()
-# Usage: llvm_codesign(name [ENTITLEMENTS file])
+# Usage: llvm_codesign(name [FORCE] [ENTITLEMENTS file] [BUNDLE_PATH path])
function(llvm_codesign name)
- cmake_parse_arguments(ARG "" "ENTITLEMENTS" "" ${ARGN})
+ cmake_parse_arguments(ARG "FORCE" "ENTITLEMENTS;BUNDLE_PATH" "" ${ARGN})
if(NOT LLVM_CODESIGNING_IDENTITY)
return()
@@ -1656,12 +1701,20 @@
set(pass_entitlements --entitlements ${ARG_ENTITLEMENTS})
endif()
+ if (NOT ARG_BUNDLE_PATH)
+ set(ARG_BUNDLE_PATH $<TARGET_FILE:${name}>)
+ endif()
+
+ if(ARG_FORCE)
+ set(force_flag "-f")
+ endif()
+
add_custom_command(
TARGET ${name} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E
env CODESIGN_ALLOCATE=${CMAKE_CODESIGN_ALLOCATE}
${CMAKE_CODESIGN} -s ${LLVM_CODESIGNING_IDENTITY}
- ${pass_entitlements} $<TARGET_FILE:${name}>
+ ${pass_entitlements} ${force_flag} ${ARG_BUNDLE_PATH}
)
endif()
endfunction()
@@ -1679,7 +1732,7 @@
if (APPLE)
set(_install_name_dir INSTALL_NAME_DIR "@rpath")
- set(_install_rpath "@loader_path/../lib" ${extra_libdir})
+ set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
elseif(UNIX)
set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")
@@ -1718,6 +1771,9 @@
endfunction()
function(find_first_existing_vc_file path out_var)
+ if(NOT EXISTS "${path}")
+ return()
+ endif()
if(EXISTS "${path}/.svn")
set(svn_files
"${path}/.svn/wc.db" # SVN 1.7