Package: clang
Version: 1:3.0-6.1
Severity: wishlist
Tags: patch sid
User: debian-powerpc...@breakpoint.cc
Usertags: powerpcspe

Hi,

clang FTBFS on powerpcspe[1] like this:

[...]
if  powerpc-linux-gnuspe-g++ -I/«PKGBUILDDIR»/build-clang/include 
-I/«PKGBUILDDIR»/build-clang/tools/clang/lib/Lex 
-I/«PKGBUILDDIR»/llvm-3.0.src/include -I/«PKGBUILDDIR»/tools/clang/lib/Lex  
-DNDEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS 
-D__STDC_LIMIT_MACROS -I/«PKGBUILDDIR»/tools/clang/lib/Lex/../../include 
-I/«PKGBUILDDIR»/build-clang/tools/clang/lib/Lex/../../include 
-DCLANG_VENDOR='"Debian "' -maltivec -g -O2 -fomit-frame-pointer 
-fno-exceptions -fno-rtti -fPIC -Woverloaded-virtual -Wcast-qual 
-fno-strict-aliasing    -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter 
-Wwrite-strings  -c -MMD -MP -MF 
"/«PKGBUILDDIR»/build-clang/tools/clang/lib/Lex/Release/HeaderMap.d.tmp" -MT 
"/«PKGBUILDDIR»/build-clang/tools/clang/lib/Lex/Release/HeaderMap.o" -MT 
"/«PKGBUILDDIR»/build-clang/tools/clang/lib/Lex/Release/HeaderMap.d" 
/«PKGBUILDDIR»/tools/clang/lib/Lex/HeaderMap.cpp -o 
/«PKGBUILDDIR»/build-clang/tools/clang/lib/Lex/Release/HeaderMap
 .o ; \
then /bin/mv -f 
"/«PKGBUILDDIR»/build-clang/tools/clang/lib/Lex/Release/HeaderMap.d.tmp" 
"/«PKGBUILDDIR»/build-clang/tools/clang/lib/Lex/Release/HeaderMap.d"; else 
/bin/rm 
"/«PKGBUILDDIR»/build-clang/tools/clang/lib/Lex/Release/HeaderMap.d.tmp"; exit 
1; fi
/«PKGBUILDDIR»/tools/clang/lib/Lex/HeaderMap.cpp:1:0: error: AltiVec and E500 
instructions cannot coexist
[...]

The attached patch fixes this by considering the triplet powerpc-linux-gnuspe
and omitting -maltivec in case of powerpcspe.

Thanks,

Roland


[1] http://wiki.debian.org/PowerPCSPEPort

-- System Information:
Debian Release: 7.0
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.7.0 (SMP w/4 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8) (ignored: LC_ALL 
set to en_GB.UTF-8)
Shell: /bin/sh linked to /bin/dash
--- clang-3.0.orig/tools/clang/lib/Driver/ToolChains.cpp
+++ clang-3.0/tools/clang/lib/Driver/ToolChains.cpp
@@ -1682,6 +1682,7 @@ Linux::GCCInstallationDetector::GCCInsta
     static const char *const PPCLibDirs[] = { "/lib32", "/lib" };
     static const char *const PPCTriples[] = {
       "powerpc-linux-gnu",
+      "powerpc-linux-gnuspe",
       "powerpc-unknown-linux-gnu"
     };
     LibDirs.append(PPCLibDirs, PPCLibDirs + llvm::array_lengthof(PPCLibDirs));
@@ -1786,6 +1787,8 @@ static std::string getMultiarchTriple(co
       return "x86_64-unknown-linux-gnu";
     return TargetTriple.str();
   case llvm::Triple::ppc:
+    if (llvm::sys::fs::exists(SysRoot + "/lib/powerpc-linux-gnuspe"))
+      return "powerpc-linux-gnuspe";
     if (llvm::sys::fs::exists(SysRoot + "/lib/powerpc-linux-gnu"))
       return "powerpc-linux-gnu";
     return TargetTriple.str();
--- clang-3.0.orig/tools/clang/lib/Lex/Makefile
+++ clang-3.0/tools/clang/lib/Lex/Makefile
@@ -17,8 +17,10 @@ include $(CLANG_LEVEL)/../../Makefile.co
 LIBRARYNAME := clangLex
 
 ifeq ($(ARCH),PowerPC)
+ifneq ($(shell dpkg-architecture -qDEB_HOST_ARCH),powerpcspe)
 CXX.Flags += -maltivec
 endif
+endif
 
 include $(CLANG_LEVEL)/Makefile
 

Reply via email to