Accepting request 144074 from devel:tools:compiler
Fix ARM build (forwarded request 144061 from Guillaume_G) OBS-URL: https://build.opensuse.org/request/show/144074 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/llvm?expand=0&rev=36
This commit is contained in:
commit
6d3d919d1f
15
arm_suse_support.diff
Normal file
15
arm_suse_support.diff
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
--- llvm/tools/clang/lib/Driver/ToolChains.cpp.orig 2012-11-22 10:26:49.202107824 +0100
|
||||||
|
+++ llvm/tools/clang/lib/Driver/ToolChains.cpp 2012-11-22 12:20:33.662825882 +0100
|
||||||
|
@@ -1056,10 +1056,12 @@ Generic_GCC::GCCInstallationDetector::GC
|
||||||
|
static const char *const ARMLibDirs[] = { "/lib" };
|
||||||
|
static const char *const ARMTriples[] = {
|
||||||
|
"arm-linux-gnueabi",
|
||||||
|
+ "armv5tel-suse-linux-gnueabi",
|
||||||
|
"arm-linux-androideabi"
|
||||||
|
};
|
||||||
|
static const char *const ARMHFTriples[] = {
|
||||||
|
"arm-linux-gnueabihf",
|
||||||
|
+ "armv7hl-suse-linux-gnueabi"
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char *const X86_64LibDirs[] = { "/lib64", "/lib" };
|
14
disable_neon_in_armv7.diff
Normal file
14
disable_neon_in_armv7.diff
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
--- ./tools/clang/lib/Driver/Tools.cpp.orig 2012-11-22 10:37:49.686675877 +0100
|
||||||
|
+++ ./tools/clang/lib/Driver/Tools.cpp 2012-11-27 10:55:58.984167280 +0100
|
||||||
|
@@ -5763,8 +5763,9 @@ void linuxtools::Assemble::ConstructJob(
|
||||||
|
CmdArgs.push_back("-many");
|
||||||
|
} else if (getToolChain().getArch() == llvm::Triple::arm) {
|
||||||
|
StringRef MArch = getToolChain().getArchName();
|
||||||
|
- if (MArch == "armv7" || MArch == "armv7a" || MArch == "armv7-a")
|
||||||
|
- CmdArgs.push_back("-mfpu=neon");
|
||||||
|
+ // Do not use neon in openSUSE
|
||||||
|
+// if (MArch == "armv7" || MArch == "armv7a" || MArch == "armv7-a")
|
||||||
|
+// CmdArgs.push_back("-mfpu=neon");
|
||||||
|
|
||||||
|
StringRef ARMFloatABI = getARMFloatABI(getToolChain().getDriver(), Args,
|
||||||
|
getToolChain().getTriple());
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:434e1ec81ec76c1ad916f21ca5722207fb9a688cf0375fdbc324e6ce863f9d69
|
|
||||||
size 17650563
|
|
3
llvm-3.1.99.r168987.tar.bz2
Normal file
3
llvm-3.1.99.r168987.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:d0a507e04223bd59729776b4a09814f39131a2fb548d75d6af53aeeaa31dfc94
|
||||||
|
size 17660268
|
31
llvm-config-lib64.patch
Normal file
31
llvm-config-lib64.patch
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
diff -ur llvm.orig/tools/llvm-config/llvm-config.cpp llvm/tools/llvm-config/llvm-config.cpp
|
||||||
|
--- llvm.orig/tools/llvm-config/llvm-config.cpp 2012-11-12 11:25:40.547628293 +0100
|
||||||
|
+++ llvm/tools/llvm-config/llvm-config.cpp 2012-12-02 15:09:31.981279773 +0100
|
||||||
|
@@ -231,15 +231,15 @@
|
||||||
|
switch (DevelopmentTreeLayout) {
|
||||||
|
case MakefileStyle:
|
||||||
|
ActiveBinDir = ActiveObjRoot + "/" + LLVM_BUILDMODE + "/bin";
|
||||||
|
- ActiveLibDir = ActiveObjRoot + "/" + LLVM_BUILDMODE + "/lib";
|
||||||
|
+ ActiveLibDir = ActiveObjRoot + "/" + LLVM_BUILDMODE + "/lib64";
|
||||||
|
break;
|
||||||
|
case CMakeStyle:
|
||||||
|
ActiveBinDir = ActiveObjRoot + "/bin";
|
||||||
|
- ActiveLibDir = ActiveObjRoot + "/lib";
|
||||||
|
+ ActiveLibDir = ActiveObjRoot + "/lib64";
|
||||||
|
break;
|
||||||
|
case CMakeBuildModeStyle:
|
||||||
|
ActiveBinDir = ActiveObjRoot + "/bin/" + LLVM_BUILDMODE;
|
||||||
|
- ActiveLibDir = ActiveObjRoot + "/lib/" + LLVM_BUILDMODE;
|
||||||
|
+ ActiveLibDir = ActiveObjRoot + "/lib64/" + LLVM_BUILDMODE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -250,7 +250,7 @@
|
||||||
|
ActivePrefix = CurrentExecPrefix;
|
||||||
|
ActiveIncludeDir = ActivePrefix + "/include";
|
||||||
|
ActiveBinDir = ActivePrefix + "/bin";
|
||||||
|
- ActiveLibDir = ActivePrefix + "/lib";
|
||||||
|
+ ActiveLibDir = ActivePrefix + "/lib64";
|
||||||
|
ActiveIncludeOption = "-I" + ActiveIncludeDir;
|
||||||
|
}
|
||||||
|
|
19
llvm.changes
19
llvm.changes
@ -1,3 +1,22 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Dec 4 13:15:12 UTC 2012 - guillaume@opensuse.org
|
||||||
|
|
||||||
|
- Fix ARM build
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Dec 3 13:32:14 UTC 2012 - schuetzm@gmx.net
|
||||||
|
|
||||||
|
- Fix llvm-config --libdir to return /usr/lib64 where appropriate.
|
||||||
|
The old method of using sed on the executable does no longer
|
||||||
|
work, because llvm-config is now a binary.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Nov 30 07:27:46 UTC 2012 - idonmez@suse.com
|
||||||
|
|
||||||
|
- Update to r168987 from release_32 branch
|
||||||
|
* Crash fixes
|
||||||
|
* Miscompilation fixes
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Nov 20 08:59:09 UTC 2012 - idonmez@suse.com
|
Tue Nov 20 08:59:09 UTC 2012 - idonmez@suse.com
|
||||||
|
|
||||||
|
69
llvm.spec
69
llvm.spec
@ -16,12 +16,12 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
%define _revision 168357
|
%define _revision 168987
|
||||||
%define _release_version 3.2
|
%define _release_version 3.2
|
||||||
%define _supported_archs "arm,x86"
|
%define _supported_archs "arm,x86"
|
||||||
|
|
||||||
Name: llvm
|
Name: llvm
|
||||||
Version: 3.1.99.r168357
|
Version: 3.1.99.r%{_revision}
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Low Level Virtual Machine
|
Summary: Low Level Virtual Machine
|
||||||
License: NCSA
|
License: NCSA
|
||||||
@ -37,6 +37,11 @@ Patch2: assume-opensuse.patch
|
|||||||
Patch3: clang-disable-ada-extension.patch
|
Patch3: clang-disable-ada-extension.patch
|
||||||
# PATCH-FIX-OPENSUSE default-to-i586.patch -- Use i586 as default target for 32bit
|
# PATCH-FIX-OPENSUSE default-to-i586.patch -- Use i586 as default target for 32bit
|
||||||
Patch4: default-to-i586.patch
|
Patch4: default-to-i586.patch
|
||||||
|
Patch5: llvm-config-lib64.patch
|
||||||
|
# PATCH-FIX-OPENSUSE arm_suse_support.diff --Enable ARM suse toolchain support
|
||||||
|
Patch6: arm_suse_support.diff
|
||||||
|
# PATCH-FIX-OPENSUSE disable_neon_in_armv7.diff -- Disable use of neon in armv7 openSUSE
|
||||||
|
Patch7: disable_neon_in_armv7.diff
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
@ -125,6 +130,15 @@ This package contains vim plugins for LLVM like syntax highlighting.
|
|||||||
%endif
|
%endif
|
||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
|
%if "%{_lib}" == "lib64"
|
||||||
|
%patch5 -p1
|
||||||
|
%endif
|
||||||
|
%ifarch %arm
|
||||||
|
%patch6 -p1
|
||||||
|
%endif
|
||||||
|
%ifarch armv7l armv7hl
|
||||||
|
%patch7 -p0
|
||||||
|
%endif
|
||||||
|
|
||||||
# We hardcode i586
|
# We hardcode i586
|
||||||
rm tools/clang/test/Driver/x86_features.c
|
rm tools/clang/test/Driver/x86_features.c
|
||||||
@ -151,16 +165,38 @@ TOPLEVEL=$PWD
|
|||||||
export SUSE_ASNEEDED=0
|
export SUSE_ASNEEDED=0
|
||||||
mkdir stage1 stage2
|
mkdir stage1 stage2
|
||||||
pushd stage1
|
pushd stage1
|
||||||
|
mkdir Release
|
||||||
|
|
||||||
|
%if "%{_lib}" == "lib64"
|
||||||
|
ln -s lib Release/lib64
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%ifarch armv7l armv7hl
|
||||||
|
# This fixes the armv7 build. (Allow to run stage2 without problem)
|
||||||
|
export CFLAGS="-mfloat-abi=hard -march=armv7-a -mtune=cortex-a9 -mfpu=vfpv3-d16"
|
||||||
|
export CXXFLAGS="-mfloat-abi=hard -march=armv7-a -mtune=cortex-a9 -mfpu=vfpv3-d16"
|
||||||
|
%endif
|
||||||
|
|
||||||
../configure \
|
../configure \
|
||||||
--enable-optimized \
|
--enable-optimized \
|
||||||
--disable-assertions \
|
--disable-assertions \
|
||||||
--with-optimize-option="-O0" \
|
--with-optimize-option="-O0" \
|
||||||
%ifarch %arm
|
%ifarch armv5el armv5tel
|
||||||
--disable-sjlj-exceptions \
|
--disable-sjlj-exceptions \
|
||||||
--with-arch=armv7-a --with-float=hard --with-fpu=vfpv3-d16 --with-mode=thumb \
|
--with-arch=armv5te --with-float=soft --with-mode=arm \
|
||||||
--disable-werror --enable-checking=release \
|
--disable-werror --enable-checking=release \
|
||||||
--build=arm-linux-gnueabihf --host=arm-linux-gnueabihf \
|
--build=armv5tel-suse-linux-gnueabi --host=armv5tel-suse-linux-gnueabi --target=armv5tel-suse-linux-gnueabi \
|
||||||
|
%endif
|
||||||
|
%ifarch armv7l armv7hl
|
||||||
|
--disable-sjlj-exceptions \
|
||||||
|
--with-arch=armv7-a --with-tune=cortex-a9 --with-float=hard --with-fpu=vfpv3-d16 --with-fpmath=vfp3 \
|
||||||
|
--disable-werror --enable-checking=release \
|
||||||
|
--build=armv7hl-suse-linux-gnueabi --host=armv7hl-suse-linux-gnueabi --target=armv7hl-suse-linux-gnueabi \
|
||||||
|
%if 0%{?suse_version} >= 1220
|
||||||
|
--with-mode=thumb \
|
||||||
|
%else
|
||||||
|
--with-mode=arm \
|
||||||
|
%endif
|
||||||
%endif
|
%endif
|
||||||
--enable-targets=host
|
--enable-targets=host
|
||||||
|
|
||||||
@ -169,9 +205,11 @@ make %{?_smp_mflags} clang-only
|
|||||||
popd
|
popd
|
||||||
pushd stage2
|
pushd stage2
|
||||||
|
|
||||||
# autotools ignore --libdir
|
|
||||||
mkdir Release+Debug
|
mkdir Release+Debug
|
||||||
|
# autotools ignore --libdir
|
||||||
|
%if "%{_lib}" == "lib64"
|
||||||
ln -s lib Release+Debug/lib64
|
ln -s lib Release+Debug/lib64
|
||||||
|
%endif
|
||||||
|
|
||||||
export CC=$TOPLEVEL/stage1/Release/bin/clang
|
export CC=$TOPLEVEL/stage1/Release/bin/clang
|
||||||
export CXX=$TOPLEVEL/stage1/Release/bin/clang++
|
export CXX=$TOPLEVEL/stage1/Release/bin/clang++
|
||||||
@ -186,12 +224,24 @@ export CXX=$TOPLEVEL/stage1/Release/bin/clang++
|
|||||||
%if 0%{?suse_version} >= 1220
|
%if 0%{?suse_version} >= 1220
|
||||||
--with-binutils-include=/usr/include \
|
--with-binutils-include=/usr/include \
|
||||||
%endif
|
%endif
|
||||||
%ifarch %arm
|
%ifarch armv5el armv5tel
|
||||||
--with-optimize-option="-U_GLIBCXX_ATOMIC_BUILTINS" \
|
--with-optimize-option="-U_GLIBCXX_ATOMIC_BUILTINS" \
|
||||||
--disable-sjlj-exceptions \
|
--disable-sjlj-exceptions \
|
||||||
--with-arch=armv7-a --with-float=hard --with-fpu=vfpv3-d16 --with-mode=thumb \
|
--with-arch=armv5te --with-float=soft --with-mode=arm \
|
||||||
--disable-werror --enable-checking=release \
|
--disable-werror --enable-checking=release \
|
||||||
--build=arm-linux-gnueabihf --host=arm-linux-gnueabihf \
|
--build=armv5tel-suse-linux-gnueabi --host=armv5tel-suse-linux-gnueabi --target=armv5tel-suse-linux-gnueabi \
|
||||||
|
%endif
|
||||||
|
%ifarch armv7l armv7hl
|
||||||
|
--with-optimize-option="-U_GLIBCXX_ATOMIC_BUILTINS" \
|
||||||
|
--disable-sjlj-exceptions \
|
||||||
|
--with-arch=armv7-a --with-tune=cortex-a9 --with-float=hard --with-fpu=vfpv3-d16 --with-fpmath=vfp3 \
|
||||||
|
%if 0%{?suse_version} >= 1220
|
||||||
|
--with-mode=thumb \
|
||||||
|
%else
|
||||||
|
--with-mode=arm \
|
||||||
|
%endif
|
||||||
|
--disable-werror --enable-checking=release \
|
||||||
|
--build=armv7hl-suse-linux-gnueabi --host=armv7hl-suse-linux-gnueabi --target=armv7hl-suse-linux-gnueabi \
|
||||||
%endif
|
%endif
|
||||||
--with-clang-resource-dir="../%{_lib}/clang/%{_release_version}" \
|
--with-clang-resource-dir="../%{_lib}/clang/%{_release_version}" \
|
||||||
--enable-debug-symbols \
|
--enable-debug-symbols \
|
||||||
@ -215,7 +265,6 @@ cd ..
|
|||||||
|
|
||||||
# Fixup libdir
|
# Fixup libdir
|
||||||
%if "%{_lib}" == "lib64"
|
%if "%{_lib}" == "lib64"
|
||||||
sed -i s,ABS_RUN_DIR/lib,ABS_RUN_DIR/lib64, %{buildroot}/%{_bindir}/llvm-config
|
|
||||||
mv %{buildroot}%{_prefix}/lib %{buildroot}%{_prefix}/lib64
|
mv %{buildroot}%{_prefix}/lib %{buildroot}%{_prefix}/lib64
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user