X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=crossmingw32-gcc.spec;h=ac2bfb9fc07fce6a4187eef5cb9de965a41a6661;hb=12166cab3487d4404c8360b195ef9889b4de0e6d;hp=cdaf8fa582d1d6a694294a5d4a4122a437398a82;hpb=43de46490865da0e81c94a5a68212e090d2cd0f2;p=packages%2Fcrossmingw32-gcc.git diff --git a/crossmingw32-gcc.spec b/crossmingw32-gcc.spec index cdaf8fa..ac2bfb9 100644 --- a/crossmingw32-gcc.spec +++ b/crossmingw32-gcc.spec @@ -1,36 +1,54 @@ +# +# Conditional build: +%bcond_with bootstrap # bootstrap build (using binary w32api/mingw) +# %define DASHED_SNAP %{nil} %define SNAP %(echo %{DASHED_SNAP} | sed -e "s#-##g") -%define GCC_VERSION 3.2.1 -%define STDC_VERSION 4.0.0 -%define OBJC_VERSION 1.0.0 -%define GCJ_VERSION 3.2 -Summary: Mingw32 Binary Utility Development Utilities - gcc -Summary(pl): Zestaw narzêdzi mingw32 - gcc +%define GCC_VERSION 3.4.3 +%define apiver 3.5 +%define apisrc w32api-%{apiver} +%define runver 3.9 +%define runsrc mingw-runtime-%{runver} +Summary: Cross Mingw32 GNU binary utility development utilities - gcc +Summary(es): Utilitarios para desarrollo de binarios de la GNU - Mingw32 gcc +Summary(fr): Utilitaires de développement binaire de GNU - Mingw32 gcc +Summary(pl): Skro¶ne narzêdzia programistyczne GNU dla Mingw32 - gcc +Summary(pt_BR): Utilitários para desenvolvimento de binários da GNU - Mingw32 gcc +Summary(tr): GNU geliþtirme araçlarý - Mingw32 gcc Name: crossmingw32-gcc Version: %{GCC_VERSION} -Release: 1 +Release: 4 Epoch: 1 License: GPL Group: Development/Languages -ExclusiveArch: %{ix86} Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{GCC_VERSION}/gcc-%{GCC_VERSION}.tar.bz2 -Patch0: gcc-slibdir.patch -BuildRequires: crossmingw32-platform -BuildRequires: crossmingw32-binutils -BuildRequires: flex -BuildRequires: bison +# Source0-md5: e744b30c834360fccac41eb7269a3011 +Source1: http://dl.sourceforge.net/mingw/%{apisrc}.tar.gz +# Source1-md5: 2529dffea94118865cdc06c1f7ead697 +Source2: http://dl.sourceforge.net/mingw/%{runsrc}.tar.gz +# Source2-md5: 0cb66b1071da224ea2174f960c593e2e +Patch0: gcc-nodebug.patch +Patch1: %{name}-noioctl.patch BuildRequires: autoconf -Requires: crossmingw32-binutils -Requires: crossmingw32-platform +BuildRequires: automake +BuildRequires: bison +BuildRequires: crossmingw32-binutils >= 2.15.91.0.2-2 +BuildRequires: flex +%if %{without bootstrap} +BuildRequires: crossmingw32-runtime >= 3.5 +BuildRequires: crossmingw32-w32api >= 3.1 +%endif +Requires: crossmingw32-binutils >= 2.15.91.0.2-2 +Requires: gcc-dirs BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %define no_install_post_strip 1 + %define target i386-mingw32 %define target_platform i386-pc-mingw32 -%define _prefix /usr %define arch %{_prefix}/%{target} -%define gccarch %{_prefix}/lib/gcc-lib/%{target} -%define gcclib %{_prefix}/lib/gcc-lib/%{target}/%{version} +%define gccarch %{_libdir}/gcc/%{target} +%define gcclib %{_libdir}/gcc/%{target}/%{version} %description crossmingw32 is a complete cross-compiling development system for @@ -41,20 +59,24 @@ with supporting Win32 libraries in 'coff' format from free sources. This package contains cross targeted gcc. +%description -l de +Dieses Paket enthält einen Cross-gcc, der es erlaubt, auf einem +anderem Rechner Code für Win32 zu generieren. + %description -l pl -crossmingw32 jest kompletnym systemem do kroskompilacji, pozwalaj±cym -budowaæ aplikacje MS Windows pod Linuksem u¿ywaj±c bibliotek mingw32. -System sk³ada siê z binutils, gcc z g++ i objc, libstdc++ - wszystkie -generuj±ce kod dla platformy i386-mingw32, oraz z bibliotek w formacie -COFF. +crossmingw32 jest kompletnym systemem do kompilacji skro¶nej, +pozwalaj±cym budowaæ aplikacje MS Windows pod Linuksem u¿ywaj±c +bibliotek Mingw32. System sk³ada siê z binutils, gcc z g++ i objc, +libstdc++ - wszystkie generuj±ce kod dla platformy i386-mingw32, oraz +z bibliotek w formacie COFF. -Ten pakiet zawiera gcc generuj±ce kod dla Win32. +Ten pakiet zawiera gcc generuj±ce skro¶nie kod dla Win32. %package c++ -Summary: Mingw32 Binary Utility Development Utilities - g++ +Summary: Mingw32 binary utility development utilities - g++ Summary(pl): Zestaw narzêdzi mingw32 - g++ Group: Development/Languages -Requires: %{name} = %{version} +Requires: %{name} = %{epoch}:%{version}-%{release} %description c++ crossmingw32 is a complete cross-compiling development system for @@ -66,21 +88,21 @@ with supporting Win32 libraries in 'coff' format from free sources. This package contains cross targeted g++ and (static) libstdc++. %description c++ -l pl -crossmingw32 jest kompletnym systemem do kroskompilacji, pozwalaj±cym -budowaæ aplikacje MS Windows pod Linuksem u¿ywaj±c bibliotek mingw32. -System sk³ada siê z binutils, gcc z g++ i objc, libstdc++ - wszystkie -generuj±ce kod dla platformy i386-mingw32, oraz z bibliotek w formacie -COFF. +crossmingw32 jest kompletnym systemem do kompilacji skro¶nej, +pozwalaj±cym budowaæ aplikacje MS Windows pod Linuksem u¿ywaj±c +bibliotek mingw32. System sk³ada siê z binutils, gcc z g++ i objc, +libstdc++ - wszystkie generuj±ce kod dla platformy i386-mingw32, oraz +z bibliotek w formacie COFF. Ten pakiet zawiera g++ generuj±ce kod pod Win32 oraz bibliotekê libstdc++. # does this even work? %package objc -Summary: Mingw32 Binary Utility Development Utilities - objc +Summary: Mingw32 binary utility development utilities - objc Summary(pl): Zestaw narzêdzi mingw32 - objc Group: Development/Languages -Requires: %{name} = %{version} +Requires: %{name} = %{epoch}:%{version}-%{release} %description objc crossmingw32 is a complete cross-compiling development system for @@ -92,20 +114,20 @@ with supporting Win32 libraries in 'coff' format from free sources. This package contains cross targeted objc. %description objc -l pl -crossmingw32 jest kompletnym systemem do kroskompilacji, pozwalaj±cym -budowaæ aplikacje MS Windows pod Linuksem u¿ywaj±c bibliotek mingw32. -System sk³ada siê z binutils, gcc z g++ i objc, libstdc++ - wszystkie -generuj±ce kod dla platformy i386-mingw32, oraz z bibliotek w formacie -COFF. +crossmingw32 jest kompletnym systemem do kompilacji skro¶nej, +pozwalaj±cym budowaæ aplikacje MS Windows pod Linuksem u¿ywaj±c +bibliotek mingw32. System sk³ada siê z binutils, gcc z g++ i objc, +libstdc++ - wszystkie generuj±ce kod dla platformy i386-mingw32, oraz +z bibliotek w formacie COFF. Ten pakiet zawiera kompilator objc generuj±cy kod pod Win32. # does this even work? %package g77 -Summary: Mingw32 Binary Utility Development Utilities - g77 +Summary: Mingw32 binary utility development utilities - g77 Summary(pl): Zestaw narzêdzi mingw32 - g77 Group: Development/Languages -Requires: %{name} = %{version} +Requires: %{name} = %{epoch}:%{version}-%{release} %description g77 crossmingw32 is a complete cross-compiling development system for @@ -117,20 +139,20 @@ with supporting Win32 libraries in 'coff' format from free sources. This package contains cross targeted g77. %description g77 -l pl -crossmingw32 jest kompletnym systemem do kroskompilacji, pozwalaj±cym -budowaæ aplikacje MS Windows pod Linuksem u¿ywaj±c bibliotek mingw32. -System sk³ada siê z binutils, gcc z g++ i objc, libstdc++ - wszystkie -generuj±ce kod dla platformy i386-mingw32, oraz z bibliotek w formacie -COFF. +crossmingw32 jest kompletnym systemem do kompilacji skro¶nej, +pozwalaj±cym budowaæ aplikacje MS Windows pod Linuksem u¿ywaj±c +bibliotek mingw32. System sk³ada siê z binutils, gcc z g++ i objc, +libstdc++ - wszystkie generuj±ce kod dla platformy i386-mingw32, oraz +z bibliotek w formacie COFF. Ten pakiet zawiera g77 generuj±cy kod pod Win32. # does this even work? %package java -Summary: Mingw32 Binary Utility Development Utilities - java +Summary: Mingw32 binary utility development utilities - java Summary(pl): Zestaw narzêdzi mingw32 - java Group: Development/Languages -Requires: %{name} = %{version} +Requires: %{name} = %{epoch}:%{version}-%{release} %description java crossmingw32 is a complete cross-compiling development system for @@ -142,23 +164,53 @@ with supporting Win32 libraries in 'coff' format from free sources. This package contains cross targeted java. %description java -l pl -crossmingw32 jest kompletnym systemem do kroskompilacji, pozwalaj±cym -budowaæ aplikacje MS Windows pod Linuksem u¿ywaj±c bibliotek mingw32. -System sk³ada siê z binutils, gcc z g++ i objc, libstdc++ - wszystkie -generuj±ce kod dla platformy i386-mingw32, oraz z bibliotek w formacie -COFF. + +crossmingw32 jest kompletnym systemem do kompilacji skro¶nej, +pozwalaj±cym budowaæ aplikacje MS Windows pod Linuksem u¿ywaj±c +bibliotek mingw32. System sk³ada siê z binutils, gcc z g++ i objc, +libstdc++ - wszystkie generuj±ce kod dla platformy i386-mingw32, oraz +z bibliotek w formacie COFF. Ten pakiet zawiera kompilator Javy generuj±cy kod pod Win32. %prep -%setup -q -n gcc-%{version} -%patch0 -p1 +%setup -q -c +cd gcc-%{version} +%if %{with bootstrap} +mkdir winsup +tar xzf %{SOURCE1} -C winsup +tar xzf %{SOURCE2} -C winsup +%endif +%{!?debug:%patch0 -p1} +%patch1 -p1 %build +cd gcc-%{version} +%if %{with bootstrap} +for tool in as ar dlltool ld nm ranlib strip ; do + ln -sf %{arch}/bin/$tool winsup/bin/$tool +done +build_tooldir=`pwd`/winsup +%else +build_tooldir=%{arch} +%endif + +cp /usr/share/automake/config.sub . +cp /usr/share/automake/config.sub boehm-gc + rm -rf obj-%{target_platform} && install -d obj-%{target_platform} && cd obj-%{target_platform} +# note: alpha's -mieee and sparc's -mtune=* are not valid for target's g++ CFLAGS="%{rpmcflags}" \ -CXXFLAGS="%{rpmcflags}" \ +%ifarch alpha +CXXFLAGS="`echo '%{rpmcflags}' | sed -e 's/ \?-mieee\>//'`" \ +%else +%ifarch sparc sparc64 sparcv9 +CXXFLAGS="`echo '%{rpmcflags}' | sed -e 's/ \?-mtune[=0-9a-z]*//'`" \ +%else +CXXFLAGS="%{rpmcflags}" \ +%endif +%endif LDFLAGS="%{rpmldflags}" \ TEXCONFIG=false \ ../configure \ @@ -166,27 +218,33 @@ TEXCONFIG=false \ --infodir=%{_infodir} \ --mandir=%{_mandir} \ --bindir=%{arch}/bin \ - --enable-languages="c,c++,f77,gcov,java,objc" \ + --libdir=%{_libdir} \ + --libexecdir=%{_libexecdir} \ + --includedir=%{arch}/include \ + --enable-languages="c,c++,f77,java,objc" \ --with-gnu-as \ --with-gnu-ld \ --with-gxx-include-dir=%{arch}/include/g++ \ + --enable-threads \ + --build=%{_target_platform} \ + --host=%{_target_platform} \ --target=%{target} -# to nie dzia³a bo kto¶ ukrad³ gthr-win32.h i nie wiem co tam wpisaæ -# --enable-threads \ - #touch ../gcc/c-gperf.h %{__make} \ LDFLAGS_FOR_TARGET="%{rpmldflags}" \ - TARGET_LIBGCC2_CFLAGS="-UCROSS_COMPILE" + TARGET_LIBGCC2_CFLAGS="-UCROSS_COMPILE" \ + build_tooldir="$build_tooldir" \ + FLAGS_FOR_TARGET="-B${build_tooldir}/bin -B${build_tooldir}/lib -isystem ${build_tooldir}/include -nostdinc" \ + CFLAGS_FOR_TARGET="-nostdinc" \ + NM_FOR_TARGET="%{target}-nm" # build libobjc.dll for Objective C -# to trzeba wywo³ywaæ z katalogu obj-%{target_platform}/%{target}/libobjc -# ale trzeba podaæ jeszcze GCC_FOR_TARGET - a mi siê nie chce. -# BTW, ten dll jest do czego¶ potrzebny??? +# it must be called from obj-%{target_platform}/%{target}/libobjc, but +# GCC_FOR_TARGET must be passed # -#make \ +#make -C %{target}/libobjc \ # LDFLAGS="%{rpmldflags}" \ # TARGET_LIBGCC2_CFLAGS="-UCROSS_COMPILE" \ # DLLTOOL="%{target}-dlltool --as=%{target}-as" libobjc.dll @@ -199,35 +257,43 @@ done %install rm -rf $RPM_BUILD_ROOT +cd gcc-%{version} install -d $RPM_BUILD_ROOT%{_bindir} install -d $RPM_BUILD_ROOT%{_datadir} -(cd obj-%{target_platform} +cd obj-%{target_platform} %{__make} install \ - prefix=$RPM_BUILD_ROOT%{_prefix} \ - bindir=$RPM_BUILD_ROOT%{arch}/bin \ - mandir=$RPM_BUILD_ROOT%{_mandir} \ - infodir=$RPM_BUILD_ROOT%{_infodir} \ - gxx_include_dir=$RPM_BUILD_ROOT%{arch}/include/g++ + DESTDIR=$RPM_BUILD_ROOT cd gcc install specs.msvcrt specs.msvcrt20 specs.msvcrt40 $RPM_BUILD_ROOT%{gcclib} -) +cd ../.. mv -f $RPM_BUILD_ROOT%{arch}/bin/%{target}-* $RPM_BUILD_ROOT%{_bindir} -# c++filt is provided by binutils -rm -f $RPM_BUILD_ROOT%{_bindir}/i386-mingw32-c++filt - -# what is this there for??? +# already in arch/lib, shouldn't be here rm -f $RPM_BUILD_ROOT%{_libdir}/libiberty.a +%if 0%{!?debug:1} +# strip linux binaries +strip -R .comment -R .note \ + `echo $RPM_BUILD_ROOT{%{_bindir}/*,%{arch}/bin/*} | grep -v gccbug` \ + $RPM_BUILD_ROOT%{gcclib}/{cc1*,f771,jc1,jvgenmain} + +# strip mingw32 libraries +%{target}-strip -g \ + $RPM_BUILD_ROOT%{gcclib}/libgcc.a \ + $RPM_BUILD_ROOT%{arch}/lib/lib*.a +%endif + +# restore hardlinks +ln -f $RPM_BUILD_ROOT%{_bindir}/%{target}-{g++,c++} +ln -f $RPM_BUILD_ROOT%{arch}/bin/{g++,c++} + # the same... make hardlink ln -f $RPM_BUILD_ROOT%{arch}/bin/gcc $RPM_BUILD_ROOT%{_bindir}/%{target}-gcc -%{target}-strip -g $RPM_BUILD_ROOT%{gcclib}/libgcc.a - %clean rm -rf $RPM_BUILD_ROOT @@ -236,45 +302,63 @@ rm -rf $RPM_BUILD_ROOT %attr(755,root,root) %{_bindir}/%{target}-gcc* %attr(755,root,root) %{_bindir}/%{target}-cpp %attr(755,root,root) %{_bindir}/%{target}-gcov - -%dir %{arch}/bin %attr(755,root,root) %{arch}/bin/gcc +%{arch}/lib/libiberty.a %dir %{gccarch} %dir %{gcclib} %attr(755,root,root) %{gcclib}/cc1 -%attr(755,root,root) %{gcclib}/cpp0 -%attr(755,root,root) %{gcclib}/tradcpp0 %{gcclib}/libgcc.a +%{gcclib}/libgcov.a %{gcclib}/specs* %{gcclib}/include +%{_mandir}/man1/%{target}-cpp.1* %{_mandir}/man1/%{target}-gcc.1* +%{_mandir}/man1/%{target}-gcov.1* %files c++ %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/%{target}-[cg]++ %attr(755,root,root) %{arch}/bin/[cg]++ %attr(755,root,root) %{gcclib}/cc1plus +%{arch}/lib/libstdc++.a +%{arch}/lib/libstdc++.la +%{arch}/lib/libsupc++.a +%{arch}/lib/libsupc++.la +%{arch}/include/g++ %{_mandir}/man1/%{target}-g++.1* %files objc %defattr(644,root,root,755) %attr(755,root,root) %{gcclib}/cc1obj +%{arch}/lib/libobjc.a +%{arch}/lib/libobjc.la %files g77 %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/%{target}-g77 %attr(755,root,root) %{gcclib}/f771 +%{arch}/lib/libfrtbegin.a +%{arch}/lib/libg2c.a +%{arch}/lib/libg2c.la %{_mandir}/man1/%{target}-g77.1* %files java %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/%{target}-gcj %attr(755,root,root) %{_bindir}/%{target}-gcjh +%attr(755,root,root) %{_bindir}/%{target}-grepjar +%attr(755,root,root) %{_bindir}/%{target}-jar %attr(755,root,root) %{_bindir}/%{target}-jcf-dump %attr(755,root,root) %{_bindir}/%{target}-jv-scan -%attr(755,root,root) %{arch}/bin/grepjar -%attr(755,root,root) %{arch}/bin/jar +#%attr(755,root,root) %{arch}/bin/grepjar +#%attr(755,root,root) %{arch}/bin/jar %attr(755,root,root) %{gcclib}/jc1 %attr(755,root,root) %{gcclib}/jvgenmain +%{_mandir}/man1/%{target}-gcj.1* +%{_mandir}/man1/%{target}-gcjh.1* +%{_mandir}/man1/%{target}-grepjar.1* +%{_mandir}/man1/%{target}-jar.1* +%{_mandir}/man1/%{target}-jcf-dump.1* +%{_mandir}/man1/%{target}-jv-scan.1*