File cross-avr-gcc43.spec of Package gcc43

#
# spec file for package cross-avr-gcc43 (Version 4.3.0_20071129)
#
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# 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://bugs.opensuse.org/
#

# norootforbuild

Name:           cross-avr-gcc43
%define build_static 1
#
# spec file for package gcc (Version 4.0.1)
#
# Copyright (c) 2005 SUSE Linux AG, Nuernberg, Germany.
# 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/
#
%define build_cp 1
%define build_ada 0
%define build_java 0
%define build_libjava 0
%define build_fortran 0
%define build_objc 0
%define build_objcp 0
%define build_nof 0
%define gcc_for_opt 0
%define gcc_target_arch avr
%if "avr" == "spu"
%define build_cp 0
%endif
BuildRequires:  bison flex mpfr-devel
BuildRequires:  cross-avr-binutils
%if "avr43" == "spu-static"
BuildRequires:  cross-avr-newlib-headers
%endif
%if "avr43" == "spu"
BuildRequires:  cross-avr-newlib
Requires:       cross-avr-newlib
%endif
Requires:       cross-avr-binutils
# Suffixed gcc conflicts with unsuffixed gcc
%if "43" == ""
%else
Conflicts:      cross-avr-gcc
%endif
%define _prefix /opt/cross
# COMMON-BEGIN
%define biarch_targets x86_64 s390x powerpc64 powerpc
Url:            http://gcc.gnu.org/
License:        BSD 3-Clause; GPL v2 or later; LGPL v2.1 or later; X11/MIT
Version:        4.3.0_20071129
Release:        3
%define gcc_version %(echo %version | sed 's/_.*//')
%define gcc_dir_version %(echo %gcc_version | cut -d '.' -f 1-2)
%define snapshot_date %(echo %version | sed 's/[34]\.[0-4]\.[0-6]//' | sed 's/_/-/')
%define binsuffix -4.3
# COMMON-END
# COMMON-BEGIN
Group:          Development/Languages/C and C++
AutoReqProv:    on
Summary:        The GNU C Compiler for atmel Processors
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
Source:         gcc-%{gcc_version}%{snapshot_date}.tar.bz2
Source1:        change_spec
Source2:        libgcj43-rpmlintrc
Source3:        gcc43-rpmlintrc
Source4:        ecj.jar
Source5:        README.First-for.SuSE.packagers
Patch1:         gcc-dir-version.patch
Patch2:         gcc-noalias-warn.diff
Patch5:         boehm-gc-strict-aliasing.patch
Patch7:         acats-timeout.patch
Patch10:        program-transform-name.diff
Patch12:        gcc4-ppc64-m32-m64-multilib-only.patch
Patch23:        libjava-no-multilib.diff
Patch24:        tls-no-direct.diff
Patch25:        pr27880.diff
Patch27:        revert-pr25950.diff
Patch28:        pr33763.diff
Patch29:        pr34244.diff
Patch30:        pr34238.diff
Patch31:        pr34334.diff
# A set of patches from the RH srpm
Patch51:        gcc41-ia64-stack-protector.patch
Patch55:        gcc41-java-slow_pthread_self.patch
Patch57:        gcc41-ppc32-retaddr.patch
# LIBJAVA-DELETE-BEGIN

%description
This compiler supports the C language on avr microprocessors. Also
install cross-avr-binutils and avr-libc.



Authors:
--------
    The GCC team.

%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
%if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "powerpc64"
%define CONFIGURE_TARGET powerpc64-linux
%endif
%if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "i586"
%define CONFIGURE_TARGET i586-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/%{GCCDIST}/%{gcc_dir_version}
%define gxxinclude %{_prefix}/include/c++/%{gcc_dir_version}
# COMMON-END
# COMMON-BEGIN

%prep
%setup -q -n gcc-%{gcc_version}%{snapshot_date}
%patch1
%patch2
%patch5
%patch7
%patch10
%if !%{build_nof}
%patch12
%endif
%patch23
%patch24
%patch25
%patch27
%patch28
%patch29
%patch30
%patch31
%patch51
%patch55
%patch57

%build
# Avoid rebuilding of generated files
contrib/gcc_update --touch
# Split version file into version used for directories (X.Y) and
# version to report with --version (X.Y.Z).
# See also gcc-dir-version.patch.
mv gcc/BASE-VER gcc/FULL-VER
cat gcc/FULL-VER | cut -d '.' -f 1-2 > gcc/BASE-VER
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/-ffortify=.//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'`
%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'`
%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
%if %{build_cp}
languages=$languages,c++
%endif
%if %{build_objc}
languages=$languages,objc
%endif
%if %{build_fortran}
languages=$languages,fortran
%endif
%if %{build_objcp}
languages=$languages,obj-c++
%endif
%if %{build_java}
languages=$languages,java
%endif
%if %{build_ada}
languages=$languages,ada
%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=yes"
ENABLE_CHECKING="--enable-checking=release"
%if "%{name}" != "gcc43"
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=/
%if %{build_ada}
# Using the host gnatmake like
#   CC="gcc%{hostsuffix}" GNATBIND="gnatbind%{hostsuffix}"
#   GNATMAKE="gnatmake%{hostsuffix}"
# doesn't work due to PR33857, so an un-suffixed gnatmake has to be
# available
mkdir -p host-tools/bin
cp -a /usr/bin/gnatmake%{hostsuffix} host-tools/bin/gnatmake
cp -a /usr/bin/gnatlink%{hostsuffix} host-tools/bin/gnatlink
cp -a /usr/bin/gnatbind%{hostsuffix} host-tools/bin/gnatbind
cp -a /usr/bin/gcc%{hostsuffix} host-tools/bin/gcc
ln -sf /usr/%{_lib} host-tools/%{_lib}
export PATH="`pwd`/host-tools/bin:$PATH"
%endif
#%if 0%{?gcc_target_arch:1} && 0%{!?gcc_icecream:1}
#%else
#	--enable-threads=posix \
#%endif
#	--enable-shared \
CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" XCFLAGS="$RPM_OPT_FLAGS" \
TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
../configure \
	--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_dir_version} \
	--enable-ssp \
	--disable-libssp \
	--with-bugurl="http://bugs.opensuse.org/" \
	--with-pkgversion="SUSE Linux" \
%if !%{build_libjava}
        --disable-libgcj \
%else
	--with-ecj-jar=%{libsubdir}/ecj.jar \
        --enable-java-awt=gtk \
	--enable-gtk-cairo \
%if !%{biarch_libjava}
        --disable-libjava-multilib \
%endif
%endif
	--with-slibdir=/%{_lib} \
	--with-system-zlib \
	--enable-__cxa_atexit \
	--enable-libstdcxx-allocator=new \
	--disable-libstdcxx-pch \
%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
%if 0%{?build_static:1}
	--disable-shared \
%if "%{TARGET_ARCH}" == "spu"
	--with-sysroot=%{_prefix}/%{TARGET_ARCH}/sys-root \
%endif
%endif
	--disable-nls \
	--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 \
%endif
%if "%{TARGET_ARCH}" == "powerpc64"
	--enable-secureplt \
	--with-long-double-128 \
%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
	--build=%{GCCDIST}
# COMMON-END
make %{?jobs:-j%jobs} 

%install
cd obj-%{GCCDIST}
make install DESTDIR=$RPM_BUILD_ROOT
# ln -s avr-elf-gcc $RPM_BUILD_ROOT/%{_prefix}/bin/avr-gcc
rm -rf $RPM_BUILD_ROOT/%{_prefix}/share
rm $RPM_BUILD_ROOT/%{_libdir}/libiberty.a
# The libgcc.a that is not inside an avr* subdirectory is for avr2. 
# rm $RPM_BUILD_ROOT/%{_libdir}/gcc/*/*/{libgcc.a,libgcov.a}
rmdir $RPM_BUILD_ROOT/%{_prefix}/include

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root)
%{_prefix}
%changelog
* Wed Dec 05 2007 - rguenther@suse.de
- Add patch for PR34334.
* Thu Nov 29 2007 - rguenther@suse.de
- Update to SVN trunk head (r130511).  [#340981]
- Add patch for PR33763.  [#344524]
- Add patch for PR34244.  [#342603]
- Add patch for PR34238.
* Fri Nov 23 2007 - rguenther@suse.de
- Build gcc43-java from libgcj43.spec.
- Shuffle binaries back from gcc43-gij to gcc43-java retaining
  only classpath tools in gcc43-gij.
- Add libgcj43-jar package required by libgcj43-devel and only
  recommended by libgcj43.
- Fix icecream cross install directory.
* Thu Nov 22 2007 - rguenther@suse.de
- Simplify biarch rpm-macros.
- Add patch for PR34176.  [#342236]
- Add another alias fix.
* Tue Nov 20 2007 - rguenther@suse.de
- Update to SVN trunk head (r130276).
- Revert fix for PR25950.
- Add patch for PR34148.
* Tue Nov 13 2007 - rguenther@suse.de
- Change directories used in GCC install to only contain major and
  minor version, not patchlevel.
* Fri Nov 09 2007 - rguenther@suse.de
- Update to SVN trunk head (r130038).
- Enable spu and avr cross targets.
- Fix i386 and ppc64 icecream cross targets.
- Disable alpha and arm icecream cross targets.
- Fix icecream cross target search path issues.
- Add README.First-for.SuSE.packagers as extra source and update it.
- Depend on gcc43-ada.
* Thu Nov 08 2007 - rguenther@suse.de
- Enable icecream backends.
* Mon Nov 05 2007 - rguenther@suse.de
- Fix ia64 stack-protector patch.
- Add patch for PR32260.
* Tue Oct 30 2007 - rguenther@suse.de
- Fix rpmlint override files.
* Mon Oct 29 2007 - rguenther@suse.de
- Add patch for PR33871, linker errors with anonymous namespaces and
  typeinfo.
* Wed Oct 24 2007 - rguenther@suse.de
- Add patch for PR33870, sqlite miscompile.
- Add patch for PR33868, memory usage regression on glibc testsuite.
* Thu Oct 18 2007 - rguenther@suse.de
- Add back patch for PR27880.  Fixes missing _Unwind_GetIPInfo
  symbol in static libgcc on ia64.
- Add patch for PR33168, fixes ppc64 bootstrap failure.
- Add patch for PR33608, fixes Ada build on ia64.  Re-enable Ada for ia64.
- Work around PR33857, allow building Ada with old version alone.
* Tue Oct 16 2007 - rguenther@suse.de
- Update to SVN trunk head (r129378).
* Mon Oct 15 2007 - rguenther@suse.de
- Update to SVN trunk head (r129351).
* Fri Oct 12 2007 - rguenther@suse.de
- Package modified eclipse frontent jar.
- Remove ecj-bootstrap BuildRequires.
* Thu Oct 11 2007 - rguenther@suse.de
- Update to SVN trunk head (r129228).
* Tue Oct 09 2007 - rguenther@suse.de
- Update to SVN trunk head (r129166).
- Add patch for PR33692.
* Mon Oct 08 2007 - rguenther@suse.de
- Update to SVN trunk head (r129130).
* Tue Oct 02 2007 - rguenther@suse.de
- Update to SVN trunk head (r128956).
- Obsoletes fixes PR33146, PR33552, PR30375, PR33560 and linker
  version detection.
* Mon Oct 01 2007 - rguenther@suse.de
- Disable ada for ia64.
* Thu Sep 27 2007 - rguenther@suse.de
- Add patch for PR33552, also fixes reload failure for i586 glibc.
* Wed Sep 26 2007 - rguenther@suse.de
- Add patch for PR30375 and PR33560.
* Mon Sep 24 2007 - rguenther@suse.de
- Fix binutils version detection.
* Fri Sep 21 2007 - rguenther@suse.de
- Update to SVN trunk head (r128649).
- Add patch for PR33146.
* Mon Sep 17 2007 - rguenther@suse.de
- Update to SVN trunk head (r128539).
- Drop patch for PR32756.
- Revert r127960.
* Thu Aug 30 2007 - rguenther@suse.de
- Add patch for PR32756.
* Fri Aug 24 2007 - rguenther@suse.de
- Update to SVN trunk head (r127773).
* Fri Aug 24 2007 - rguenther@suse.de
- Allow disabling of C++ and ObjC.
- Add rpmlint exceptions for libraries.
* Mon Aug 20 2007 - rguenther@suse.de
- Delete fix-included sound headers.
* Wed Jul 25 2007 - rguenther@suse.de
- Update with specfile changes that went into the gcc42 package.
- Update to SVN trunk head (r126913).
* Wed May 09 2007 - rguenther@suse.de
- Update to SVN trunk head (r124570).
- Add unzip BuildRequires for libjava.
- No longer package precompiled headers for libstdc++.
* Tue Mar 27 2007 - rguenther@suse.de
- Update to SVN trunk head (r123255).
- Remove %%versionspecificlibs stuff.
* Thu Nov 16 2006 - rguenther@suse.de
- Update to SVN 4.2 branch head.
- Remove patch for PR26898 again.
* Fri Oct 20 2006 - rguenther@suse.de
- Update to SVN 4.2 branch head, fixes some remaining aliasing miscompiles.
- Fix libgcj.pc install.
- Update AMD-0201 patch.
* Tue Oct 17 2006 - rguenther@suse.de
- Update to SVN head.
- Add AMD-0201.
- Add other minor improvements.
* Tue Sep 19 2006 - rguenther@suse.de
- New gcc42-gij package.
- Adjust libgcj so version.
- Add proper Obsoletes to virtual Provides and gcc41 packages to
  make rpm install work.
- Kill @gcc_suffix@.
* Mon Sep 18 2006 - rguenther@suse.de
- Update to SVN head.
* Mon Sep 04 2006 - rguenther@suse.de
- Fix libgcj packaging.
- Run the testsuite from the libgcj package and package results
  in gcc42-testresults.
* Tue Aug 29 2006 - rguenther@suse.de
- Update to SVN head.
- Remove patch for bogus warning which is fixed upstream already.
- Fix URL for bugreporting, use http://bugs.opensuse.org instead of
  http://www.suse.de/feedback.
- No longer package gccbug script which led to feedback@suse.de which no
  longer exists.
* Tue Aug 22 2006 - rguenther@suse.de
- Forward port spec file changes from gcc41 package.
- libobjc changed .so version.
* Tue Aug 15 2006 - schwab@suse.de
- Fix infinite loop (PR28672).
* Tue Aug 15 2006 - rguenther@suse.de
- New gcc42 package.
openSUSE Build Service is sponsored by