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