File libgcj33.spec of Package gcc33
#
# spec file for package libgcj33
#
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# icecream 0
%define building_libjava 1
%define run_tests 1
#
# spec file for package gcc33 (Version 3.3.3)
#
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://www.suse.de/feedback/
#
# Run the testsuite if there's a file named RUN_TESTS in the source
%if 0%{!?run_tests:1}
%define run_tests %(test -f %_sourcedir/RUN_TESTS && echo 1 || echo 0)
%endif
# Ada currently fails to build on a few platforms, enable it only
# on those that work
# Note that AdaCore only supports %ix86, x86_64 and ia64
%ifarch %ix86 x86_64 ia64 hppa ppc s390
%define build_ada 0
%else
# alpha ppc64 s390x
%define build_ada 0
%endif
# We don't want to build java on arm
%ifarch mips %arm
%define build_java 0
%define build_libjava 0
%else
%define build_java 0
#%define build_libjava 0%{?building_libjava:1}
%define build_libjava 0
%endif
%define build_fortran 1
%define build_objcp 0
%if 0%{?build_for_base:1}
%define build_ada 0
%define build_java 0
%define build_libjava 0
%define build_fortran 0
%define build_objcp 0
%define run_tests 0
%endif
Name: libgcj33
BuildRequires: bison
BuildRequires: flex
BuildRequires: gettext-devel
BuildRequires: glibc-devel-32bit
BuildRequires: zlib-devel
ExcludeArch: %arm
%if %{build_ada}
BuildRequires: gcc-ada
%endif
%if %{build_libjava}
BuildRequires: gtk2-devel
BuildRequires: libart_lgpl-devel
BuildRequires: update-desktop-files
%endif
%if %{build_fortran}
#BuildRequires: mpfr-devel
%endif
%ifarch ia64
BuildRequires: libunwind-devel
%endif
%if %{run_tests}
BuildRequires: dejagnu
BuildRequires: expect
%endif
# Define version number of libgcc_s
%ifarch hppa
%define libgcc_s 4
%else
%define libgcc_s 1
%endif
%ifarch ppc
# We support building the nof libraries, but don't want this in the
# regular rpms
%define build_nof 0
%else
%define build_nof 0
%endif
%define separate_bi32 0
%define separate_bi64 0
%ifarch ppc
# Beware, this does _not_ separate libgcj, as for that one multilibing
# is inactive for the time being
%define separate_bi64 1
%endif
%ifarch x86_64 s390x
%define separate_bi32 1
%endif
# Define two macros to trigger -32bit or -64bit package variants
%define separate_biarch 0
%if %{separate_bi32}
%define separate_biarch 1
%define separate_biarch_suffix -32bit
%endif
%if %{separate_bi64}
%define separate_biarch 1
%define separate_biarch_suffix -64bit
%endif
%ifarch x86_64 ia64 s390x alpha ppc64
# 64-bit is primary build target
%define build_primary_64bit 1
%else
%define build_primary_64bit 0
%endif
%define biarch_libjava 0
# COMMON-BEGIN
%define biarch_targets x86_64 s390x powerpc64 powerpc
Url: http://gcc.gnu.org/
Version: 3.3.3
Release: 0
%define gcc_version %(echo %version | sed 's/_.*//')
%define snapshot_date %(echo %version | sed 's/[34]\.[0-4]\.[0-6]//' | sed 's/_/-/')
%define binsuffix -3.3
%define versionspecificlibs 0
# COMMON-END
%if 0%{?!building_libjava:1}
Requires: binutils glibc-devel
Requires: cpp33 = %{version}-%{release}
Requires: libgcc%{libgcc_s} >= %{version}-%{release}
%endif
# COMMON-BEGIN
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source: gcc-%{gcc_version}%{snapshot_date}.tar.bz2
Source1: change_spec
Source2: gcc33-rpmlintrc
Source3: baselibs.conf
Patch0: gcc-3.3.3-hammer.patch.bz2
Patch1: gcc-noalias-warn.diff
Patch2: copy-frame-related.diff
Patch3: head-tail.patch
Patch4: bug-reporting.patch
Patch5: libgc.patch
Patch6: ia64intrin.patch
Patch7: ffi.patch
Patch8: string-allocator.patch
Patch9: ia64-unwind.patch
Patch11: compact-dwarf2.patch
Patch16: c99-double-inline.diff
Patch17: c99numbers.diff
Patch19: pathlength.patch
Patch21: gcse-volatile.patch
Patch22: swig-alias.patch
Patch32: aliasing.diff
Patch33: aliasing12.diff
Patch34: aliasing3.diff
Patch37: cse-mem-expr.patch
Patch42: emit-note.patch
Patch47: regparam.patch.gz
Patch48: unwind-ia64.patch
Patch49: ia64-reorg.patch
Patch50: fix-var-tracking.diff
Patch51: istream-perf.diff
Patch52: lsb2-symbols.diff
# Ada patches
Patch53: gcc32-ada-link.patch
Patch54: gcc32-ada-addr2line.patch
# c++ patches
# PPC specific
Patch61: gcc-3.3-ppc64.patch
# Do not merge this patch into the Alan M patch, it will just get lost later.
# If you think it is useless, try building "fam" and watch libtool break.
Patch63: ppc-nostartfileprefix.patch
Patch64: ppc-nof.patch
Patch65: altivec.patch
Patch66: altivec-to-head.diff.gz
Patch67: suse44478.diff
Patch68: suse50394.diff
Patch69: nov74176.diff
Patch70: unwind-ia64-2.patch
Patch71: nov65883.diff
Patch72: ia64-trap-int-div.diff
Patch73: nov102315.diff
Patch74: nov132124.diff
Patch75: nov148558.diff
Patch76: nov141311.diff
Patch77: pr14348.patch
Patch78: nov216246-1.diff
Patch79: nov161594.diff
Patch80: nov166448.diff
Patch81: nov191825.diff
Patch82: nov194478.diff
Patch83: nov201157.diff
Patch84: libstdc++-config.diff
Patch85: gcc44-fixes.patch
Patch86: bison-errors.patch
Patch87: testsuite-hooks.patch
Summary: Java Runtime Library for gcc
License: GPL-2.0-with-classpath-exception
Group: System/Libraries
Provides: libgcj = %{version}-%{release}
Obsoletes: libgcj
%description
This library is needed if you want to use the GNU Java compiler, gcj.
Source code for this package is in gcc.
%package -n libgcj33-devel
Summary: Include Files and Libraries mandatory for Development.
License: GPL-2.0-with-classpath-exception
Group: Development/Libraries/Java
Requires: libstdc++33-devel = %{version}-%{release}
Requires: libgcj >= %{version}-%{release}
Requires: gtk2-devel
Requires: libart_lgpl-devel
Requires: glibc-devel
Requires: zlib-devel
%ifarch ia64
Requires: libunwind-devel
%endif
%description -n libgcj33-devel
This package contains all necessary include files and libraries needed
to develop applications that require these.
%package -n gcc33-gij
Summary: Java Bytecode Interpreter for gcc
License: GPL-2.0-with-classpath-exception
Group: Development/Libraries/Java
Requires: libgcj >= %{version}-%{release}
%description -n gcc33-gij
This package contains the java bytecode interpreter gij and related tools.
# PACKAGE-BEGIN
# PACKAGE-BEGIN
%package -n libffi33
Summary: Foreign Function Interface library
License: BSD-3-Clause
Group: Development/Languages/C and C++
Provides: g-wrap:/usr/lib/libffi.so.4
%description -n libffi33
A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language.
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
%package -n libffi33-32bit
Summary: Foreign Function Interface library
License: BSD-3-Clause
Group: Development/Languages/C and C++
Provides: g-wrap:/usr/lib/libffi.so.4
%description -n libffi33-32bit
A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language.
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
%package -n libffi33-64bit
Summary: Foreign Function Interface library
License: BSD-3-Clause
Group: Development/Languages/C and C++
Provides: g-wrap:/usr/lib/libffi.so.4
%description -n libffi33-64bit
A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language.
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
%package -n libffi33-devel
Summary: Foreign Function Interface library development files
License: GPL-2.0-with-classpath-exception
Group: Development/Languages/C and C++
Requires: libffi33 >= %{version}-%{release}
%description -n libffi33-devel
A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language.
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
%package -n libffi33-devel-32bit
Summary: Foreign Function Interface library development files
License: GPL-2.0-with-classpath-exception
Group: Development/Languages/C and C++
Requires: libffi33-32bit >= %{version}-%{release}
%description -n libffi33-devel-32bit
A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language.
# PACKAGE-END
# PACKAGE-BEGIN
# PACKAGE-BEGIN
%package -n libffi33-devel-64bit
Summary: Foreign Function Interface library development files
License: GPL-2.0-with-classpath-exception
Group: Development/Languages/C and C++
Requires: libffi33-64bit >= %{version}-%{release}
%description -n libffi33-devel-64bit
A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language.
# PACKAGE-END
%package -n gcc33-testresults
Summary: Testsuite results
License: GPL-2.0-with-classpath-exception
Group: Development/Languages/C and C++
%description -n gcc33-testresults
Results from running the gcc and target library testsuites.
# COMMON-BEGIN
# Define the canonical target and host architecture
# %gcc_target_arch is supposed to be the full target triple
# %TARGET_ARCH is the canonicalized CPU part
# %CONFIGURE_TARGET is the target triple used for --target=
%if 0%{?gcc_target_arch:1}
%define CONFIGURE_TARGET %{gcc_target_arch}
%define TARGET_ARCH %(echo %{gcc_target_arch} | cut -d - -f 1 | sed -e "s/i.86/i586/;s/ppc/powerpc/")
%if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "powerpc"
%define CONFIGURE_TARGET powerpc64-linux
%endif
%else
%define TARGET_ARCH %(echo %{_target_cpu} | sed -e "s/i.86/i586/;s/ppc/powerpc/")
%endif
%define HOST_ARCH %(echo %{_host_cpu} | sed -e "s/i.86/i586/;s/ppc/powerpc/")
%define biarch %(case " %{biarch_targets} " in (*" %{TARGET_ARCH} "*) echo 1;; (*) echo 0;; esac)
%ifarch ppc
%define GCCDIST powerpc64-suse-linux
%else
%define GCCDIST %{HOST_ARCH}-suse-linux
%endif
%define libsubdir %{_libdir}/gcc-lib/%{GCCDIST}/3.3.3-hammer
%define gxxinclude %{_prefix}/include/c++/%{gcc_version}
# COMMON-END
# Versionspecific directories
%define versmainlibdir %{libsubdir}
%define versmainlibdirbi32 %{libsubdir}/32
%define versmainlibdirbi64 %{libsubdir}/64
%ifarch ppc
%define versnoflibdir %{libsubdir}/nof
%define versmainlibdirbi32 %{libsubdir}
%define versmainlibdirbi64 %{libsubdir}/64
%endif
%ifarch ppc64
%define versnoflibdir %{libsubdir}/32/nof
%endif
# If we use versionspecific libs, they end in libsubdir
%if %{versionspecificlibs}
%define mainlibdir %{libsubdir}
%define mainlibdirbi32 %{libsubdir}/32
%define mainlibdirbi64 %{libsubdir}/64
%ifarch ppc
%define noflibdir %{libsubdir}/nof
%define mainlibdirbi32 %{libsubdir}
%define mainlibdirbi64 %{libsubdir}/64
%endif
%ifarch ppc64
%define noflibdir %{libsubdir}/32/nof
%endif
%else
%define mainlibdir %{_libdir}
%define mainlibdirbi32 %{_prefix}/lib
%define mainlibdirbi64 %{_prefix}/lib64
%define noflibdir %{_prefix}/lib/nof
%endif
# Now define a few macros that make it easy to package libs and
# related files just to the right package, without caring for the
# exact path the files are in.
# %mainlib package X from all dirs that belong to the main package
# %biarchlib package X from all dirs that belong to the -32/64bit package
# by default, nof libs go where the 32bit libs go.
%if %{build_nof}
%define mainlib() %{mainlibdir}/%1\
%{noflibdir}/%1\
%{nil}
%else
%define mainlib() %{mainlibdir}/%1\
%{nil}
%endif
%define biarchlib() %{nil}
%if %{biarch}
%if %{build_primary_64bit}
%if !%{separate_bi32}
%if %{build_nof}
%define mainlib() %{mainlibdir}/%1\
%{mainlibdirbi32}/%1\
%{noflibdir}/%1\
%{nil}
%else
%define mainlib() %{mainlibdir}/%1\
%{mainlibdirbi32}/%1\
%{nil}
%endif
%else
%if %{build_nof}
%define biarchlib() %{mainlibdirbi32}/%1\
%{noflibdir}/%1\
%{nil}
%define mainlib() %{mainlibdir}/%1\
%{nil}
%else
%define biarchlib() %{mainlibdirbi32}/%1\
%{nil}
%endif
%endif
%else
%if !%{separate_bi64}
%if %{build_nof}
%define mainlib() %{mainlibdir}/%1\
%{mainlibdirbi64}/%1\
%{noflibdir}/%1\
%{nil}
%else
%define mainlib() %{mainlibdir}/%1\
%{mainlibdirbi64}/%1\
%{nil}
%endif
%else
%define biarchlib() %{mainlibdirbi64}/%1\
%{nil}
%endif
%endif
%endif
%if %{build_nof}
%define versmainlib() %{versmainlibdir}/%1\
%{versnoflibdir}/%1\
%{nil}
%else
%define versmainlib() %{versmainlibdir}/%1\
%{nil}
%endif
%define versbiarchlib() %{nil}
%if %{biarch}
%if %{build_primary_64bit}
%if !%{separate_bi32}
%if %{build_nof}
%define versmainlib() %{versmainlibdir}/%1\
%{versmainlibdirbi32}/%1\
%{versnoflibdir}/%1\
%{nil}
%else
%define versmainlib() %{versmainlibdir}/%1\
%{versmainlibdirbi32}/%1\
%{nil}
%endif
%else
%if %{build_nof}
%define versbiarchlib() %{versmainlibdirbi32}/%1\
%{versnoflibdir}/%1\
%{nil}
%define versmainlib() %{versmainlibdir}/%1\
%{nil}
%else
%define versbiarchlib() %{versmainlibdirbi32}/%1\
%{nil}
%endif
%endif
%else
%if !%{separate_bi64}
%if %{build_nof}
%define versmainlib() %{versmainlibdir}/%1\
%{versmainlibdirbi64}/%1\
%{versnoflibdir}/%1\
%{nil}
%else
%define versmainlib() %{versmainlibdir}/%1\
%{versmainlibdirbi64}/%1\
%{nil}
%endif
%else
%define versbiarchlib() %{versmainlibdirbi64}/%1\
%{nil}
%endif
%endif
%endif
# COMMON-BEGIN
%prep
%setup -q -n gcc-%{gcc_version}%{snapshot_date}
%patch0
%patch1
%patch2
%patch3
%patch4
%patch5
%patch6
%patch7
%patch8
%patch9 -p1
%patch11
%patch16
%patch17
%patch19
%patch21
%patch22
%patch32
%patch33
%patch34
%patch37
%patch42
%patch47
%patch48
%patch49
%patch50
%patch51
%patch52
%patch53
%patch54
#%ifarch ppc ppc64
%patch61 -p1
#%patch63 -p1
#%endif
%patch64 -p1
%patch65 -p1
%patch66
%patch67
%patch68
%patch69
%patch70
%patch71 -p1
%patch72
%patch73
%ifarch s390 s390x
%patch74 -p1
%endif
%patch75
%patch76 -p1
%patch77 -p1
%patch78 -p1
%patch79
%patch80
%patch81 -p1
%patch82 -p1
%patch83 -p1
%patch84
%patch85
%patch86
%patch87
%build
# Avoid conflict with commercial libjawt.so
sed -i -e 's/libjawt/libgcjawt/g' libjava/Makefile.{am,in}
# Avoid rebuilding of generated files
contrib/gcc_update --touch
rm -rf obj-%{GCCDIST}
mkdir obj-%{GCCDIST}
cd obj-%{GCCDIST}
RPM_OPT_FLAGS="$RPM_OPT_FLAGS -U_FORTIFY_SOURCE"
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-fno-rtti//g' -e 's/-fno-exceptions//g' -e 's/-Wmissing-format-attribute//g' -e 's/-fstack-protector//g' -e 's/-funwind-tables//g' -e 's/-fasynchronous-unwind-tables//g'`
%ifarch %ix86
# -mcpu is superceded by -mtune but -mtune is not supported by
# our bootstrap compiler. -mcpu gives a warning that stops
# the build process, so remove it for now.
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-mcpu=i.86//g'`
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-mtune=i.86//g'`
%endif
%ifarch s390 s390x
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-fsigned-char//g'`
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-O1/-O2/g'`
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-march=z9-109//g'`
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-mtune=z10//g'`
%endif
%if 0%{?gcc_target_arch:1} && 0%{!?gcc_icecream:1}
# Kill all -march/tune/cpu because that screws building the target libs
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-m\(arch\|tune\|cpu\)=[^ ]*//g'`
%endif
# Replace 2 spaces by one finally
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/ / /g'`
languages=c,c++,objc
%if %{build_fortran}
languages=$languages,f77
%endif
%if %{build_objcp}
languages=$languages,obj-c++
%endif
%if %{build_java}
languages=$languages,java
%endif
%if %{build_ada}
languages=$languages,ada
%endif
# override for cross targets until we have build_objc
%if 0%{?gcc_target_arch:1}
languages=c,c++
%endif
J=%{?jobs:%jobs}
if test -z "$J"; then
J=$(getconf _NPROCESSORS_CONF)
JL=$(($J * 2))
else
test 1 -gt "$J" && J=1
JL=$(($(getconf _NPROCESSORS_CONF)*2))
fi
if test "$J" == "0"; then
J=1
fi
if test "$JL" == "0"; then
JL=1
fi
PARALLEL="-j$J -l$JL"
# we don't want some miscompiles in the testsuite, or some fault in
# the compiler to kill the machine. Hence we limit the amount of memory
# by the physical RAM plus half of swap
#MEM=$(free -m | awk '/^Mem:/ {print $2}')
#SWAP=$(free -m | awk '/^Swap:/ {print $2}')
#ulimit -v $(((MEM + SWAP/2)*1024))
# In general we want to ship release checking enabled compilers
# and run BETA with checking enabled.
#ENABLE_CHECKING=--enable-checking
ENABLE_CHECKING="--disable-checking"
%if "%{name}" != "gcc33"
export PATH=/opt/cross/bin:$PATH
%endif
# Work around tail/head -1 changes
export _POSIX2_VERSION=199209
# configure tries to parse include/features.h to detect
# if glibc supports SSP. When cross compiling we would need
# to install a cross glibc, which we don't, or make the whole
# thing point to the native glibc, which is in /, hence the
# --with-sysroot=/
CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" XCFLAGS="$RPM_OPT_FLAGS" \
TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
../configure \
%if 0%{?gcc_target_arch:1} && 0%{!?gcc_icecream:1}
%else
--enable-threads=posix \
%endif
--prefix=%{_prefix} --with-local-prefix=/usr/local \
--infodir=%{_infodir} --mandir=%{_mandir} \
--libdir=%{_libdir} --libexecdir=%{_libdir} \
--enable-languages=$languages $ENABLE_CHECKING \
--with-gxx-include-dir=/usr/include/c++/%{gcc_version} \
--enable-ssp --disable-libssp \
%if !%{build_libjava}
--disable-libgcj \
%else
--enable-java-awt=gtk --enable-gtk-cairo \
%if !%{biarch_libjava}
--disable-libjava-multilib \
%endif
%endif
--with-slibdir=/%{_lib} --with-system-zlib \
--enable-shared --enable-__cxa_atexit \
--enable-libstdcxx-allocator=new \
%if 0%{?gcc_target_arch:1}
%if 0%{?gcc_icecream:1}
--with-as=/opt/cross/%{TARGET_ARCH}-linux/bin/as \
--with-ld=/opt/cross/%{TARGET_ARCH}-linux/bin/ld \
--with-sysroot=/ \
%endif
--disable-nls --disable-shared \
--target=%{CONFIGURE_TARGET} \
%else
--program-suffix=%{binsuffix} \
--enable-version-specific-runtime-libs \
%ifarch ia64
--with-system-libunwind \
%else
--without-system-libunwind \
%endif
%endif
%if "%{TARGET_ARCH}" == "powerpc"
--with-cpu=default32 \
--enable-secureplt \
--with-long-double-128 \
--enable-biarch \
%endif
%if "%{TARGET_ARCH}" == "powerpc64"
--enable-secureplt \
--with-long-double-128 \
--enable-biarch \
%endif
%if "%{TARGET_ARCH}" == "i586"
--with-cpu=generic \
%endif
%if "%{TARGET_ARCH}" == "x86_64"
--with-cpu=generic \
%endif
%if "%{TARGET_ARCH}" == "s390"
--with-tune=z9-109 --with-arch=z900 \
--with-long-double-128 \
%endif
%if "%{TARGET_ARCH}" == "s390x"
--with-tune=z9-109 --with-arch=z900 \
--with-long-double-128 \
%endif
--host=%{GCCDIST}
# COMMON-END
# Only run profiled bootstrap on archs where it works
#%ifarch %ix86 x86_64 ppc ppc64 ia64
#make profiledbootstrap BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
#%else
make bootstrap-lean BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
#%endif
#make -C gcc proto
make info
%if %{run_tests}
echo "Run testsuite"
make -k check $PARALLEL || true
(make -C %{GCCDIST}/libstdc++-v3 check-abi || true)
%endif
%install
rm -rf $RPM_BUILD_ROOT
cd obj-%{GCCDIST}
# Work around tail/head -1 changes
export _POSIX2_VERSION=199209
export LIBRARY_PATH=$RPM_BUILD_ROOT%{libsubdir}:$RPM_BUILD_ROOT%{mainlibdirbi32}:$RPM_BUILD_ROOT%{mainlibdirbi64}
%if 0%{?building_libjava:1}
%if %{build_libjava}
make -C %{GCCDIST}/libjava install DESTDIR=$RPM_BUILD_ROOT
make -C %{GCCDIST}/libffi install DESTDIR=$RPM_BUILD_ROOT
make -C gcc java.install-man DESTDIR=$RPM_BUILD_ROOT
%endif
%else
make install DESTDIR=$RPM_BUILD_ROOT
%endif
mkdir -p $RPM_BUILD_ROOT%{_libdir}
%if 0%{?!building_libjava:1}
# Move wrongly installed fortran stuff
mv $RPM_BUILD_ROOT%{libsubdir}/../lib* $RPM_BUILD_ROOT%{libsubdir}/
%if %{biarch}
%if %{build_primary_64bit}
mv $RPM_BUILD_ROOT%{libsubdir}/../32/lib* $RPM_BUILD_ROOT%{libsubdir}/32/
%else
mv $RPM_BUILD_ROOT%{libsubdir}/../64/lib* $RPM_BUILD_ROOT%{libsubdir}/64/
%endif
%endif
%endif
# Move manpages that were not properly versioned
%if 0%{?!building_libjava:1}
mv $RPM_BUILD_ROOT%{_mandir}/man1/gcov.1 $RPM_BUILD_ROOT%{_mandir}/man1/gcov%{binsuffix}.1
mv $RPM_BUILD_ROOT%{_mandir}/man1/cpp.1 $RPM_BUILD_ROOT%{_mandir}/man1/cpp%{binsuffix}.1
%endif
%if %{build_java}
for i in gcjh gij jcf-dump jv-convert jv-scan rmic rmiregistry; do
mv $RPM_BUILD_ROOT%{_mandir}/man1/$i.1 $RPM_BUILD_ROOT%{_mandir}/man1/$i%{binsuffix}.1
done
%endif
# Remove some useless .la files
for lib in libobjc libg2c libfrtbegin \
libstdc++ libsupc++; do
rm -f $RPM_BUILD_ROOT%{versmainlibdir}/$lib.la
%if %{biarch}
%if %{build_primary_64bit}
rm -f $RPM_BUILD_ROOT%{versmainlibdirbi32}/$lib.la
%else
rm -f $RPM_BUILD_ROOT%{versmainlibdirbi64}/$lib.la
%endif
%endif
done
%if %{biarch}
%if %{build_primary_64bit}
mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib
%else
mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib64
%endif
%endif
# Move shared libs around
%if %{versionspecificlibs}
%else
# libjava possibly breaks, ada is broken
for libname in \
%if %{build_libjava}
libgcj libgij libgcjawt lib-gnu-java-awt-peer-gtk \
%endif
; do
mv -f $RPM_BUILD_ROOT%{versmainlibdir}/$libname.* $RPM_BUILD_ROOT%{mainlibdir}/
%if %{biarch_libjava}
%if %{build_primary_64bit}
mv -f $RPM_BUILD_ROOT%{versmainlibdirbi32}/$libname.* $RPM_BUILD_ROOT%{mainlibdirbi32}/
%else
mv -f $RPM_BUILD_ROOT%{versmainlibdirbi64}/$libname.* $RPM_BUILD_ROOT%{mainlibdirbi64}/
%endif
%endif
done
%endif
%if %{build_ada}
mv $RPM_BUILD_ROOT%{libsubdir}/adalib/lib*-*.so $RPM_BUILD_ROOT%{_libdir}
ln -sf %{_libdir}/$(cd $RPM_BUILD_ROOT%{_libdir} && echo libgnarl-*.so) $RPM_BUILD_ROOT%{libsubdir}/adalib/libgnarl.so
ln -sf %{_libdir}/$(cd $RPM_BUILD_ROOT%{_libdir} && echo libgnat-*.so) $RPM_BUILD_ROOT%{libsubdir}/adalib/libgnat.so
chmod a+x $RPM_BUILD_ROOT%{_libdir}/libgna*-*.so
%endif
#ln -sf gcc%{binsuffix} $RPM_BUILD_ROOT%{_prefix}/bin/cc%{binsuffix}
#ln -sf g++%{binsuffix} $RPM_BUILD_ROOT%{_prefix}/bin/c++%{binsuffix}
rm -f $RPM_BUILD_ROOT%{_prefix}/bin/c++%{binsuffix}
#mkdir -p $RPM_BUILD_ROOT/lib
%if %{biarch}
%if %{build_primary_64bit}
# move around some libs that end in wrong paths
pushd .
mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib
mkdir -p $RPM_BUILD_ROOT%{_libdir}/32
(cd $RPM_BUILD_ROOT%{_libdir}/32; tar cf - .) | (cd $RPM_BUILD_ROOT%{_prefix}/lib ; tar xf -)
rm -rf $RPM_BUILD_ROOT%{_libdir}/32
%if 0%{?!building_libjava:1}
ln -s %{_prefix}/lib $RPM_BUILD_ROOT%{_libdir}/32
rm -rf $RPM_BUILD_ROOT/%{_lib}/32
ln -s /lib $RPM_BUILD_ROOT/%{_lib}/32
%endif
popd
%else
# 32-bit biarch systems
# move around some libs that end in wrong paths
pushd .
mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib64
mkdir -p $RPM_BUILD_ROOT%{_libdir}/64
(cd $RPM_BUILD_ROOT%{_libdir}/64; tar cf - .) | (cd $RPM_BUILD_ROOT%{_prefix}/lib64 ; tar xf -)
rm -rf $RPM_BUILD_ROOT%{_libdir}/64
%if 0%{?!building_libjava:1}
ln -s %{_prefix}/lib $RPM_BUILD_ROOT%{_libdir}/64
%endif
popd
%endif
%endif
# Remove some crap from the .la files:
for l in `find $RPM_BUILD_ROOT -name '*.la'`; do
echo "changing $l"
sed -e '/^dependency_libs/s| -L%{_builddir}/[^ ]*||g' \
-e '/^dependency_libs/s| -L/usr/%{GCCDIST}/bin||g' \
-e '/^dependency_libs/s|-lm \(-lm \)*|-lm |' \
-e '/^dependency_libs/s|-L[^ ]* ||g' \
%if %{biarch}
%if %{build_primary_64bit}
-e '/^libdir/s|%{_libdir}/32|%{_prefix}/lib|' \
-e '/^libdir/s|lib64/\.\./||' \
%else
-e '/^libdir/s|%{_libdir}/64|%{_prefix}/lib64|' \
%endif
%endif
< $l > $l.new
mv $l.new $l
done
%if %{run_tests}
mkdir ../testresults
cp `find . -name "*.sum"` ../testresults/
cp `find . -name "*.log" \! -name "config.log" |grep -v 'acats/tests' ` ../testresults/
%endif
# Find C++ and Java headers
if test -d $RPM_BUILD_ROOT%{_prefix}/include/c++; then
find $RPM_BUILD_ROOT%{_prefix}/include/c++ \
-regex ".*/\(org\|gcj\|gnu\|java\|javax\)" -prune \
-o \( -type d -printf "%%%%dir " , \
-printf "%{_prefix}/include/c++/%%P\n" \) > ../c++-headers
fi
# Remove files that we do not need to clean up filelist
rm -f $RPM_BUILD_ROOT%{_prefix}/bin/%{GCCDIST}-*
rm -rf $RPM_BUILD_ROOT%{libsubdir}/install-tools
rm -rf $RPM_BUILD_ROOT%{libsubdir}/install-tools
rm -rf $RPM_BUILD_ROOT%{_libdir}/pkgconfig/libgcj.pc
rm -rf $RPM_BUILD_ROOT%{libsubdir}/include/root
rm -f $RPM_BUILD_ROOT%{libsubdir}/include/curses.h
rm -rf $RPM_BUILD_ROOT%{libsubdir}/include/asm-*
rm -rf $RPM_BUILD_ROOT%{libsubdir}/include/linux
rm -f $RPM_BUILD_ROOT%{libsubdir}/include/ncurses.h
rm -f $RPM_BUILD_ROOT%{libsubdir}/include/stdio.h
rm -f $RPM_BUILD_ROOT%{libsubdir}/include/zutil.h
rm -rf $RPM_BUILD_ROOT%{libsubdir}/include/X11
rm -rf $RPM_BUILD_ROOT%{libsubdir}/include/bits
rm -f $RPM_BUILD_ROOT%{libsubdir}/include/obstack.h
rm -f $RPM_BUILD_ROOT%{libsubdir}/include/spe.h
rm -rf $RPM_BUILD_ROOT%{libsubdir}/include/bits
rm -rf $RPM_BUILD_ROOT%{libsubdir}/include/sys
rm -f $RPM_BUILD_ROOT%{_infodir}/dir
rm -f $RPM_BUILD_ROOT%{_prefix}/bin/gccbug%{binsuffix}
%if %{build_libjava}
# gcj -static doesn't work properly anyway, unless using --whole-archive
# let's save the space instead.
find $RPM_BUILD_ROOT -name libgcj.a -o -name lib-gnu-java-awt-peer-gtk.a \
-o -name libgjsmalsa.a \
-o -name libgij.a -o -name libgcjawt.a | xargs rm -f
find $RPM_BUILD_ROOT -name libgcj.spec | xargs \
sed -i -e 's/lib: /&%%{static:%%eJava programs cannot be linked statically}/'
mv $RPM_BUILD_ROOT%{libsubdir}/include/libffi/ffitarget.h $RPM_BUILD_ROOT%{_prefix}/include/
rm -r $RPM_BUILD_ROOT%{libsubdir}/include/libffi
%endif
%if %{build_java}
%if !%{build_libjava}
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/gcj-dbtool%{binsuffix}.1
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/gij%{binsuffix}.1
%if 0%{?building_libjava:1}
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/rmic%{binsuffix}.1
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/rmiregistry%{binsuffix}.1
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/jcf-dump%{binsuffix}.1
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/jv-convert%{binsuffix}.1
%endif
%endif
# fastjar is separate now
rm -f $RPM_BUILD_ROOT%{_prefix}/bin/fastjar%{binsuffix}
rm -f $RPM_BUILD_ROOT%{_prefix}/bin/grepjar%{binsuffix}
rm -f $RPM_BUILD_ROOT%{_infodir}/fastjar.info*
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/fastjar%{binsuffix}.1
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/grepjar%{binsuffix}.1
%endif
rm -f $RPM_BUILD_ROOT%{_mandir}/man7/fsf-funding.7
rm -f $RPM_BUILD_ROOT%{_mandir}/man7/gfdl.7
rm -f $RPM_BUILD_ROOT%{_mandir}/man7/gpl.7
rm -f $RPM_BUILD_ROOT%{_libdir}/libiberty.a
%if %{build_nof}
rm -f $RPM_BUILD_ROOT%{_prefix}/lib/nof/libiberty.a
%endif
%if %{biarch}
%if %{build_primary_64bit}
rm -f $RPM_BUILD_ROOT%{_prefix}/lib/libiberty.a
%else
rm -f $RPM_BUILD_ROOT%{_prefix}/lib64/libiberty.a
%endif
%endif
# For building libjava only we need to delete other manpages
%if 0%{?building_libjava:1}
rm -f $RPM_BUILD_ROOT%{_prefix}/bin/addr2name.awk%{binsuffix}
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/gcj%{binsuffix}.1
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/gcjh%{binsuffix}.1
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/jv-scan%{binsuffix}.1
%endif
# Delete some files...
%if %{versionspecificlibs}
%if %{build_libjava}
rm $RPM_BUILD_ROOT%{_libdir}/logging.properties
rm $RPM_BUILD_ROOT%{_libdir}/security/classpath.security
rm $RPM_BUILD_ROOT%{_libdir}/security/libgcj.security
%endif
rm $RPM_BUILD_ROOT%{_infodir}/*.info*
rm $RPM_BUILD_ROOT%{_prefix}/share/locale/*/LC_MESSAGES/*.mo
%endif
%if %{build_java}
%if %{build_libjava}
%files
%defattr(-,root,root)
%dir %{_libdir}/gcj-%{gcc_version}
%{_prefix}/share/java/libgcj-%{gcc_version}.jar
%{_libdir}/gcj-%{gcc_version}/classmap.db
%if !%{versionspecificlibs}
%dir %{_libdir}/security
%{_libdir}/security/classpath.security
%{_libdir}/security/libgcj.security
%endif
# We usually do not multilib libjava
%if %{biarch_libjava}
%mainlib libgcj.so.*
%mainlib libgij.so.*
%mainlib libgcjawt.so.*
%mainlib lib-gnu-java-awt-peer-gtk.so.*
# these libs may get dlopened by their .la/.so name
%mainlib libgcjawt.la
%mainlib libgcjawt.so
%mainlib lib-gnu-java-awt-peer-gtk.la
%mainlib lib-gnu-java-awt-peer-gtk.so
%else
%{mainlibdir}/libgcj.so.*
%{mainlibdir}/libgij.so.*
%{mainlibdir}/libgcjawt.so.*
%{mainlibdir}/lib-gnu-java-awt-peer-gtk.so.*
# these libs may get dlopened by their .la/.so name
%{mainlibdir}/libgcjawt.la
%{mainlibdir}/libgcjawt.so
%{mainlibdir}/lib-gnu-java-awt-peer-gtk.la
%{mainlibdir}/lib-gnu-java-awt-peer-gtk.so
%endif
%if !%{versionspecificlibs}
%{_libdir}/logging.properties
%endif
%files -n libgcj33-devel
%defattr(-,root,root)
%dir %{_prefix}/include/c++
%dir %{gxxinclude}
%{libsubdir}/include/jawt.h
%{libsubdir}/include/jawt_md.h
%{libsubdir}/include/jni.h
%{libsubdir}/include/jni_md.h
%{libsubdir}/include/jvmpi.h
%{gxxinclude}/gnu
%{gxxinclude}/gcj
%{gxxinclude}/java
%{gxxinclude}/javax
%{gxxinclude}/org
%{libsubdir}/include/gcj
%if %{biarch_libjava}
%mainlib libgcj.la
%mainlib libgcj.so
%mainlib libgcj.spec
%mainlib libgij.la
%mainlib libgij.so
%else
%{mainlibdir}/libgcj.la
%{mainlibdir}/libgcj.so
%{mainlibdir}/libgcj.spec
%{mainlibdir}/libgij.la
%{mainlibdir}/libgij.so
%endif
%files -n gcc33-gij
%defattr(-,root,root)
%{_prefix}/bin/rmic%{binsuffix}
%{_prefix}/bin/rmiregistry%{binsuffix}
%{_prefix}/bin/jv-convert%{binsuffix}
%{_prefix}/bin/gcj-dbtool%{binsuffix}
%{_prefix}/bin/gij%{binsuffix}
%doc %{_mandir}/man1/gij%{binsuffix}.1.gz
%doc %{_mandir}/man1/gcj-dbtool%{binsuffix}.1.gz
%doc %{_mandir}/man1/rmic%{binsuffix}.1.gz
%doc %{_mandir}/man1/rmiregistry%{binsuffix}.1.gz
%doc %{_mandir}/man1/jv-convert%{binsuffix}.1.gz
%files -n libffi33
%defattr(-,root,root)
%mainlib libffi.so.*
%if %{separate_biarch}
%files -n libffi33%{separate_biarch_suffix}
%defattr(-,root,root)
%biarchlib libffi.so.*
%endif
%files -n libffi33-devel
%defattr(-,root,root)
%{_prefix}/include/ffi.h
%{_prefix}/include/ffitarget.h
%mainlib libffi.so
%mainlib libffi.a
%mainlib libffi.la
%if %{separate_biarch}
%files -n libffi33-devel%{separate_biarch_suffix}
%defattr(-,root,root)
%biarchlib libffi.so
%biarchlib libffi.a
%biarchlib libffi.la
%endif
%endif
%endif
%if %{run_tests}
%files -n gcc33-testresults
%defattr(-,root,root)
%doc testresults/*.sum
%doc testresults/*.log
%endif
%changelog