Port to kfreebsd. Many thanks to Pino Toscano

(Closes: #835665)
This commit is contained in:
Sylvestre Ledru 2016-08-28 09:38:01 +00:00
commit 6e19d39c75
3 changed files with 77 additions and 0 deletions

2
debian/changelog vendored
View File

@ -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 <sylvestre@debian.org> Fri, 26 Aug 2016 23:34:16 +0200

74
debian/patches/kfreebsd-support.diff vendored Normal file
View File

@ -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()

View File

@ -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