|  | include(CheckLibraryExists) | 
|  | include(GNUInstallDirs) | 
|  | include(ExtendPath) | 
|  |  | 
|  | string(REPLACE "-Wl,-z,defs" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}") | 
|  |  | 
|  | add_custom_target(gcc_s_ver ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/gcc_s.ver") | 
|  | set(LLVM_LIBGCC_GCC_S_VER "${CMAKE_CURRENT_BINARY_DIR}/gcc_s.ver") | 
|  |  | 
|  | add_custom_target(gcc_s.ver ALL | 
|  | DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/gcc_s.ver" | 
|  | COMMAND | 
|  | "${CMAKE_C_COMPILER}" | 
|  | "-E" | 
|  | "-xc" "${CMAKE_CURRENT_SOURCE_DIR}/gcc_s.ver" | 
|  | "-o" "${CMAKE_CURRENT_BINARY_DIR}/gcc_s.ver" | 
|  | ) | 
|  | set_target_properties(gcc_s.ver PROPERTIES | 
|  | OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}/gcc_s.ver") | 
|  |  | 
|  | add_library(libgcc_s SHARED blank.c) | 
|  | add_dependencies(libgcc_s gcc_s_ver) | 
|  | set_target_properties(libgcc_s | 
|  | PROPERTIES | 
|  | LINKER_LANGUAGE C | 
|  | OUTPUT_NAME "unwind" | 
|  | VERSION "1.0" | 
|  | SOVERSION "1" | 
|  | POSITION_INDEPENDENT_CODE ON) | 
|  | string(REGEX MATCH "[^-]+" LLVM_LIBGCC_TARGET_ARCH ${CMAKE_C_COMPILER_TARGET}) | 
|  | target_link_libraries(libgcc_s PRIVATE | 
|  | $<TARGET_OBJECTS:unwind_static> | 
|  | $<TARGET_OBJECTS:clang_rt.builtins-${LLVM_LIBGCC_TARGET_ARCH}> | 
|  | ) | 
|  | target_link_options(libgcc_s PRIVATE | 
|  | -nostdlib | 
|  | -Wl,--version-script,$<TARGET_PROPERTY:gcc_s.ver,OUTPUT_PATH>) | 
|  |  | 
|  | check_library_exists(m sin "" LLVM_LIBGCC_HAS_LIBM) | 
|  | target_link_libraries(libgcc_s PRIVATE | 
|  | $<$<BOOL:LLVM_LIBGCC_HAS_LIBM>:m> | 
|  | c | 
|  | ) | 
|  |  | 
|  | extend_path(LLVM_LIBGCC_LIBUNWIND_STATIC_ROOT "${CMAKE_INSTALL_PREFIX}" "${LIBUNWIND_INSTALL_LIBRARY_DIR}") | 
|  | #string(REPLACE "${CMAKE_INSTALL_FULL_LIBDIR}/" "" LLVM_LIBGCC_LIBUNWIND_STATIC_ROOT "${LLVM_LIBGCC_LIBUNWIND_STATIC_ROOT}") | 
|  |  | 
|  | install(TARGETS libgcc_s | 
|  | LIBRARY DESTINATION "${LLVM_LIBGCC_LIBUNWIND_STATIC_ROOT}" COMPONENT unwind | 
|  | ARCHIVE DESTINATION "${LLVM_LIBGCC_LIBUNWIND_STATIC_ROOT}" COMPONENT unwind | 
|  | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT unwind) | 
|  |  | 
|  | get_compiler_rt_install_dir(${LLVM_LIBGCC_TARGET_ARCH} install_dir_builtins) | 
|  | string(REGEX REPLACE "^lib/" "" install_dir_builtins "${install_dir_builtins}") | 
|  | string(FIND "${install_dir_builtins}" "clang" install_path_contains_triple) | 
|  | if(install_path_contains_triple EQUAL -1) | 
|  | set(builtins_suffix "-${LLVM_LIBGCC_TARGET_ARCH}") | 
|  | else() | 
|  | string(PREPEND install_dir_builtins "../") | 
|  | endif() | 
|  | install(CODE "execute_process( | 
|  | COMMAND \"\${CMAKE_COMMAND}\" -E | 
|  | create_symlink ${install_dir_builtins}/libclang_rt.builtins${builtins_suffix}.a libgcc.a | 
|  | WORKING_DIRECTORY \"\$ENV{DESTDIR}${LLVM_LIBGCC_LIBUNWIND_STATIC_ROOT}\")" | 
|  | COMPONENT unwind) | 
|  |  | 
|  | install(CODE "execute_process( | 
|  | COMMAND \"\${CMAKE_COMMAND}\" -E | 
|  | create_symlink libunwind.a libgcc_eh.a | 
|  | WORKING_DIRECTORY \"\$ENV{DESTDIR}${LLVM_LIBGCC_LIBUNWIND_STATIC_ROOT}\")" | 
|  | COMPONENT unwind) | 
|  | install(CODE "execute_process( | 
|  | COMMAND \"\${CMAKE_COMMAND}\" -E | 
|  | create_symlink libunwind.so libgcc_s.so.1.0 | 
|  | WORKING_DIRECTORY \"\$ENV{DESTDIR}${LLVM_LIBGCC_LIBUNWIND_STATIC_ROOT}\")" | 
|  | COMPONENT unwind) | 
|  | install(CODE "execute_process( | 
|  | COMMAND \"\${CMAKE_COMMAND}\" -E | 
|  | create_symlink libgcc_s.so.1.0 libgcc_s.so.1 | 
|  | WORKING_DIRECTORY \"\$ENV{DESTDIR}${LLVM_LIBGCC_LIBUNWIND_STATIC_ROOT}\")" | 
|  | COMPONENT unwind) | 
|  | install(CODE "execute_process( | 
|  | COMMAND \"\${CMAKE_COMMAND}\" -E | 
|  | create_symlink libgcc_s.so.1 libgcc_s.so | 
|  | WORKING_DIRECTORY \"\$ENV{DESTDIR}${LLVM_LIBGCC_LIBUNWIND_STATIC_ROOT}\")" | 
|  | COMPONENT unwind) |