File mingw32-cross-gcc.spec of Package mingw32-cross-gcc

%define __os_install_post /usr/lib/rpm/brp-compress %{nil}

%define include_ada 0
%define include_java 0

Name:           mingw32-cross-gcc
Version:        4.5.1
Release:        0
Summary:        MinGW Windows cross-compiler (GCC) for C

License:        GPLv2+
Group:          Development/Languages
URL:            http://www.mingw.org/
Source0:        ftp://ftp.gnu.org/gnu/gcc/gcc-%{version}/gcc-core-%{version}.tar.bz2
Source1:        ftp://ftp.gnu.org/gnu/gcc/gcc-%{version}/gcc-g++-%{version}.tar.bz2
%if %{include_java}
Source2:        ftp://ftp.gnu.org/gnu/gcc/gcc-%{version}/gcc-java-%{version}.tar.bz2
%endif
Source3:        ftp://ftp.gnu.org/gnu/gcc/gcc-%{version}/gcc-fortran-%{version}.tar.bz2
Source4:        ftp://ftp.gnu.org/gnu/gcc/gcc-%{version}/gcc-objc-%{version}.tar.bz2
%if %{include_ada}
Source5:        ftp://ftp.gnu.org/gnu/gcc/gcc-%{version}/gcc-ada-%{version}.tar.bz2
%endif

Source50:       ecj.jar
Source100:      %{name}-rpmlintrc
Patch0:         gcc-4.5.1-libjava.patch
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

#!BuildIgnore: post-build-checks  

BuildRequires:  texinfo
BuildRequires:  mingw32-filesystem >= 39-3
BuildRequires:  mingw32-cross-binutils
BuildRequires:  mingw32-runtime
BuildRequires:  mingw32-headers
BuildRequires:  gmp-devel
BuildRequires:  mpfr-devel
BuildRequires:  mpc-devel
BuildRequires:  zlib-devel
BuildRequires:  libgomp gcc-c++
BuildRequires:  zip, unzip
%if %{include_java}
BuildRequires:	libgcj-devel, gcc-java,
%endif
%if %{include_ada}
BuildRequires:	gcc-ada
%endif

# NB: Explicit mingw32-filesystem dependency is REQUIRED here.
Requires:       mingw32-filesystem >= 39-3
Requires:       mingw32-cross-binutils
Requires:       mingw32-runtime
Requires:       mingw32-headers
Requires:       mingw32-cross-cpp

# Once this full GCC is installed, it obsoletes the bootstrap GCC.
Obsoletes:      mingw32-cross-gcc-bootstrap <= %{version}
Provides:       mingw32-cross-gcc-bootstrap = %{version}

%description
MinGW Windows cross-compiler (GCC) for C


%package -n mingw32-cross-cpp
Summary: MinGW Windows cross-C Preprocessor.
Group: Development/Languages
Obsoletes:      mingw32-cross-cpp-bootstrap <= %{version}
Provides:       mingw32-cross-cpp-bootstrap = %{version}

%description -n mingw32-cross-cpp
MinGW Windows cross-C Preprocessor


%package c++
Summary: MinGW Windows cross-compiler for C++
Group: Development/Languages

%description c++
MinGW Windows cross-compiler for C++

%if %{include_java}

%package java
Summary: MinGW Windows cross-compiler for Java
Group: Development/Languages

%description java
MinGW Windows cross-compiler for Java

%endif

%package fortran
Summary: MinGW Windows cross-compiler for Fortran
Group: Development/Languages

%description fortran
MinGW Windows cross-compiler for Fortran


%package objc
Summary: MinGW Windows cross-compiler for Objective-C and Objective-C++
Group: Development/Languages

%description objc
MinGW Windows cross-compiler for Objective-C and Objective-C++


%if %{include_ada}

%package ada
Summary: MinGW Windows cross-compiler for Ada
Group: Development/Languages

%description ada
MinGW Windows cross-compiler for Ada

%endif


%prep
%setup -q -c
%setup -q -D -T -a1
%if %{include_java}
%setup -q -D -T -a2
%endif
%setup -q -D -T -a3
%setup -q -D -T -a4
%if %{include_ada}
%setup -q -D -T -a5
%endif
pushd gcc-%{version}
%if %{include_java}
%patch0 -p0
%endif  
popd


%build
cd gcc-%{version}

mkdir -p build
cd build

languages="c,c++,fortran,objc,obj-c++"

%if %{include_ada}
languages+=",ada"
ada_options=-enable-libada
%else
ada_options=
%endif

%if %{include_java}
languages+=",java"
java_options='--enable-libgcj --enable-java-gc-boehm --disable-libgcj-debug'
%else
java_options=
%endif

CC="%{__cc} ${RPM_OPT_FLAGS}" \
CFLAGS_FOR_TARGET="-DGC_NOT_DLL %{_mingw32_cflags}" \
CXXFLAGS_FOR_TARGET="-DGC_NOT_DLL %{_mingw32_cflags}" \
CPPFLAGS_FOR_TARGET="-DGC_NOT_DLL %{_mingw32_cflags}" \
LDFLAGS_FOR_TARGET="-Wl,--enable-runtime-pseudo-reloc-v2" \
../configure \
  --prefix=%{_prefix} \
  --bindir=%{_bindir} \
  --includedir=%{_includedir} \
  --libdir=%{_libdir} \
  --libexecdir=%{_libdir} \
  --mandir=%{_mandir} \
  --infodir=%{_infodir} \
  --datadir=%{_datadir} \
  --build=%_build --host=%_host \
  --target=%{_mingw32_target} \
  --with-gnu-as --with-gnu-ld --verbose \
  --without-newlib \
  --disable-multilib \
  --disable-plugin \
  --with-system-zlib \
  --disable-nls --without-included-gettext \
  --disable-win32-registry \
  --enable-version-specific-runtime-libs \
  --with-sysroot=%{_mingw32_sysroot} \
  --enable-languages="$languages" $optargs \
  ${java_options} \
  ${ada_options} \
  --without-x \
  --enable-hash-synchronization

make %{?_smp_mflags} all || make all

%install
rm -rf $RPM_BUILD_ROOT

cd gcc-%{version}
cd build
make DESTDIR=$RPM_BUILD_ROOT install

# These files conflict with existing installed files.
rm -rf $RPM_BUILD_ROOT%{_infodir}
rm -f $RPM_BUILD_ROOT%{_libdir}/libiberty*
rm -f $RPM_BUILD_ROOT%{_mandir}/man7/*
rm -f $RPM_BUILD_ROOT%{_bindir}/vxaddr2line

mkdir -p $RPM_BUILD_ROOT/lib
ln -sf ..%{_prefix}/bin/%{_mingw32_target}-cpp \
  $RPM_BUILD_ROOT/lib/%{_mingw32_target}-cpp
  
%if %{include_java}

mkdir -p $RPM_BUILD_ROOT%{_libdir}/gcc/%{_mingw32_target}/%{version}/
cp %{SOURCE50} $RPM_BUILD_ROOT%{_libdir}/gcc/%{_mingw32_target}/%{version}/
gcj %{SOURCE50} --main=org.eclipse.jdt.internal.compiler.batch.GCCMain \
	-o $RPM_BUILD_ROOT%{_libdir}/gcc/%{_mingw32_target}/%{version}/ecj1

mkdir -p $RPM_BUILD_ROOT%{_mingw32_libdir}/
mv $RPM_BUILD_ROOT%{_libdir}/gcj-%{version}-10 $RPM_BUILD_ROOT%{_mingw32_libdir}/
mv $RPM_BUILD_ROOT%{_libdir}/pkgconfig $RPM_BUILD_ROOT%{_mingw32_libdir}/
mv $RPM_BUILD_ROOT%{_libdir}/security $RPM_BUILD_ROOT%{_mingw32_libdir}/
mv $RPM_BUILD_ROOT%{_libdir}/*properties $RPM_BUILD_ROOT%{_mingw32_libdir}/

mkdir -p $RPM_BUILD_ROOT%{_mingw32_datadir}/
mv $RPM_BUILD_ROOT%{_datadir}/java $RPM_BUILD_ROOT%{_mingw32_datadir}/
(cd $RPM_BUILD_ROOT%{_mingw32_datadir}/java/; for i in libgcj libgcj-tools; \
	do ln -s $i-%{version}.jar $i.jar; done )

%endif


rm -f $RPM_BUILD_ROOT%{_bindir}/*.dll
rm -f $RPM_BUILD_ROOT%{_libdir}/gcc/%{_mingw32_target}/bin/*.dll

rm -f $RPM_BUILD_ROOT%{_bindir}/%{_mingw32_target}-aot-compile
rm -f $RPM_BUILD_ROOT%{_bindir}/%{_mingw32_target}-rebuild-gcj-db
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/%{_mingw32_target}-aot-compile.1*
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/%{_mingw32_target}-gjdoc.1*
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/%{_mingw32_target}-rebuild-gcj-db.1*
rm -rf $RPM_BUILD_ROOT%{_datadir}/python

find $RPM_BUILD_ROOT -name \*.py -exec rm {} +


%clean
rm -rf $RPM_BUILD_ROOT


%files
%defattr(-,root,root)
%{_bindir}/%{_mingw32_target}-gcc
%{_bindir}/%{_mingw32_target}-gcc-%{version}
%{_bindir}/%{_mingw32_target}-gccbug
%{_bindir}/%{_mingw32_target}-gcov
%{_prefix}/%{_mingw32_target}/lib/libiberty.a
%dir %{_libdir}/gcc/%{_mingw32_target}
%dir %{_libdir}/gcc/%{_mingw32_target}/%{version}
%{_libdir}/gcc/%{_mingw32_target}/%{version}/crtbegin.o
%{_libdir}/gcc/%{_mingw32_target}/%{version}/crtend.o
%{_libdir}/gcc/%{_mingw32_target}/%{version}/crtfastmath.o
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgcc.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgcc_eh.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgcc_s.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgcov.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libssp.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libssp.dll.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libssp.la
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libssp_nonshared.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libssp_nonshared.la
%dir %{_libdir}/gcc/%{_mingw32_target}/%{version}/include
%dir %{_libdir}/gcc/%{_mingw32_target}/%{version}/include-fixed
%dir %{_libdir}/gcc/%{_mingw32_target}/%{version}/include/ssp
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include-fixed/README
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include-fixed/*.h
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include/*.h
%if %{include_java}
%exclude %{_libdir}/gcc/%{_mingw32_target}/%{version}/include/jni*.h
%exclude %{_libdir}/gcc/%{_mingw32_target}/%{version}/include/jawt*.h
%exclude %{_libdir}/gcc/%{_mingw32_target}/%{version}/include/ffi*.h
%exclude %{_libdir}/gcc/%{_mingw32_target}/%{version}/include/jvmpi.h
%endif
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include/ssp/*.h
%dir %{_libdir}/gcc/%{_mingw32_target}/%{version}/install-tools
%{_libdir}/gcc/%{_mingw32_target}/%{version}/install-tools/*
%{_mandir}/man1/%{_mingw32_target}-gcc.1*
%{_mandir}/man1/%{_mingw32_target}-gcov.1*
%{_libdir}/gcc/%{_mingw32_target}/%{version}/collect2
%{_libdir}/gcc/%{_mingw32_target}/%{version}/lto-wrapper


%files -n mingw32-cross-cpp
%defattr(-,root,root)
/lib/%{_mingw32_target}-cpp
%{_bindir}/%{_mingw32_target}-cpp
%{_mandir}/man1/%{_mingw32_target}-cpp.1*
%dir %{_libdir}/gcc/%{_mingw32_target}
%dir %{_libdir}/gcc/%{_mingw32_target}/%{version}
%{_libdir}/gcc/%{_mingw32_target}/%{version}/cc1


%files c++
%defattr(-,root,root)
%{_bindir}/%{_mingw32_target}-g++
%{_bindir}/%{_mingw32_target}-c++
%{_mandir}/man1/%{_mingw32_target}-g++.1*
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include/c++/
%if %{include_java}
%exclude %{_libdir}/gcc/%{_mingw32_target}/%{version}/include/c++/java/
%exclude %{_libdir}/gcc/%{_mingw32_target}/%{version}/include/c++/javax/
%exclude %{_libdir}/gcc/%{_mingw32_target}/%{version}/include/c++/gcj/
%exclude %{_libdir}/gcc/%{_mingw32_target}/%{version}/include/c++/gnu/
%exclude %{_libdir}/gcc/%{_mingw32_target}/%{version}/include/c++/org/
%exclude %{_libdir}/gcc/%{_mingw32_target}/%{version}/include/c++/sun/
%endif
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libstdc++.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libstdc++.dll.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libstdc++.la
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libsupc++.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libsupc++.la
%{_libdir}/gcc/%{_mingw32_target}/%{version}/cc1plus

%if %{include_java}

%files java
%defattr(-,root,root)
%{_bindir}/%{_mingw32_target}-gcj
%{_bindir}/%{_mingw32_target}-jcf-dump
%{_libdir}/gcc/%{_mingw32_target}/%{version}/jc1
%{_libdir}/gcc/%{_mingw32_target}/%{version}/jvgenmain
%{_libdir}/gcc/%{_mingw32_target}/%{version}/ecj.jar
%{_libdir}/gcc/%{_mingw32_target}/%{version}/ecj1
%{_mandir}/man1/%{_mingw32_target}-gc-analyze.1*
%{_mandir}/man1/%{_mingw32_target}-gcj-dbtool.1*
%{_mandir}/man1/%{_mingw32_target}-gcj.1*
%{_mandir}/man1/%{_mingw32_target}-gij.1*
%{_mandir}/man1/%{_mingw32_target}-grmic.1*
%{_mandir}/man1/%{_mingw32_target}-jcf-dump.1*
%{_mandir}/man1/%{_mingw32_target}-jv-convert.1*
#%{_bindir}/%{_mingw32_target}-addr2name.awk
%{_prefix}/%{_mingw32_target}/lib/libffi.a
%{_prefix}/%{_mingw32_target}/lib/libffi.la
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include/c++/java/
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include/c++/javax/
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include/c++/gcj/
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include/c++/gnu/
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include/c++/org/
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include/c++/sun/
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include/jni*.h
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include/jawt*.h
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include/ffi*.h
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include/jvmpi.h
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include/gcj/libgcj-config.h
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgcj-tools.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgcj-tools.dll.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgcj-tools.la
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgcj.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgcj.dll.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgcj.la
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgcj.spec
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgij.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgij.la
%{_mingw32_libdir}/gcj-%{version}-10/libjvm.a
%{_mingw32_libdir}/gcj-%{version}-10/libjvm.la
%{_mingw32_libdir}/pkgconfig/libgcj-4.4.pc
%{_mingw32_libdir}/security/classpath.security
%{_mingw32_libdir}/*properties
%{_mingw32_datadir}/java/libgcj*.jar
%{_mandir}/man1/%{_mingw32_target}-gappletviewer.1.gz
%{_mandir}/man1/%{_mingw32_target}-gcjh.1.gz
%{_mandir}/man1/%{_mingw32_target}-gjar.1.gz
%{_mandir}/man1/%{_mingw32_target}-gjarsigner.1.gz
%{_mandir}/man1/%{_mingw32_target}-gjavah.1.gz
%{_mandir}/man1/%{_mingw32_target}-gkeytool.1.gz
%{_mandir}/man1/%{_mingw32_target}-gnative2ascii.1.gz
%{_mandir}/man1/%{_mingw32_target}-gorbd.1.gz
%{_mandir}/man1/%{_mingw32_target}-grmid.1.gz
%{_mandir}/man1/%{_mingw32_target}-grmiregistry.1.gz
%{_mandir}/man1/%{_mingw32_target}-gserialver.1.gz
%{_mandir}/man1/%{_mingw32_target}-gtnameserv.1.gz

%endif

%files fortran
%defattr(-,root,root)
%{_bindir}/%{_mingw32_target}-gfortran
%{_mandir}/man1/%{_mingw32_target}-gfortran.1*
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgfortran.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgfortran.dll.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgfortran.la
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgfortranbegin.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libgfortranbegin.la
%{_libdir}/gcc/%{_mingw32_target}/%{version}/f951


%files objc
%defattr(-,root,root)
%{_libdir}/gcc/%{_mingw32_target}/%{version}/include/objc
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libobjc.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libobjc.dll.a
%{_libdir}/gcc/%{_mingw32_target}/%{version}/libobjc.la
%{_libdir}/gcc/%{_mingw32_target}/%{version}/cc1obj*


%if %{include_ada}

%files ada
%defattr(-,root,root)
%{_libdir}/gcc/%{_mingw32_target}/%{version}/adainclude
%{_libdir}/gcc/%{_mingw32_target}/%{version}/adalib
%{_libdir}/gcc/%{_mingw32_target}/%{version}/gnat1
%{_bindir}/%{_mingw32_target}-gnat*

%endif


%changelog
openSUSE Build Service is sponsored by