X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=crossmingw32-gcc.spec;h=ac2bfb9fc07fce6a4187eef5cb9de965a41a6661;hb=12166cab3487d4404c8360b195ef9889b4de0e6d;hp=1f438a2974206bc7571407458546142d847f984e;hpb=47fa950aac4c173485a4160efe81d243a109c0a9;p=packages%2Fcrossmingw32-gcc.git diff --git a/crossmingw32-gcc.spec b/crossmingw32-gcc.spec index 1f438a2..ac2bfb9 100644 --- a/crossmingw32-gcc.spec +++ b/crossmingw32-gcc.spec @@ -1,54 +1,54 @@ -Summary: Mingw32 GNU Binary Utility Development Utilities - gcc +# +# 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.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 -%define gccversion 2.95.3.test2 -Version: 2.95.3 -Release: 2 +Version: %{GCC_VERSION} +Release: 4 Epoch: 1 License: GPL Group: Development/Languages -Group(de): Entwicklung/Sprachen -Group(pl): Programowanie/Jêzyki -ExclusiveArch: %{ix86} -Source0: ftp://ftp.gnu.org/pub/gnu/gcc-%{gccversion}.tar.gz -Patch0: gcc-info.patch -Patch1: gcc-pld-linux.patch -Patch2: gcc-libstdc++.patch -Patch3: gcc-bootstrap.patch -Patch4: gcc-cpp-macro-doc.patch -Patch5: gcc-default-arch.patch -Patch6: gcc-libstdc++-out-of-mem.patch -Patch7: gcc-libstdc++-wstring.patch -Patch8: gcc-libstdc++-bastring.patch -Patch9: gcc-manpage.patch -Patch10: gcc-cpp-dos-newlines.patch -Patch11: gcc-gpc.patch -Patch12: gcc-m68k-pic.patch -Patch13: gcc-sparc32-rfi.patch -Patch14: gcc-builtin-apply.patch -Patch15: gcc-ppc-ice.patch -Patch16: gcc-ppc-descriptions.patch -Patch17: gcc-alpha-complex-float.patch -Patch18: gcc-gcj-vs-iconv.patch -Patch19: gcc-libobjc.patch -Patch20: gcc-pointer-arith.patch -Patch21: %{name}-libio.patch -Patch22: %{name}-includes.patch -Patch23: %{name}-libiberty.patch -BuildRequires: crossmingw32-platform -BuildRequires: crossmingw32-binutils -BuildRequires: flex -BuildRequires: bison +Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{GCC_VERSION}/gcc-%{GCC_VERSION}.tar.bz2 +# 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 @@ -59,12 +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 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 skro¶nie kod dla Win32. + %package c++ -Summary: Mingw32 GNU Binary Utility Development Utilities - g++ +Summary: Mingw32 binary utility development utilities - g++ +Summary(pl): Zestaw narzêdzi mingw32 - g++ Group: Development/Languages -Group(de): Entwicklung/Sprachen -Group(pl): Programowanie/Jêzyki -Requires: %{name} = %{version} +Requires: %{name} = %{epoch}:%{version}-%{release} %description c++ crossmingw32 is a complete cross-compiling development system for @@ -75,13 +87,22 @@ 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 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 GNU Binary Utility Development Utilities - objc +Summary: Mingw32 binary utility development utilities - objc +Summary(pl): Zestaw narzêdzi mingw32 - objc Group: Development/Languages -Group(de): Entwicklung/Sprachen -Group(pl): Programowanie/Jêzyki -Requires: %{name} = %{version} +Requires: %{name} = %{epoch}:%{version}-%{release} %description objc crossmingw32 is a complete cross-compiling development system for @@ -92,13 +113,21 @@ 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 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 GNU Binary Utility Development Utilities - g77 +Summary: Mingw32 binary utility development utilities - g77 +Summary(pl): Zestaw narzêdzi mingw32 - g77 Group: Development/Languages -Group(de): Entwicklung/Sprachen -Group(pl): Programowanie/Jêzyki -Requires: %{name} = %{version} +Requires: %{name} = %{epoch}:%{version}-%{release} %description g77 crossmingw32 is a complete cross-compiling development system for @@ -109,30 +138,21 @@ with supporting Win32 libraries in 'coff' format from free sources. This package contains cross targeted g77. -# does this even work? -%package chill -Summary: Mingw32 GNU Binary Utility Development Utilities - chill -Group: Development/Languages -Group(de): Entwicklung/Sprachen -Group(pl): Programowanie/Jêzyki -Requires: %{name} = %{version} +%description g77 -l pl +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. -%description chill -crossmingw32 is a complete cross-compiling development system for -building stand-alone Microsoft Windows applications under Linux using -the Mingw32 build libraries. This includes a binutils, gcc with g++ -and objc, and libstdc++, all cross targeted to i386-mingw32, along -with supporting Win32 libraries in 'coff' format from free sources. - -This package contains cross targeted chill. +Ten pakiet zawiera g77 generuj±cy kod pod Win32. # does this even work? %package java -Summary: Mingw32 GNU Binary Utility Development Utilities - java +Summary: Mingw32 binary utility development utilities - java +Summary(pl): Zestaw narzêdzi mingw32 - java Group: Development/Languages -Group(de): Entwicklung/Sprachen -Group(pl): Programowanie/Jêzyki -Requires: %{name} = %{version} +Requires: %{name} = %{epoch}:%{version}-%{release} %description java crossmingw32 is a complete cross-compiling development system for @@ -143,79 +163,89 @@ 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 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-%{gccversion} -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p0 -%patch5 -p0 -%patch6 -p0 -%patch7 -p0 -%patch8 -p0 -%patch9 -p0 -%patch10 -p0 -%patch11 -p1 -%ifarch m68k -%patch12 -p0 +%setup -q -c +cd gcc-%{version} +%if %{with bootstrap} +mkdir winsup +tar xzf %{SOURCE1} -C winsup +tar xzf %{SOURCE2} -C winsup %endif -%ifarch sparc sparc32 -%patch13 -p0 -%patch14 -p0 -%endif -%ifarch ppc -%patch15 -p0 -%patch16 -p0 -%endif -%ifarch alpha -%patch17 -p1 +%{!?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 -%patch18 -p0 -%patch19 -p0 -%patch20 -p0 -%patch21 -p1 -%patch22 -p1 -%patch23 -p1 +cp /usr/share/automake/config.sub . +cp /usr/share/automake/config.sub boehm-gc -%build -(cd libiberty ; autoconf) -(cd gcc -autoconf -cd .. -rm -rf obj-%{target_platform} -install -d obj-%{target_platform} -cd obj-%{target_platform} +rm -rf obj-%{target_platform} && install -d obj-%{target_platform} && cd obj-%{target_platform} -%{!?debug:CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" LDFLAGS="-s"} \ -%{?debug:CFLAGS="-g -O0" CXXFLAGS="-g -O0" LDFLAGS=""} \ +# note: alpha's -mieee and sparc's -mtune=* are not valid for target's g++ +CFLAGS="%{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 \ --prefix=%{_prefix} \ --infodir=%{_infodir} \ --mandir=%{_mandir} \ --bindir=%{arch}/bin \ + --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 +#touch ../gcc/c-gperf.h %{__make} \ - %{!?debug:LDFLAGS_FOR_TARGET="-s"}%{?debug:LDFLAGS_FOR_TARGET=""} \ - TARGET_LIBGCC2_CFLAGS="-UCROSS_COMPILE" + LDFLAGS_FOR_TARGET="%{rpmldflags}" \ + 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 \ -# LDFLAGS="-s" \ +#make -C %{target}/libobjc \ +# LDFLAGS="%{rpmldflags}" \ # TARGET_LIBGCC2_CFLAGS="-UCROSS_COMPILE" \ # DLLTOOL="%{target}-dlltool --as=%{target}-as" libobjc.dll @@ -224,34 +254,43 @@ cd gcc for n in msvcrt msvcrt20 msvcrt40; do sed "s/crtdll/$n/g" specs.$n 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 @@ -260,71 +299,66 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(644,root,root,755) -%attr(755,root,root) %{_bindir}/%{target}-gcc -%attr(755,root,root) %{_bindir}/%{target}-*protoize -%dir %{arch}/bin -%attr(755,root,root) %{arch}/bin/cpp +%attr(755,root,root) %{_bindir}/%{target}-gcc* +%attr(755,root,root) %{_bindir}/%{target}-cpp +%attr(755,root,root) %{_bindir}/%{target}-gcov %attr(755,root,root) %{arch}/bin/gcc -%attr(755,root,root) %{arch}/bin/gcov -%{arch}/include/_G_config.h %{arch}/lib/libiberty.a + %dir %{gccarch} %dir %{gcclib} %attr(755,root,root) %{gcclib}/cc1 -%attr(755,root,root) %{gcclib}/cpp0 -%{gcclib}/SYSCALLS.c.X %{gcclib}/libgcc.a +%{gcclib}/libgcov.a %{gcclib}/specs* -%dir %{gcclib}/include -%{gcclib}/include/float.h -%{gcclib}/include/iso646.h -%{gcclib}/include/limits.h -%{gcclib}/include/proto.h -%{gcclib}/include/stdarg.h -%{gcclib}/include/stdbool.h -%{gcclib}/include/stddef.h -%{gcclib}/include/syslimits.h -%{gcclib}/include/varargs.h -%{gcclib}/include/va-*.h +%{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]++ -%{arch}/include/g++ -%{arch}/lib/libstdc++.a +%attr(755,root,root) %{arch}/bin/[cg]++ %attr(755,root,root) %{gcclib}/cc1plus -%{gcclib}/libstdc++* -%{gcclib}/include/new.h -%{gcclib}/include/exception -%{gcclib}/include/new -%{gcclib}/include/typeinfo +%{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 -%{gcclib}/libobjc.a -%{gcclib}/include/objc +%{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 chill -%defattr(644,root,root,755) -%attr(755,root,root) %{_bindir}/%{target}-chill -%attr(755,root,root) %{gcclib}/cc1chill -%{gcclib}/chillrt0.o -%{gcclib}/libchill.a - %files java %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/%{target}-gcj -%attr(755,root,root) %{arch}/bin/gcjh -%attr(755,root,root) %{arch}/bin/jcf-dump -%attr(755,root,root) %{arch}/bin/jv-scan +%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) %{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*