%global gcc_major 4 %global gcc_minor 5 %global gcc_micro 3 %global gcc_branch %{gcc_major}.%{gcc_minor} %global gcc_version %{gcc_major}.%{gcc_minor}.%{gcc_micro} # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. %global gcc_release 3 # arch %%{ix86} x86_64 ia64 ppc ppc64 alpha %if 0 %global build_ada 1 %else %global build_ada 0 %endif %global build_java 1 %global __os_install_post /usr/lib/rpm/brp-compress %{nil} Name: cygwin-gcc Version: %{gcc_version} Release: %{gcc_release}%{?dist} Summary: Cygwin GCC cross-compiler License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions Group: Development/Languages URL: http://gcc.gnu.org BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: texinfo BuildRequires: cygwin-filesystem BuildRequires: cygwin-binutils BuildRequires: cygwin BuildRequires: cygwin-w32api BuildRequires: gmp-devel BuildRequires: mpfr-devel BuildRequires: libmpc-devel BuildRequires: ppl-devel >= 0.10 BuildRequires: cloog-ppl-devel >= 0.15 BuildRequires: zlib-devel BuildRequires: flex %if %{build_ada} BuildRequires: gcc-gnat %endif %if %{build_java} BuildRequires: cygwin-libiconv BuildRequires: cygwin-zlib BuildRequires: gcc-c++ BuildRequires: gcc-java %endif # NB: Explicit cygwin-filesystem dependency is REQUIRED here. Requires: cygwin-filesystem Requires: cygwin-binutils Requires: cygwin Requires: cygwin-w32api Requires: cygwin-cpp # We don't run the automatic dependency scripts which would # normally detect and provide the following DLL: Provides: cygwin(cyggcc_s-1.dll) Provides: cygwin(cyggomp-1.dll) Provides: cygwin(cygssp-0.dll) %if %{build_java} Provides: cygwin(cygffi-4.dll) %endif Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{gcc_version}/gcc-%{gcc_version}.tar.bz2 Patch0: config-rpath.patch Patch1: gcc45-ada.diff Patch2: gcc45-ehdebug.diff Patch3: gcc45-libffi.diff Patch4: gcc45-libstdc.diff Patch5: gcc45-misc-core.diff Patch6: gcc45-mnocygwin.diff Patch7: gcc45-sig-unwind.diff Patch8: gcc45-cross-libstdc.patch Patch9: gcc45-cross-ecjx.patch Patch10: gcc45-java-FIONREAD.diff Patch11: classpath-0.98-awt.patch Patch12: gcc45-peflags.diff %description Cygwin cross-compiler (GCC) for C. %package -n cygwin-cpp Summary: Cygwin cross-C Preprocessor Group: Development/Languages %description -n cygwin-cpp Cygwin cross-C Preprocessor %package c++ Summary: Cygwin cross-compiler for C++ Group: Development/Languages Requires: %{name} = %{version}-%{release} # We don't run the automatic dependency scripts which would # normally detect and provide the following DLL: Provides: cygwin(cygstdc++-6.dll) %description c++ Cygwin cross-compiler for C++. %package objc Summary: Cygwin cross-compiler support for Objective C Group: Development/Languages Requires: %{name} = %{version}-%{release} # We don't run the automatic dependency scripts which would # normally detect and provide the following DLL: Provides: cygwin(cygobjc-2.dll) %description objc Cygwin cross-compiler support for Objective C. %package objc++ Summary: Cygwin cross-compiler support for Objective C++ Group: Development/Languages Requires: %{name}-c++ = %{version}-%{release} Requires: %{name}-objc = %{version}-%{release} %description objc++ Cygwin cross-compiler support for Objective C++. %package gfortran Summary: Cygwin cross-compiler for FORTRAN Group: Development/Languages Requires: %{name} = %{version}-%{release} # We don't run the automatic dependency scripts which would # normally detect and provide the following DLL: Provides: cygwin(cyggfortran-3.dll) %description gfortran Cygwin cross-compiler for FORTRAN. %package gnat Summary: Cygwin cross-compiler for Ada Group: Development/Languages Requires: %{name} = %{version}-%{release} # We don't run the automatic dependency scripts which would # normally detect and provide the following DLL: # (shared libgnat doesn't work quite right, nor does it cross-build #Provides: cygwin(cyggnat-4.5.dll) #Provides: cygwin(cyggnarl-4.5.dll) %description gnat Cygwin cross-compiler for Ada. %package java Summary: Cygwin cross-compiler for Java Group: Development/Languages Requires: %{name} = %{version}-%{release} Requires: ecj Requires: cygwin-libiconv Requires: cygwin-zlib # We don't run the automatic dependency scripts which would # normally detect and provide the following DLL: Provides: cygwin(cyggcj-11.dll) Provides: cygwin(cyggcj-noncore-11.dll) Provides: cygwin(cyggcj-tools-11.dll) Provides: cygwin(cyggij-11.dll) Provides: cygwin(cygjvm.dll) %description java Cygwin cross-compiler for Java. %prep %setup -q -n gcc-%{gcc_version} %patch0 -p1 -b .config-rpath~ %patch2 -p2 -b .ehdebug~ %patch4 -p2 -b .libstdc~ %patch5 -p2 -b .misc-core~ %patch6 -p2 -b .mnocygwin~ %patch7 -p0 -b .sig-unwind~ %patch8 -p1 -b .cross-libstdc~ %if %{build_ada} %patch1 -p2 -b .ada~ %endif %if %{build_java} %patch3 -p2 -b .libffi~ %patch9 -p2 -b .cross-ecjx~ %patch10 -p2 -b .java-fionread~ %patch11 -p2 -b .awt~ %endif %patch12 -p2 -b .peflags~ echo %{gcc_version} > gcc/BASE-VER echo 'Fedora Cygwin %{gcc_version}-%{gcc_release}' > gcc/DEV-PHASE # Install python files into arch-specific datadir sed \ -e "s|^\(pythondir = \).*|\1%{_datadir}/gcc/%{_cygwin_target}/%{gcc_version}/python|" \ -i libstdc++-v3/python/Makefile.{am,in} %if %{build_java} # 1) Install libgcj jar into arch-specific datadir # 2) gcc-java does not ship $host-gcj, and $_host != `gcc -dumpmachine` # (e.g. i?86-pc-linux-gnu vs. i686-redhat-linux) sed \ -e '/^GCJ_FOR_ECJX =/ s|\@.*\@|gcj|' \ -e "s|^\(jardir = \).*|\1%{_datadir}/gcc/%{_cygwin_target}/%{version}/java|" \ -i libjava/Makefile.{am,in} %endif %build mkdir -p build pushd build %if %{build_ada} enablelada=,ada %endif %if %{build_java} enableljava=,java %endif CC="%{__cc} ${RPM_OPT_FLAGS}" \ ../configure \ --prefix=%{_prefix} \ --bindir=%{_bindir} \ --includedir=%{_includedir} \ --libdir=%{_libdir} \ --mandir=%{_mandir} \ --infodir=%{_infodir} \ --datadir=%{_datadir} \ --build=%_build --host=%_host \ --target=%{_cygwin_target} \ --with-arch=i686 --with-tune=generic \ --with-gnu-as --with-gnu-ld --verbose \ --disable-multilib \ --with-system-zlib \ --disable-nls --without-included-gettext \ --disable-win32-registry \ --enable-threads=posix \ --enable-version-specific-runtime-libs \ --with-sysroot=%{_cygwin_sysroot} \ --enable-shared --enable-shared-libgcc --disable-__cxa_atexit \ --with-dwarf2 --disable-sjlj-exceptions \ --enable-languages="c,c++,objc,obj-c++${enableljava},fortran${enablelada},lto" \ --enable-graphite --enable-lto --disable-symvers \ --enable-libgomp --enable-libssp \ %if %{build_ada} --enable-libada \ %endif %if %{build_java} --enable-libjava \ --enable-libgcj-sublibs --disable-jni --disable-java-awt \ --enable-default-preferences-peer=file \ --with-ecj-jar=%{_datadir}/java/ecj.jar \ %endif --with-bugurl=http://cygwinports.org make %{?_smp_mflags} all popd %install rm -rf $RPM_BUILD_ROOT pushd 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/* %if %{build_java} rm -fr $RPM_BUILD_ROOT%{_libdir}/gcj-%{version}-* rm -fr $RPM_BUILD_ROOT%{_libdir}/logging.properties rm -fr $RPM_BUILD_ROOT%{_libdir}/security/ rm -f $RPM_BUILD_ROOT%{_datadir}/python/* %endif # This file is provided by cygwin-binutils-devel rm -f $RPM_BUILD_ROOT%{_prefix}/%{_cygwin_target}/lib/libiberty.a # These scripts are not intended for cross-compiling scenarios %if %{build_java} rm -f $RPM_BUILD_ROOT%{_bindir}/%{_cygwin_target}-aot-compile rm -f $RPM_BUILD_ROOT%{_bindir}/%{_cygwin_target}-jcf-dump rm -f $RPM_BUILD_ROOT%{_bindir}/%{_cygwin_target}-rebuild-gcj-db rm -f $RPM_BUILD_ROOT%{_mandir}/man1/%{_cygwin_target}-aot-compile* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/%{_cygwin_target}-g[^+cfn]* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/%{_cygwin_target}-gc-analyze* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/%{_cygwin_target}-gcj-dbtool* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/%{_cygwin_target}-gcjh* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/%{_cygwin_target}-gnative2ascii* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/%{_cygwin_target}-j* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/%{_cygwin_target}-rebuild-gcj-db* rm -f $RPM_BUILD_ROOT%{_mandir}/man3/%{_cygwin_target}-ffi* %endif mkdir -p $RPM_BUILD_ROOT/lib ln -sf ..%{_prefix}/bin/%{_cygwin_target}-cpp \ $RPM_BUILD_ROOT/lib/%{_cygwin_target}-cpp # libtool installs DLL files of runtime libraries into $(libdir)/../bin, # but we need them in _cygwin_bindir. mkdir -p $RPM_BUILD_ROOT%{_cygwin_bindir} mv $RPM_BUILD_ROOT%{_bindir}/*.dll $RPM_BUILD_ROOT%{_cygwin_bindir} %if %{build_java} # move libffi mv $RPM_BUILD_ROOT%{_prefix}/%{_cygwin_target}/bin/*.dll \ $RPM_BUILD_ROOT%{_cygwin_bindir} # Move libgcj pkg-config files into sysroot mkdir -p $RPM_BUILD_ROOT%{_cygwin_libdir}/pkgconfig mv $RPM_BUILD_ROOT%{_libdir}/pkgconfig/* \ $RPM_BUILD_ROOT%{_cygwin_libdir}/pkgconfig %endif # Don't want the *.la files. find $RPM_BUILD_ROOT -name '*.la' -delete # As of gcc 4.5.0, the plugin/ directory gets created on an i686 host # but not on x86_64. Excluding it from the package for now. rm -rf $RPM_BUILD_ROOT%{_libdir}/gcc/%{_cygwin_target}/%{version}/plugin/ popd %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) %{_bindir}/%{_cygwin_target}-gcc %{_bindir}/%{_cygwin_target}-gcc-%{version} %{_bindir}/%{_cygwin_target}-gccbug %{_bindir}/%{_cygwin_target}-gcov %if %{build_java} %{_prefix}/%{_cygwin_target}/lib/libffi.a %{_prefix}/%{_cygwin_target}/lib/libffi.dll.a %endif %dir %{_libdir}/gcc/%{_cygwin_target} %dir %{_libdir}/gcc/%{_cygwin_target}/%{version} %{_libdir}/gcc/%{_cygwin_target}/%{version}/crtbegin.o %{_libdir}/gcc/%{_cygwin_target}/%{version}/crtend.o %{_libdir}/gcc/%{_cygwin_target}/%{version}/crtfastmath.o %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgcc.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgcc_eh.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgcc_s.dll.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgcov.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgomp.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgomp.dll.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgomp.spec %{_libdir}/gcc/%{_cygwin_target}/%{version}/libssp.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libssp_nonshared.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libssp.dll.a %dir %{_libdir}/gcc/%{_cygwin_target}/%{version}/include %dir %{_libdir}/gcc/%{_cygwin_target}/%{version}/include-fixed %dir %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/ssp %{_libdir}/gcc/%{_cygwin_target}/%{version}/include-fixed/README %{_libdir}/gcc/%{_cygwin_target}/%{version}/include-fixed/*.h %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/[^j]*.h %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/ssp/*.h %dir %{_libdir}/gcc/%{_cygwin_target}/%{version}/install-tools %{_libdir}/gcc/%{_cygwin_target}/%{version}/install-tools/* %dir %{_libexecdir}/gcc/%{_cygwin_target}/%{version}/install-tools %{_libexecdir}/gcc/%{_cygwin_target}/%{version}/install-tools/* %{_libexecdir}/gcc/%{_cygwin_target}/%{version}/lto1 %{_libexecdir}/gcc/%{_cygwin_target}/%{version}/lto-wrapper %dir %{_datadir}/gcc %dir %{_datadir}/gcc/%{_cygwin_target} %dir %{_datadir}/gcc/%{_cygwin_target}/%{version} %if %{build_java} %{_cygwin_bindir}/cygffi-4.dll %endif %{_cygwin_bindir}/cyggcc_s-1.dll %{_cygwin_bindir}/cyggomp-1.dll %{_cygwin_bindir}/cygssp-0.dll %{_mandir}/man1/%{_cygwin_target}-gcc.1* %{_mandir}/man1/%{_cygwin_target}-gcov.1* %doc gcc/README* gcc/COPYING* %files -n cygwin-cpp %defattr(-,root,root,-) /lib/%{_cygwin_target}-cpp %{_bindir}/%{_cygwin_target}-cpp %{_mandir}/man1/%{_cygwin_target}-cpp.1* %dir %{_libdir}/gcc/%{_cygwin_target} %dir %{_libdir}/gcc/%{_cygwin_target}/%{version} %{_libexecdir}/gcc/%{_cygwin_target}/%{version}/cc1 %files c++ %defattr(-,root,root,-) %{_bindir}/%{_cygwin_target}-g++ %{_bindir}/%{_cygwin_target}-c++ %{_mandir}/man1/%{_cygwin_target}-g++.1* %dir %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/c++ %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/c++/[^gjos]* %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/c++/os* %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/c++/s[^u]* %{_libdir}/gcc/%{_cygwin_target}/%{version}/libstdc++.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libstdc++.dll.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libstdc++.dll.a-gdb.py %{_libdir}/gcc/%{_cygwin_target}/%{version}/libsupc++.a %{_libexecdir}/gcc/%{_cygwin_target}/%{version}/cc1plus %{_libexecdir}/gcc/%{_cygwin_target}/%{version}/collect2 %dir %{_datadir}/gcc/%{_cygwin_target}/%{version}/python %{_datadir}/gcc/%{_cygwin_target}/%{version}/python/libstdcxx/ %{_cygwin_bindir}/cygstdc++-6.dll %files objc %defattr(-,root,root,-) %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/objc/ %{_libdir}/gcc/%{_cygwin_target}/%{version}/libobjc.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libobjc.dll.a %{_libexecdir}/gcc/%{_cygwin_target}/%{version}/cc1obj %{_cygwin_bindir}/cygobjc-2.dll %files objc++ %defattr(-,root,root,-) %{_libexecdir}/gcc/%{_cygwin_target}/%{version}/cc1objplus %files gfortran %defattr(-,root,root,-) %{_bindir}/%{_cygwin_target}-gfortran %{_mandir}/man1/%{_cygwin_target}-gfortran.1* %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgfortran.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgfortran.dll.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgfortranbegin.a %dir %{_libdir}/gcc/%{_cygwin_target}/%{version}/finclude %{_libdir}/gcc/%{_cygwin_target}/%{version}/finclude/omp_lib.f90 %{_libdir}/gcc/%{_cygwin_target}/%{version}/finclude/omp_lib.h %{_libdir}/gcc/%{_cygwin_target}/%{version}/finclude/omp_lib.mod %{_libdir}/gcc/%{_cygwin_target}/%{version}/finclude/omp_lib_kinds.mod %{_libexecdir}/gcc/%{_cygwin_target}/%{version}/f951 %{_cygwin_bindir}/cyggfortran-3.dll %if %{build_ada} %files gnat %defattr(-,root,root,-) %{_bindir}/%{_cygwin_target}-gnat* %{_mandir}/man1/%{_cygwin_target}-gnat*.1* %{_libdir}/gcc/%{_cygwin_target}/%{version}/adainclude/ %{_libdir}/gcc/%{_cygwin_target}/%{version}/adalib/ %{_libexecdir}/gcc/%{_cygwin_target}/%{version}/gnat1 #%%{_cygwin_bindir}/cyggnarl-4.5.dll #%%{_cygwin_bindir}/cyggnat-4.5.dll %endif %if %{build_java} %files java %defattr(-,root,root,-) %{_bindir}/%{_cygwin_target}-gcj %{_mandir}/man1/%{_cygwin_target}-gcj.1* %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/c++/gcj/ %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/c++/gnu/ %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/c++/java/ %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/c++/javax/ %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/c++/org/ %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/c++/sun/ %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/gcj/ %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/jawt*.h %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/jni*.h %{_libdir}/gcc/%{_cygwin_target}/%{version}/include/jvmpi.h %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgcj.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgcj.dll.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgcj-noncore.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgcj-noncore.dll.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgcj.spec %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgcj-tools.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgcj-tools.dll.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgij.a %{_libdir}/gcc/%{_cygwin_target}/%{version}/libgij.dll.a %{_libexecdir}/gcc/%{_cygwin_target}/%{version}/ecj1 %{_libexecdir}/gcc/%{_cygwin_target}/%{version}/jc1 %{_libexecdir}/gcc/%{_cygwin_target}/%{version}/jvgenmain %{_cygwin_bindir}/cyggcj-11.dll %{_cygwin_bindir}/cyggcj-noncore-11.dll %{_cygwin_bindir}/cyggcj-tools-11.dll %{_cygwin_bindir}/cyggij-11.dll %{_cygwin_bindir}/cygjvm.dll %{_cygwin_libdir}/pkgconfig/libgcj-4.5.pc %{_datadir}/gcc/%{_cygwin_target}/%{version}/java %endif %changelog * Wed Aug 10 2011 Yaakov Selkowitz - 4.5.3-3 - Enable --large-address-aware for executables by default. - Re-enable java subpackage. * Mon Jul 04 2011 Yaakov Selkowitz - 4.5.3-2 - Rebuilt for http://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild * Thu May 26 2011 Yaakov Selkowitz - 4.5.3-1 - Version bump. * Sun Mar 13 2011 Yaakov Selkowitz - 4.5.1-2 - Ship libiberty.a from cygwin-binutils-devel instead of cygwin-gcc. * Thu Feb 17 2011 Yaakov Selkowitz - 4.5.1-1 - Match native gcc version to resolve ecj1 dependency on libgcj. * Wed Feb 16 2011 Yaakov Selkowitz - 4.5.2-1 - Initial RPM release, largely based on mingw32-gcc.