未验证 提交 9c9ebb94 编写于 作者: A Adeel Mujahid 提交者: GitHub

Move libunwind directories to src/native/external (#64043)

* Move libunwind directories to src/native/external

* Move extra additions to single directory

* Extract coreclr configs in libunwind.cmake

* Reapply upstream patches

* Fixups
上级 c992dc2a
......@@ -107,11 +107,11 @@ if(CLR_CMAKE_HOST_UNIX)
add_subdirectory(pal)
add_subdirectory(hosts)
else(CLR_CMAKE_HOST_UNIX)
else()
if(CLR_CMAKE_TARGET_UNIX)
add_subdirectory(pal/src/libunwind)
endif(CLR_CMAKE_TARGET_UNIX)
endif(CLR_CMAKE_HOST_UNIX)
add_subdirectory(${CLR_SRC_NATIVE_DIR}/external/libunwind_extras ${CLR_ARTIFACTS_OBJ_DIR}/external/libunwind)
endif()
endif()
# Add this subdir. We install the headers for the jit.
add_subdirectory(pal/prebuilt/inc)
......
......@@ -10,16 +10,16 @@ elseif (CLR_CMAKE_TARGET_FREEBSD)
endif()
if(NOT CLR_CMAKE_USE_SYSTEM_LIBUNWIND)
include_directories(libunwind/include)
include_directories(libunwind/include/tdep)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/libunwind/include)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/libunwind/include/tdep)
include_directories(${CLR_SRC_NATIVE_DIR}/external/libunwind/include)
include_directories(${CLR_SRC_NATIVE_DIR}/external/libunwind/include/tdep)
include_directories(${CLR_ARTIFACTS_OBJ_DIR}/external/libunwind/include)
include_directories(${CLR_ARTIFACTS_OBJ_DIR}/external/libunwind/include/tdep)
add_subdirectory(libunwind)
add_subdirectory(${CLR_SRC_NATIVE_DIR}/external/libunwind_extras ${CLR_ARTIFACTS_OBJ_DIR}/external/libunwind)
elseif(NOT CLR_CMAKE_TARGET_OSX)
find_unwind_libs(UNWIND_LIBS)
else()
add_subdirectory(libunwind)
add_subdirectory(${CLR_SRC_NATIVE_DIR}/external/libunwind_extras ${CLR_ARTIFACTS_OBJ_DIR}/external/libunwind)
endif(NOT CLR_CMAKE_USE_SYSTEM_LIBUNWIND)
include(configure.cmake)
......@@ -251,11 +251,10 @@ endif(CLR_CMAKE_TARGET_OSX)
if(NOT FEATURE_CROSSBITNESS)
target_include_directories(coreclrpal_dac PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/libunwind/include
${CMAKE_CURRENT_SOURCE_DIR}/libunwind/include/tdep
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}/libunwind/include
${CMAKE_CURRENT_BINARY_DIR}/libunwind/include/tdep
${CLR_SRC_NATIVE_DIR}/external/libunwind/include
${CLR_SRC_NATIVE_DIR}/external/libunwind/include/tdep
${CLR_ARTIFACTS_OBJ_DIR}/external/libunwind/include
${CLR_ARTIFACTS_OBJ_DIR}/external/libunwind/include/tdep
)
endif(NOT FEATURE_CROSSBITNESS)
......
......@@ -1030,7 +1030,7 @@ set(SYNCHMGR_SUSPENSION_SAFE_CONDITION_SIGNALING 1)
set(ERROR_FUNC_FOR_GLOB_HAS_FIXED_PARAMS 1)
if(NOT CLR_CMAKE_USE_SYSTEM_LIBUNWIND)
list(INSERT CMAKE_REQUIRED_INCLUDES 0 ${CMAKE_CURRENT_SOURCE_DIR}/libunwind/include ${CMAKE_CURRENT_BINARY_DIR}/libunwind/include)
list(INSERT CMAKE_REQUIRED_INCLUDES 0 ${CLR_SRC_NATIVE_DIR}/external/libunwind/include ${CLR_ARTIFACTS_OBJ_DIR}/external/libunwind/include)
endif()
check_c_source_compiles("
......
v1.6.2
https://github.com/libunwind/libunwind/commit/b3ca1b59a795a617877c01fe5d299ab7a07ff29d
Replace CMakeLists.txt, src/CMakeLists.txt, configure.cmake with .NET custom version
Keep .NET oop directory
Reapply changes from https://github.com/dotnet/runtime/commit/1b5719c2e3dde393531eaeb5b5cde05dabeef5b8
Apply https://github.com/libunwind/libunwind/pull/317
Apply https://github.com/libunwind/libunwind/pull/333
......
project(libunwind)
cmake_minimum_required(VERSION 3.16.1)
set(PKG_MAJOR "1")
set(PKG_MINOR "6")
set(PKG_EXTRA "-rc1")
set(PACKAGE_STRING "libunwind")
set(PACKAGE_BUGREPORT "")
if ('$ENV{TARGET}' STREQUAL 'x86_64-linux-gnu')
set(TARGET_AMD64 1)
set(arch x86_64)
add_definitions(-D__x86_64__)
add_definitions(-D__amd64__)
add_definitions(-D__linux__)
elseif ('$ENV{TARGET}' STREQUAL 'aarch64-linux-gnu')
set(TARGET_AARCH64 1)
set(arch aarch64)
add_definitions(-D__aarch64__)
add_definitions(-D__linux__)
elseif ('$ENV{TARGET}' STREQUAL 'arm-linux-gnueabihf')
set(TARGET_ARM 1)
set(arch arm)
add_definitions(-D__arm__)
add_definitions(-D__linux__)
elseif ('$ENV{TARGET}' STREQUAL 's390x-linux-gnu')
set(TARGET_S390X 1)
set(arch s390x)
add_definitions(-D__s390x__)
add_definitions(-D__linux__)
elseif ('$ENV{TARGET}' STREQUAL 'loongarch64-linux-gnu')
set(TARGET_LOONGARCH64 1)
set(arch loongarch64)
add_definitions(-D__loongarch64)
add_definitions(-D__linux__)
else ()
message(FATAL_ERROR "Unrecognize value in environment variable TARGET")
endif ()
include(CheckCSourceCompiles)
include(CheckIncludeFiles)
if ("${CMAKE_GENERATOR}" MATCHES "^Visual Studio.*$")
message(VERBOSE "Using generator ${CMAKE_GENERATOR}")
# Assume we are using default MSVC compiler
add_compile_options(/std:c++latest)
add_compile_options(/TC) # compile all files as C
add_compile_options(/permissive-)
# files for cross os compilation
include_directories(include/win)
# Warnings in release builds
add_compile_options(-wd4068) # ignore unknown pragma warnings (gcc pragmas)
add_compile_options(-wd4146) # minus operator applied to unsigned
add_compile_options(-wd4244) # possible loss of data
add_compile_options(-wd4267) # possible loss of data
add_compile_options(-wd4334) # 32-bit shift implicitly converted to 64 bits
# Disable warning due to incorrect format specifier in debugging printf via the Debug macro
add_compile_options(-wd4311) # pointer truncation from 'unw_word_t *' to 'long'
add_compile_options(-wd4475) # 'fprintf' : length modifier 'L' cannot be used
add_compile_options(-wd4477) # fprintf argument type
# Windows builds will only support remote unwind
add_definitions(-DUNW_REMOTE_ONLY)
# Disable security warnings
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
# Our posix abstraction layer will provide these headers
set(HAVE_ELF_H 1)
set(HAVE_ENDIAN_H 1)
# MSVC compiler is currently missing C11 stdalign.h header
# Fake it until support is added
check_include_files(stdalign.h HAVE_STDALIGN_H)
if (NOT HAVE_STDALIGN_H)
configure_file(include/win/fakestdalign.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/stdalign.h)
endif (NOT HAVE_STDALIGN_H)
# MSVC compiler is currently missing C11 stdatomic.h header
# Fake it until support is added
check_include_files(stdatomic.h HAVE_STDATOMIC_H)
if (NOT HAVE_STDATOMIC_H)
configure_file(include/win/fakestdatomic.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/stdatomic.h)
endif (NOT HAVE_STDATOMIC_H)
# MSVC compiler is currently missing C11 _Thread_local
check_c_source_compiles("void main() { _Thread_local int a; }" HAVE_THREAD_LOCAL)
if (NOT HAVE_THREAD_LOCAL)
add_definitions(-D_Thread_local=)
endif (NOT HAVE_THREAD_LOCAL)
else ()
message(FATAL_ERROR "This CMake file is currently only designed for building on Visual Studio")
endif ()
add_definitions(-DHAVE_CONFIG_H)
configure_file(include/config.h.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/include/config.h)
configure_file(include/libunwind-common.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/libunwind-common.h)
configure_file(include/libunwind.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/libunwind.h)
configure_file(include/tdep/libunwind_i.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/tdep/libunwind_i.h)
add_subdirectory(src)
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册