diff --git a/debian/changelog b/debian/changelog index da5ceb69..fc05a895 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,8 @@ llvm-toolchain-3.9 (1:3.9~+rc3-1) unstable; urgency=medium * Use the manpage from clang.rst instead of help2man * Fix a crash with clang-tidy (Closes: #833802) Fixed in 1:3.9~+rc1-1~exp1 + * Port to kfreebsd. Many thanks to Pino Toscano + (Closes: #835665) -- Sylvestre Ledru Fri, 26 Aug 2016 23:34:16 +0200 diff --git a/debian/patches/kfreebsd-support.diff b/debian/patches/kfreebsd-support.diff new file mode 100644 index 00000000..de38cfee --- /dev/null +++ b/debian/patches/kfreebsd-support.diff @@ -0,0 +1,74 @@ +--- a/compiler-rt/cmake/config-ix.cmake ++++ b/compiler-rt/cmake/config-ix.cmake +@@ -560,7 +560,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) +--- a/tools/llvm-shlib/CMakeLists.txt ++++ b/tools/llvm-shlib/CMakeLists.txt +@@ -42,7 +42,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") +--- a/lldb/cmake/LLDBDependencies.cmake ++++ b/lldb/cmake/LLDBDependencies.cmake +@@ -153,7 +153,7 @@ if (NOT CMAKE_SYSTEM_NAME MATCHES "Windo + endif() + 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() + +--- a/lldb/scripts/utilsOsType.py ++++ b/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 +--- a/lldb/scripts/Python/modules/CMakeLists.txt ++++ b/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 b080d019..ae379d5c 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -33,3 +33,4 @@ disable-test-failing-sparc-i386.diff fix-cmake-config-prefix.diff lldb-link-atomic-cmake.patch disable-llvm-symbolizer-test.diff +kfreebsd-support.diff