[packages/gcc] - added x32 to arch mix and x32/64 multilib(s)
baggins
baggins at pld-linux.org
Fri Jan 2 18:23:10 CET 2015
commit 152b6efa6d7a1ceb58ca9ba925b3deeb1570cee0
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Fri Jan 2 18:22:44 2015 +0100
- added x32 to arch mix and x32/64 multilib(s)
gcc.spec | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 96 insertions(+), 7 deletions(-)
---
diff --git a/gcc.spec b/gcc.spec
index 25b745f..c9528cc 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -65,15 +65,15 @@
%undefine with_qt
%endif
-%ifnarch %{x8664} ppc64 s390x sparc64
+%ifnarch %{x8664} x32 ppc64 s390x sparc64
%undefine with_multilib
%endif
-%ifnarch %{ix86} %{x8664} alpha arm ppc ppc64 sh sparc sparcv9 sparc64
+%ifnarch %{ix86} %{x8664} x32 alpha arm ppc ppc64 sh sparc sparcv9 sparc64
%undefine with_atomic
%endif
-%ifnarch %{ix86} %{x8664} ppc ppc64 sparc sparcv9 sparc64
+%ifnarch %{ix86} %{x8664} x32 ppc ppc64 sparc sparcv9 sparc64
%undefine with_asan
%endif
@@ -117,6 +117,7 @@ Patch0: %{name}-info.patch
Patch1: %{name}-cloog.patch
Patch2: %{name}-nodebug.patch
Patch3: %{name}-ada-link.patch
+Patch4: %{name}-ada-x32.patch
Patch6: %{name}-pr61164.patch
Patch7: %{name}-libjava-multilib.patch
@@ -146,7 +147,14 @@ BuildRequires: glibc-devel >= 6:2.4-1
%if %{with multilib}
BuildRequires: gcc(multilib-32)
%ifarch %{x8664}
+BuildRequires: gcc(multilib-x32)
BuildRequires: glibc-devel(ix86)
+BuildRequires: glibc-devel(x32)
+%endif
+%ifarch x32
+BuildRequires: gcc(multilib-64)
+BuildRequires: glibc-devel(ix86)
+BuildRequires: glibc-devel(x86_64)
%endif
%ifarch ppc64
BuildRequires: glibc-devel(ppc)
@@ -220,6 +228,20 @@ BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _slibdir32 /lib
%define _libdir32 /usr/lib
%define _pkgconfigdir32 %{_libdir32}/pkgconfig
+# x32 environment on x86-64
+%ifarch %{x8664}
+%define multilib2 x32
+%define _slibdirm2 /libx32
+%define _libdirm2 /usr/libx32
+%define _pkgconfigdirm2 %{_libdirm2}/pkgconfig
+%endif
+# 64-bit environment on x32
+%ifarch x32
+%define multilib2 64
+%define _slibdirm2 /lib64
+%define _libdirm2 /usr/lib64
+%define _pkgconfigdirm2 %{_libdir64}/pkgconfig
+%endif
%endif
%define gcclibdir %{_libdir}/gcc/%{_target_platform}/%{version}
%define gcjdbexecdir gcj-%{version}-%{gcj_soname_ver}
@@ -1817,6 +1839,7 @@ Ten pakiet zawiera 32-bitową wersję statycznej biblioteki GNU Atomic.
%patch1 -p1
%patch2 -p1
%patch3 -p1
+%patch4 -p1
%patch6 -p1
%patch7 -p0
@@ -1872,7 +1895,7 @@ TEXCONFIG=false \
--disable-build-poststage1-with-cxx \
--enable-c99 \
--enable-checking=release \
-%ifarch %{ix86} %{x8664}
+%ifarch %{ix86} %{x8664} x32
--disable-cld \
%endif
%{?with_fortran:--enable-cmath} \
@@ -1886,6 +1909,12 @@ TEXCONFIG=false \
--enable-linker-build-id \
--enable-linux-futex \
--enable-long-long \
+%ifarch x32
+ --with-abi=x32 \
+%endif
+%ifarch %{x8664} x32
+ %{?with_multilib:--with-multilib-list=m32,m64,mx32} \
+%endif
%{!?with_multilib:--disable-multilib} \
--enable-nls \
--enable-lto \
@@ -1897,7 +1926,7 @@ TEXCONFIG=false \
--enable-threads=posix \
--disable-werror \
--with-cloog \
-%ifarch %{x8664}
+%ifarch %{x8664} x32
--with-arch-32=x86-64 \
%endif
%ifarch sparc64
@@ -2038,6 +2067,20 @@ ln -sf %{_slibdir32}/$libitm $RPM_BUILD_ROOT%{_libdir32}/libitm.so
libgomp=$(cd $RPM_BUILD_ROOT%{_libdir32}; echo libgomp.so.*.*.*)
mv $RPM_BUILD_ROOT%{_libdir32}/libgomp.so.* $RPM_BUILD_ROOT%{_slibdir32}
ln -sf %{_slibdir32}/$libgomp $RPM_BUILD_ROOT%{_libdir32}/libgomp.so
+
+%ifarch %{x8664} x32
+libssp=$(cd $RPM_BUILD_ROOT%{_libdirm2}; echo libssp.so.*.*.*)
+mv $RPM_BUILD_ROOT%{_libdirm2}/libssp.so.* $RPM_BUILD_ROOT%{_slibdirm2}
+ln -sf %{_slibdirm2}/$libssp $RPM_BUILD_ROOT%{_libdirm2}/libssp.so
+
+libitm=$(cd $RPM_BUILD_ROOT%{_libdirm2}; echo libitm.so.*.*.*)
+mv $RPM_BUILD_ROOT%{_libdirm2}/libitm.so.* $RPM_BUILD_ROOT%{_slibdirm2}
+ln -sf %{_slibdirm2}/$libitm $RPM_BUILD_ROOT%{_libdirm2}/libitm.so
+
+libgomp=$(cd $RPM_BUILD_ROOT%{_libdirm2}; echo libgomp.so.*.*.*)
+mv $RPM_BUILD_ROOT%{_libdirm2}/libgomp.so.* $RPM_BUILD_ROOT%{_slibdirm2}
+ln -sf %{_slibdirm2}/$libgomp $RPM_BUILD_ROOT%{_libdirm2}/libgomp.so
+%endif
%endif
%if %{with fortran}
@@ -2064,6 +2107,17 @@ ln -sf libgnat-%{major_ver}.so.1 $RPM_BUILD_ROOT%{_libdir32}/libgnat-%{major_ver
ln -sf libgnarl-%{major_ver}.so.1 $RPM_BUILD_ROOT%{_libdir32}/libgnarl-%{major_ver}.so
ln -sf libgnat-%{major_ver}.so $RPM_BUILD_ROOT%{_libdir32}/libgnat.so
ln -sf libgnarl-%{major_ver}.so $RPM_BUILD_ROOT%{_libdir32}/libgnarl.so
+
+%ifarch %{x8664} x32
+mv -f $RPM_BUILD_ROOT%{gcclibdir}/%{multilib_other}/adalib/*.so.1 \
+ $RPM_BUILD_ROOT%{_libdirm2}
+# check if symlink to be made is valid
+test -f $RPM_BUILD_ROOT%{_libdirm2}/libgnat-%{major_ver}.so.1
+ln -sf libgnat-%{major_ver}.so.1 $RPM_BUILD_ROOT%{_libdirm2}/libgnat-%{major_ver}.so
+ln -sf libgnarl-%{major_ver}.so.1 $RPM_BUILD_ROOT%{_libdirm2}/libgnarl-%{major_ver}.so
+ln -sf libgnat-%{major_ver}.so $RPM_BUILD_ROOT%{_libdirm2}/libgnat.so
+ln -sf libgnarl-%{major_ver}.so $RPM_BUILD_ROOT%{_libdirm2}/libgnarl.so
+%endif
%endif
%endif
@@ -2090,6 +2144,14 @@ sed -e 's, at prefix@,%{_prefix},
s, at exec_prefix@,%{_exec_prefix},
s, at libdir@,%{_libdir32},
s, at gcclibdir@,%{gcclibdir},' %{SOURCE3} >$RPM_BUILD_ROOT%{_pkgconfigdir32}/libffi.pc
+%ifarch %{x8664} x32
+[ ! -f $RPM_BUILD_ROOT%{_pkgconfigdirm2}/libffi.pc ] || exit 1
+install -d $RPM_BUILD_ROOT%{_pkgconfigdirm2}
+sed -e 's, at prefix@,%{_prefix},
+ s, at exec_prefix@,%{_exec_prefix},
+ s, at libdir@,%{_libdirm2},
+ s, at gcclibdir@,%{gcclibdir},' %{SOURCE3} >$RPM_BUILD_ROOT%{_pkgconfigdirm2}/libffi.pc
+%endif
%endif
%endif
@@ -2138,6 +2200,25 @@ do
%{__perl} %{SOURCE1} $RPM_BUILD_ROOT%{_libdir32}/$f %{_libdir32} > $RPM_BUILD_ROOT%{_libdir32}/$f.fixed
mv $RPM_BUILD_ROOT%{_libdir32}/$f{.fixed,}
done
+%ifarch %{x8664} x32
+for f in libitm.la libssp.la libssp_nonshared.la \
+ %{?with_cxx:libstdc++.la libsupc++.la} \
+ %{?with_fortran:libgfortran.la libquadmath.la} \
+ %{?with_gomp:libgomp.la} \
+ %{?with_asan:libasan.la} \
+%ifarch %{x8664}
+ liblsan.la \
+ libtsan.la \
+%endif
+ libubsan.la \
+ %{?with_atomic:libatomic.la} \
+ %{?with_java:%{?with_gcc_libffi:libffi.la}} \
+ %{?with_objc:libobjc.la};
+do
+ %{__perl} %{SOURCE1} $RPM_BUILD_ROOT%{_libdirm2}/$f %{_libdirm2} > $RPM_BUILD_ROOT%{_libdirm2}/$f.fixed
+ mv $RPM_BUILD_ROOT%{_libdirm2}/$f{.fixed,}
+done
+%endif
%endif
cp -p $RPM_BUILD_ROOT%{gcclibdir}/install-tools/include/*.h $RPM_BUILD_ROOT%{gcclibdir}/include
@@ -2149,7 +2230,7 @@ cp -p $RPM_BUILD_ROOT%{gcclibdir}/include-fixed/syslimits.h $RPM_BUILD_ROOT%{gcc
%{__rm} $RPM_BUILD_ROOT%{gcclibdir}/liblto_plugin.la
%if %{with python}
-for LIB in lib lib64; do
+for LIB in lib lib64 libx32; do
LIBPATH="$RPM_BUILD_ROOT%{_datadir}/gdb/auto-load%{_prefix}/$LIB"
install -d $LIBPATH
# basename is being run only for the native (non-biarch) file.
@@ -2177,6 +2258,9 @@ mv $RPM_BUILD_ROOT%{_datadir}/gcc-%{version}/python/libjava $RPM_BUILD_ROOT%{py_
%{__rm} $RPM_BUILD_ROOT%{_libdir}/libstdc++.so.*-gdb.py
%if %{with multilib}
%{__rm} $RPM_BUILD_ROOT%{_libdir32}/libstdc++.so.*-gdb.py
+%ifarch %{x8664} x32
+%{__rm} $RPM_BUILD_ROOT%{_libdirm2}/libstdc++.so.*-gdb.py
+%endif
%endif
%find_lang gcc
@@ -2193,7 +2277,12 @@ cp -p libstdc++-v3/include/precompiled/* $RPM_BUILD_ROOT%{_includedir}
# is anything using this?
%{__rm} $RPM_BUILD_ROOT%{_libdir}/libvtv*
-%{?with_multilib:%{__rm} $RPM_BUILD_ROOT%{_libdir32}/libvtv*}
+%if %{with multilib}
+%{__rm} $RPM_BUILD_ROOT%{_libdir32}/libvtv*
+%ifarch %{x8664} x32
+%{__rm} $RPM_BUILD_ROOT%{_libdirm2}/libvtv*
+%endif
+%endif
# svn snap doesn't contain (release does) below files,
# so let's create dummy entries to satisfy %%files.
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/gcc.git/commitdiff/152b6efa6d7a1ceb58ca9ba925b3deeb1570cee0
More information about the pld-cvs-commit
mailing list