diff --git a/debian/changelog b/debian/changelog index 0437f9fa..cdaf1fb0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,8 @@ llvm-toolchain-snapshot (1:4.0~svn279916-2) UNRELEASED; urgency=medium * clang_getAllSkippedRanges in the list of libclang1 symbols + * Port to kfreebsd. Many thanks to Pino Toscano + (Closes: #835665) -- Sylvestre Ledru Sat, 27 Aug 2016 20:15:58 +0200 diff --git a/debian/patches/kfreebsd-support.diff b/debian/patches/kfreebsd-support.diff new file mode 100644 index 00000000..3218d795 --- /dev/null +++ b/debian/patches/kfreebsd-support.diff @@ -0,0 +1,84 @@ +Index: llvm-toolchain-3.9_3.9~+rc3/compiler-rt/cmake/config-ix.cmake +=================================================================== +--- llvm-toolchain-3.9_3.9~+rc3.orig/compiler-rt/cmake/config-ix.cmake ++++ llvm-toolchain-3.9_3.9~+rc3/compiler-rt/cmake/config-ix.cmake +@@ -397,7 +397,8 @@ endif() + + if (SANITIZER_COMMON_SUPPORTED_ARCH AND NOT LLVM_USE_SANITIZER AND + (OS_NAME MATCHES "Android|Darwin|Linux|FreeBSD" OR +- (OS_NAME MATCHES "Windows" AND MSVC))) ++ (OS_NAME MATCHES "Windows" AND MSVC)) ++ AND NOT (OS_NAME STREQUAL "kFreeBSD")) + set(COMPILER_RT_HAS_SANITIZER_COMMON TRUE) + else() + set(COMPILER_RT_HAS_SANITIZER_COMMON FALSE) +Index: llvm-toolchain-3.9_3.9~+rc3/tools/llvm-shlib/CMakeLists.txt +=================================================================== +--- llvm-toolchain-3.9_3.9~+rc3.orig/tools/llvm-shlib/CMakeLists.txt ++++ llvm-toolchain-3.9_3.9~+rc3/tools/llvm-shlib/CMakeLists.txt +@@ -40,7 +40,7 @@ add_llvm_library(LLVM SHARED DISABLE_LLV + set_property(TARGET LLVM PROPERTY VERSION "1") # Append .1 to SONAME + + list(REMOVE_DUPLICATES LIB_NAMES) +-if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") # FIXME: It should be "GNU ld for elf" ++if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "GNU" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "kFreeBSD") # FIXME: It should be "GNU ld for elf" + # GNU ld doesn't resolve symbols in the version script. + set(LIB_NAMES -Wl,--whole-archive ${LIB_NAMES} -Wl,--no-whole-archive) + elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") +Index: llvm-toolchain-3.9_3.9~+rc3/lldb/cmake/LLDBDependencies.cmake +=================================================================== +--- llvm-toolchain-3.9_3.9~+rc3.orig/lldb/cmake/LLDBDependencies.cmake ++++ llvm-toolchain-3.9_3.9~+rc3/lldb/cmake/LLDBDependencies.cmake +@@ -163,7 +163,7 @@ if (NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB ) + endif() + + # On FreeBSD/NetBSD backtrace() is provided by libexecinfo, not libc. +-if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR CMAKE_SYSTEM_NAME MATCHES "NetBSD") ++if ((CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR CMAKE_SYSTEM_NAME MATCHES "NetBSD") AND NOT CMAKE_SYSTEM_NAME STREQUAL "kFreeBSD") + list(APPEND LLDB_SYSTEM_LIBS execinfo) + endif() + +Index: llvm-toolchain-3.9_3.9~+rc3/lldb/scripts/utilsOsType.py +=================================================================== +--- llvm-toolchain-3.9_3.9~+rc3.orig/lldb/scripts/utilsOsType.py ++++ llvm-toolchain-3.9_3.9~+rc3/lldb/scripts/utilsOsType.py +@@ -35,6 +35,7 @@ if sys.version_info.major >= 3: + Linux = 3 + NetBSD = 4 + Windows = 5 ++ kFreeBSD = 6 + else: + class EnumOsType(object): + values = ["Unknown", +@@ -42,7 +43,8 @@ else: + "FreeBSD", + "Linux", + "NetBSD", +- "Windows"] ++ "Windows", ++ "kFreeBSD"] + class __metaclass__(type): + #++--------------------------------------------------------------------------- + # Details: Fn acts as an enumeration. +@@ -86,5 +88,7 @@ def determine_os_type(): + eOSType = EnumOsType.NetBSD + elif strOS == "win32": + eOSType = EnumOsType.Windows ++ elif strOS.startswith("gnukfreebsd"): ++ eOSType = EnumOsType.kFreeBSD + + return eOSType +Index: llvm-toolchain-3.9_3.9~+rc3/lldb/scripts/Python/modules/CMakeLists.txt +=================================================================== +--- llvm-toolchain-3.9_3.9~+rc3.orig/lldb/scripts/Python/modules/CMakeLists.txt ++++ llvm-toolchain-3.9_3.9~+rc3/lldb/scripts/Python/modules/CMakeLists.txt +@@ -5,7 +5,7 @@ if (CXX_SUPPORTS_NO_MACRO_REDEFINED) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-macro-redefined") + endif () + +-# build the Python readline suppression module only on Linux +-if (CMAKE_SYSTEM_NAME MATCHES "Linux" AND NOT __ANDROID_NDK__) ++# build the Python readline suppression module only on Linux or GNU systems ++if ((CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "GNU" OR CMAKE_SYSTEM_NAME STREQUAL "kFreeBSD") AND NOT __ANDROID_NDK__) + add_subdirectory(readline) + endif() diff --git a/debian/patches/series b/debian/patches/series index ab042346..61211408 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -34,3 +34,4 @@ lldb-link-atomic-cmake.patch disable-source-interleave.diff silent-gold-utils.diff disable-llvm-symbolizer-test.diff +kfreebsd-support.diff